Documentation provenant de ubuntu-fr
Sudo est l'outil permettant à un utilisateur (par défaut, le premier utilisateur, celui qui a été créé lors de l'installation du système) d'exécuter des tâches d'administration :
Oui c'est le mot de passe de cet utilisateur qu'il faut saisir. Et c'est à dessein…
Devant le nombre impressionnant1) de personnes affectant un mot de passe au compte root2) sous Ubuntu, essayons d'expliquer comment le système gère les droits d'administration et expliquons le fonctionnement de sudo
et gksudo
/kdesu
.
Ce document s'adresse à vous si vous vous êtes déjà exclamé:
su
ne fonctionne pas, Ubuntu c'est compliqué”Vous devriez comprendre le pourquoi du comment…
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. (Plus d'informations à propos de ''sudo'')
Par défaut, le compte superutilisateur n'a pas de mot de passe sous Ubuntu (Ce qui équivaut, sous UNIX à interdire le login pour cet utilisateur). Ceci signifie donc que vous ne pouvez pas vous connecter en tant que root ou utiliser la commande su root
4). 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; que ce soient gksudo
, kdesu
ou sudo
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.
L'utilitaire sudo
s'utilise en ligne de commande, dans un terminal. Il sert à exécuter, en mode superutilisateur, des commandes ou des applications en console.
sudo
s'utilise de la manière suivante :
$ sudo <commande>
Ainsi, vous devrez faire précéder chacune de vos commandes à exécuter en mode superutilisateur de sudo
.
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
Les bénéfices qu'apportent la désactivation du compte root par défaut incluent :
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;sudo
peut être configuré avec une politique bien plus raffinée.sudo
n'est-il pas moins sécurisé que su root
?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. 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.
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
La configuration de sudo se fait via la commande
sudo visudo
et uniquement via cette commande ! En effet, les droits par défaut du fichier /etc/sudoers ne permettent pas l'écriture :
ls -lsa /etc/sudoers 4 -r--r----- 1 root root 414 2005-08-09 17:19 /etc/sudoers
Vous pouvez constater qu'il n'y a pas de droit d'écriture (w). Changer les droits de ce fichier amènerait inexorablement à un blocage de sudo ! Cela consisterait à se tirer une balle dans le pied, vu qu'il faut les droits sudoers pour repasser le fichier en lecture seule ! ? Si l'éditeur par défaut vous rebute vous pouvez taper
EDITOR=gedit sudo visudo
Pour rendre ce choix permanent :
update-alternatives --config editor
Par rapport à la partie Quand utiliser sudo ou gksudo/kdesu ?, je crois qu'on devrait remplacerEDITOR=gedit sudo visudo
parEDITOR=gedit gksudo visudo
, sous Kubuntu on auraitEDITOR=kate kdesu visudo
, mais cette dernière commande me semble avoir un comportement bizarre… Qu'arriverait-il si on rendait ce choix permanent ? Il faudrait tester sur des live-cd de Ubuntu et Kubuntu… (Damocles)
sudo adduser <login> admin
Il existe également d'autres groupes relatif à l'administration du système dont “adm” qui autorise la lecture des fichiers de log sans avoir à utiliser sudo, et “staff” qui donne des droits d'écriture dans /usr/local et /home (un sudo bridé en quelque sorte).
La configuration de sudo est définie dans le fichier /etc/sudoers.
Un peu de bonne humeur grâce à sudo, si vous modifiez la ligne
Defaults !lecture,tty_tickets,!fqdn
en ajoutant insults
Defaults !lecture,tty_tickets,!fqdn,insults
Vous affichera un autre message que le sempiternel Sorry, try again lorsque vous vous trompez dans le mot de passe 5) Ce qui donne :
sudo cat /etc/sudoers Password: Where did you learn to type? Password:
Ne pas généraliser à plus de commandes
Definissons les commandes autorisés par exemple less :
Cmnd alias specification Cmnd_Alias LESS = /usr/bin/less
Puis éditons les privileges du groupe admin 6)
# Members of the admin group may gain root privileges %admin ALL=(ALL) ALL, NOPASSWD: LESS
Voilà dorénavant un sudo less ne demandera pas de mot de passe aux membres du groupe admin 7) .
Pour une configuration poussée reportez vous à la page de manuel sur sudoers 8)
Toutes les commandes passées en sudo sont consignées dans le fichier /var/log/auth.log consultable via l'outil Applications / Outils Système / Visionneur de journaux système
Il peut arriver lors de vos manipulations que vous corrompiez le fichier /etc/sudoers, il vous affichera alors quelque chose du genre :
sudoers file: syntax error, line 19 sudo: parse error in /etc/sudoers near line 19
Vous pouvez aussi avoir modifié par megarde les droits du fichier :
sudo: bad permissions (ou autre)
Dans ce cas vous ne pouvez le corriger puisque vous avez besoin de sudo pour le modifier. Vous avez alors plusieurs possibilités pour retrouver des droits d'administrateur et le corriger :
Dans ce cas, aucun probleme, inserez le CD et redemarrez.
Ce mode est disponible a l'ecran de Grub lors du demarage de l'ordinateur. Il vous enverra directement en mode texte et vous connecterra en tant qu'administrateur.
Une fois que vous etes connecté, si c'est juste un probleme de droits vous pouvez les corriger directement avec chmod et demarrer en mode normal avec la commande
init 2
Sinon, soit vous avez les competences necessaire pour modifier le fichier /etc/sudoers, soit vous avez besoin d'aide et en mode rescue vous ne pouvez pas lancer votre client IRC ou votre navigateur. Je propose donc de reactiver temporairement le compte root :
passwd -d root
Demarrez ensuite le systeme complet avec :
init 2
Maintenant connectez vous en root
su -
Vous pouvez maintenant corriger les erreurs avec visudo Une fois le probleme reglé, desactivez le compte root :
sudo passwd -l root
Si cette derniere commande a fonctionné, tout est rentré dans l'ordre :)
Si vous ne trouvez pas comment faire, merci d'ajouter de faire une entree sur le forum et de mettre un lien ici.
Sous unix tout est fichier, les peripheriques aussi, /dev est le dossier correspondant aux peripheriques, /proc celui reserve aux processus et commentaires du noyau par exemple /proc/cpuinfo donne les infos sur votre processeur (infos que le noyau a decouvert au boot) impossible de le modifier donc. Filesystem_Hierarchy_Standard pour plus d'informations.
Certains fichiers de /proc peuvent etre edites, mais pas tous, directement ou avec sysctl (voir man sysctl.conf).
Pour mettre un mot de passe à root, mais que pour webmin :
sudo /usr/share/webmin/changepass.pl /etc/webmin root mot_de_passe_pour_webmin
Pour phpMyadmin aussi donc…
sudo mysqladmin -u root password nouveau_mot_de_passe
Ci-dessous une liste de slogans visant à décourager l'emploi du compte root :
su
(pour “switch user”) permet de changer d'identité, de prendre l'identité d'un autre utilisateur. Vous ne pouvez pas utiliser la commande su
pour prendre l'identité du superutilisateur (su root
). Toutefois, vous pouvez l'utiliser sans problème pour prendre l'identité d'un autre utilisateur enregistré de votre ordinateur (par exemple: su bob
).