Translation(s): العربية - English - Español - Français - Italiano - Русский


Root > sudo


Sudo (Parfois considéré comme l'abréviation de Super-user do) est un programme dont l'objectif de permettre à l'administrateur du système d'autoriser certains utilisateurs à exécuter des commandes en tant que ?super-utilisateur (ou qu'un autre utilisateur). La philosophie qui sous-tend cela est de donner aussi peu que possible de droits, mais de permettre quand même aux utilisateurs de faire leur travail. Sudo est aussi un moyen efficace d'enregistrer qui a exécuté quelle commande et quand.

Avec Squeeze, si on installe la tâche Desktop pendant l'installation, cela installe sudo avec une configuration par défaut qui octroie automatiquement les droits d'utiliser sudo pour chacun des membres du groupe sudo. Selon les comptes utilisateurs que l'on configure lors de l'installation, il est possible qu'on ne soit pas ajouté à ce groupe - on peut le vérifier en exécutant la commande groups.

Pour ajouter l'utilisateur toto au groupe sudo :

Une fois que l'utilisateur a été ajouté au nouveau groupe, il doit se déconnecter puis se reconnecter pour que l'appartenance au nouveau groupe soit effective. En effet, l'appartenance à un groupe est accordée à un utilisateur au moment de sa connexion. Une des erreurs les plus communes est que les utilisateurs se rajoutent à un groupe mais oublient de se déconnecter puis de se reconnecter : ils rencontrent alors des problèmes parce que leur appartenance n'est pas effective. On peut vérifier les groupes auxquels on appartient avec la commande id.

Pourquoi sudo ?

Utiliser sudo est meilleur (plus sûr) que d'ouvrir une session en tant que super-utilisateur pour un certain nombre de raisons dont :

Pour toutes les raisons ci-dessus, la possibilité de basculer en super-utilisateur en utilisant sudo -i (ou sudo su) est habituellement désapprouvé parce que cela annule les avantages cités ci-dessus.

Aperçu de configuration

Maintenant, si vous souhaitez autoriser certains utilisateurs à exécuter certains programmes, voici un exemple rapide (pour plus d'informations, lisez le manuel).

# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#

Defaults        env_reset
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

# Host alias specification
User_Alias      MYADMINS = toto

# User alias specification

# Cmnd alias specification
Cmnd_Alias      SHUTDOWN = /sbin/reboot, /sbin/poweroff
Cmnd_Alias      PKGMGMT = /usr/bin/dpkg, /usr/bin/apt-get, /usr/bin/aptitude

# User privilege specification

# Users listed above (MYADMINS) can run package managers and reboot the system.
MYADMINS ALL = PKGMGMT, SHUTDOWN

# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL

#Default rule for root.
root    ALL=(ALL) ALL

#includedir /etc/sudoers.d

Problèmes et conseils

PATH no configuré

Voici une erreur classique qui survient dans l'utilisation de sudo pour installer un paquet :

dpkg: warning: 'ldconfig' not found in PATH or not executable.
dpkg: warning: 'start-stop-daemon' not found in PATH or not executable.
dpkg: error: 2 expected programs not found in PATH or not executable.
Note: root's PATH should usually contain /usr/local/sbin, /usr/sbin and /sbin.

Le fichier /etc/sudoers fourni par le paquet contient cette ligne :

Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

Les anciennes versions ne contenaient pas cette ligne. Dans le cas où vous auriez modifié le fichier local /etc/sudoers (et beaucoup le font) et puis, lors de la mise à jour, conservé la version modifiée en local, alors cette ligne est absente. Le fichier ne modifie plus votre PATH quand vous utilisez sudo. Le résultat le plus probable est que le PATH n'est pas configuré comme il faut et donc il n'inclut pas les répertoires systèmes. Pour corriger cela, il faut intégrer vos changements locaux au nouveau fichier /etc/sudoers installé par le paquet. Une autre solution est de placer vos changements locaux dans un nouvel emplacement dans /etc/sudoers.d/ sous la forme d'un fichier qui doit se nommer /etc/sudoers.d/local-sudoers. Voir 639841 pour plus de détails.

Désolé, l'utilisateur toto n'est pas autorisé à exécuter la commande ...

Une session classique se déroule comme ceci :

Ce message signifie exactement ce qu'il dit : l'utilisateur qui est en fonction n'est pas autorisé à exécuter la commande donnée sur cette machine. Une raison possible qui peut introduire une confusion est que l'administrateur a seulement ajouté l'utilisateur toto à un groupe privilégié - mais vous utilisez encore une vieille session qui n'a pas l'information de la nouvelle appartenance au groupe et donc qui n'a pas les nouveaux droits pour se servir de sudo. Dans ce cas, l'utilisateur est habituellement prévenu qu'il doit quitter totalement la session puis se reconnecter, bien qu'il soit parfois possible de s'en sortir en exécutant la commande pour "se reconnecter à chaud" avec su - $USER

La directive inclue

Le fichier /etc/sudoers standard à partir de la version 1.8.2-1 de Wheezy se termine avec la ligne :

Cela permet à d'autres paquets de fournir des bouts de code dans /etc/sudoers.d/<nom de paquet> qui modifient la configuration de sudo. On peut croire qu'il est nécessaire de modifier la ligne pour retirer le caractère # initial (le dièse), mais non, le '#' fait partie de la commande !

sudoers est en lecture seule

Oui, le fichier /etc/sudoers est intentionnellement en lecture seule, même pour le super-utilisateur !

L'explication que l'on donne habituellement est que cette configuration est faite pour que seuls les administrateurs puissent modifier le fichier et cela seulement avec la commande visudo. Néanmoins, cette théorie ne tient pas la route. Être en mode 0440 ne sert à rien pour empêcher de faire sudo nano /etc/sudoers - la plupart des éditeurs de texte vous laisseront modifier le fichier sans râler à cause de la marque lecture seule. En plus, chaque fois que vous massacrez le fichier /etc/sudoers, la réparation est aussi simple que la commande su -c visudo, ce qui n'est rien comparé à la procédure de récupération qu'il faut mettre en œuvre si vous 'cassez' un fichier comme /etc/inittab (mode 0644). Donc, s'il y a une bonne raison pour ces droits non-orthodoxes, elle reste mystérieuse - toute information est bienvenue.

Mauvais HOME (et mauvaise configuration du profil)

Si on rencontre un problème quand on utilise sudo dans son shell et que son $HOME (et la configuration du profil) ne fonctionne pas comme prévu parce que votre nouveau HOME est /root, il faut savoir que dans Squeeze la configuration par défaut de sudo rétablit toutes les variables d'environnement. Pour rétablir l'ancien comportement qui préservait les variables d'environnement du $HOME de l'utilisateur, il faut ajouter ceci à son fichier de configuration /etc/sudoers :

Defaults env_keep += HOME

Demander le mot de passe du super-administrateur

Si vous souhaitez que le mot de passe du super-administrateur soit demandé à chaque utilisation de sudo à la place du mot de passe de l'utilisateur, ajouter la ligne :

Defaults   rootpw

Pour plus d'informations, lisez la liste originale des changements de la version 1.7.4.

Voir aussi