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

(!) ?Discussion


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 utilisateur 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 un utilisateur au groupe sudo :

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

# Host alias specification
User_Alias      MYADMINS = jdoe

# User alias specification

# Cmnd alias specification
Cmnd_Alias      SHUTDOWN = /sbin/shutdown, /sbin/reboot, /sbin/halt
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

# Users in the group wheel can execute any command impersonating any user.
#%wheel ALL= ALL

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

Problèmes et conseils

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 dans Squeeze se termine avec la ligne :

Cela permet à d'autre d'autres paquets de fournir des bouts de code dans /etc/sudoers.d/<nom de paquet> qui modifient la configuration de sudo. Il peut paraître 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 oeuvre 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