Fonctionnement de sudo et gksudo/kdesu. Imprimer

  • 5

- Comment Ubuntu gère les droits d'administration.
- Le fonctionnement de sudo et gksudo/kdesu.

Origine de sudo

Pour comprendre la présence d'un outil tel que sudo, il faut d'abord comprendre la notion de superutilisateur : qui est-il et quel est son rôle ?

À propos du superutilisateur
• Le système d'exploitation a besoin d'un compte privilégié afin de réaliser certaines tâches particulières (souvent des tâches administratives et sensibles, pouvant corrompre le système). C'est à cela qu'est dévolu le compte superutilisateur, communément appelé root.

• Comme le superutilisateur a la possibilité de corrompre le système, il est dangereux de toujours être connecté sous cette identité. Pour tous les systèmes d'exploitation récents (Unix depuis sa création en 1969, Windows NT4/2000/XP, Mac OS X), il y a une séparation entre le compte système et les comptes utilisateurs. Ils sont distincts.... et de sudo

Toutefois, l'utilisateur peut parfois nécessiter d'effectuer certaines tâches administratives, particulièrement lors de la résolution de problèmes de fonctionnement du système. L'utilitaire sudo (pour 'superuser do') permet à un administrateur système de donner à un utilisateur (ou un groupe d'utilisateurs) la possibilité d'exécuter une ou toutes les commandes en tant que superutilisateur, tout en gardant une trace des commandes tapées et des arguments. Par défaut, le mot de passe du compte superutilisateur est bloqué sous Ubuntu. Ceci signifie donc que vous ne pouvez pas vous connecter en tant que root ou utiliser la commande su. L'installateur de Ubuntu configure plutôt l'utilitaire sudo de façon à ce que l'utilisateur créé durant l'installation puisse effectuer toutes les tâches administratives. Autrement dit, vous pouvez utiliser la  commande sudo pour effectuer les tâches nécessitant les privilèges du superutilisateur.

Tous les programmes d'administration dans les menus d'applications utilisent un système graphique associé à sudo (gksudo sous GNOME et kdesu sous KDE) vous demandant votre mot de passe pour s'exécuter dans un terminal qui vous demandent un mot de passe, c'est VOTRE mot de passe utilisateur qui est requis.

Aucun mot de passe n'est associé au compte root et root n'en a pas besoin.

Le mot de passe demandé est celui de  l'utilisateur courant. La commande sera exécutée si le mot de passe entré est correct et que l'utilisateur courant peut effectuer des tâches d'administration.


Le mot de passe est mémorisé pour une durée de 15 minutes, au bout de ce laps de temps, il faudra entrer de nouveau le mot de passe. Pour terminer la session sudo avant la fin des 15 minutes, entrez la commande:
sudo -k
Lorsque de nombreuses commandes sont à entrer, vous pouvez ouvrir un terminal en mode superutilisateur.

gksudo


gksudo est le pendant graphique de sudo
pour l'environnement GNOME. Il est utilisé par
toutes les applications du menu Système →
Administration, nécessitant les droits
d'administration afin d'être lancées. Il s'utilise
de la même façon que sudo, c'est-à-dire que
gksudo doit précéder la commande ou
l'application à lancer.

 

 

gksudo peut être utilisé, par exemple, avec un lanceur, pour lancer une application qui a besoin des droits du superutilisateur pour s'exécuter. Lorsque gksudo est appelé, une fenêtre de saisie de mot de passe est affichée à l'écran. Tout comme pour sudo, c'est le mot de passe de l'utilisateur courant qui est requis. L'application ou la commande ne sera exécutée que si le mot de passe est correct et que l'utilisateur peut exécuter des tâches d'administration.

Attention: exécuter par un simple double-clic une commande ou un programme avec les privilèges d'administration est potentiellement dangereux! Par exemple, lancer Nautilus avec les droits du superutilisateur est vraiment risqué: une pression accidentelle sur la touche Suppr alors qu'un fichier ou un dossier vital au système d'exploitation est sélectionné pourrait casser complètement le système!

kdesu

kdesu est le pendant graphique de sudo pour l'environnement KDE. Il s'utilise de la même façon que gksudo pour GNOME.
Pour Kubuntu/KDE, il est d'autant plus important de ne pas affecter de mot de passe au compte root.

