Table des matières

Documentation provenant de ubuntu-fr

Introduction

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é:

Vous devriez comprendre le pourquoi du comment…

À propos du superutilisateur...

... 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. (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 root4). 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.

Utilisation

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

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 avantages et inconvénients de sudo

Avantages

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

Mythes

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

Configuration

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 remplacer EDITOR=gedit sudo visudo par EDITOR=gedit gksudo visudo, sous Kubuntu on aurait EDITOR=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)

Ajout des privilèges super-utilisateur à un utilisateur

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).

Où à la création d'un compte sur le dernier onglet :

Options

La configuration de sudo est définie dans le fichier /etc/sudoers.

'Insultes'

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:

Commandes sans mots de passe

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) .

Utilisation avancée

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

Fichier /etc/sudoers corrompu

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 :)

Exceptions

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).

Webmin

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

MySQL

Pour phpMyadmin aussi donc…

sudo mysqladmin -u root password nouveau_mot_de_passe

Slogans

Ci-dessous une liste de slogans visant à décourager l'emploi du compte root :

1)
ne serait-ce que deux personnes, deux est déjà un nombre impressionnant dans ce cas
2)
et certaines personnes conseillent d'affecter un mot de passe au compte root, ce qui ne suit pas du tout la logique de Ubuntu
3)
Toutefois, le compte utilisateur par défaut sous Windows XP possède les droits d'administration. Il est root.
4)
La commande 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).
5)
si vous vous êtes trompé dans la syntaxe du fichier l'application vous signalera la ligne fautive, corrigez la
6)
le premier utilisateur crée fait partie de ce groupe
7)
qui pouvaient, eux seuls, faire un sudo less /etc/shadow mais avec demande de mot de passe
8)
mieux vaut demander de l'aide pour l'édition de /etc/sudoers plutôt que de casser sa machine