Quand utiliser sudo ou gksudo / kdesu ?
Le wiki anglophone de Ubuntu recommande de NE JAMAIS utiliser sudo pour lancer une application graphique. Vous devez toujours utiliser gksudo ou kdesu pour lancer de tels programmes; autrement, de nouvelles tentatives d'ouverture de programmes pourraient échouer.

La règle est simple :
• Utiliser sudo pour les commandes et les programmes fonctionnant dans une console;
• Utiliser gksudo ou kdesu pour les programmes graphique.

À l'heure actuelle, on retrouve de nombreuses fois dans cette documentation et dans le forum la commande sudo gedit pour lancer l'éditeur de texte gEdit avec les droits d'administration. Il serait grandement préférable de la substituer par gksudo gedit (sous Ubuntu) et kdesu kate (sous Kubuntu).
Toutefois, il faut noter que sudo gedit fonctionne sous Ubuntu, alors que sudo kate ne fonctionne pas sous Kubuntu.

Une console superutilisateur.
Utiliser sudo pour lancer une commande ne pose pas un réel problème. Toutefois, il peut être plutôt désagréable de l'utiliser pour lancer une longue procédure nécessitant plusieurs interventions en mode superutilisateur. Dans ces cas, vous pouvez lancer un terminal superutilisateur, qui vous permettra alors de prendre l'identité de root. Vous n'aurez donc plus besoin de saisir sudo devant chacune des actions à effectuer pour la durée de cette session en console. Toutefois, aucune trace des actions posées n'est conservée en mémoire.

Il est déconseillé d'ouvrir un terminal superutilisateur.
Pour entrer en mode superutilisateur, saisissez la commande suivante dans un terminal: sudo -s
Pour quitter le mode superutilisateur, saisissez simplement, dans ce même terminal, l'instruction: exit

Les avantages (et inconvénients) de sudo

Avantages
Les bénéfices qu'apportent la désactivation du compte root par défaut incluent :

• L'installateur doit poser moins de questions. Ceci est particulièrement important pour le nouvel arrivant, qui n'est peut-être pas au courant de l'existence du compte système;

• Les usagers n'ont pas à se souvenir d'un mot de passe supplémentaire, qu'ils peuvent facilement oublier. Certains utilisateurs ayant activé le compte root notent le mot de passe sur un papier, afin de le retrouver en cas d'oubli ; ceci constitue un sérieux risque d'insécurité, car n'importe qui trouvant ce papier peut prendre l'identité de root;

• Cela évite le comportement du 'Je peux tout faire sur ma machine' avant d'effectuer une action d'administration, le système vous demande votre mot de passe, ce qui devrait vous faire réfléchir aux conséquences de votre action;

• sudo conserve une trace de toutes les commandes exécutées (dans le fichier de journal /var/log/auth.log). Si un problème apparaît, vous pourrez toujours consulter ce journal afin de retrouver la commande ayant causé le problème;

• Tous les crackers tentant de pénétrer par la force brute votre système savent qu'il existe un compte appelé root et essaieront de pirater celui-ci d'abord. Ils ne connaissent pas les identifiants des autres utilisateurs de votre ordinateur;

• Ceci permet un transfert rapide des droits d'administration, autant pour du long que pour du court terme, par le simple ajout ou retrait d'un utilisateur dans le groupe d'administration, le tout sans compromettre le compte root;

• sudo peut être configuré avec une politique bien plus raffinée.

Mythes
sudo n'est-il pas moins sécurisé que su root ?

• Le modèle de sécurité à la base est le même, et les deux systèmes partagent une même faiblesse.
Tout utilisateur utilisant su root ou sudo doit être considéré comme un utilisateur privilégié. Si le compte de l'utilisateur est compromis par un attaquant, celui-ci peut aussi obtenir les privilèges d'administration et compromettre le système d'exploitation. Les utilisateurs ayant les droits
d'administration doivent être protégés avec les mêmes soins que le compte système.

• Sur une note plus ésotérique, on remarque que sudo encourage la modification des habitudes de travail, qui peuvent provoquer un impact positif sur la sécurité du système d'exploitation. sudo est habituellement utilisé pour lancer une commande unique, alors que su root est souvent utilisé pour lancer un terminal root et lancer des multiples commandes. L'approche de sudo réduit la possibilité qu'un terminal root soit laissé ouvert indéfiniment sur le poste de travail et encourage l'utilisateur à minimiser leur utilisation des privilèges d'administration.


Cette réponse était-elle pertinente?

« Retour