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 superutilisateur (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.

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 superutilisateur pour un certain nombre de raisons dont :

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

Utilisateurs et sudo

Dans sa configuration par défaut Debian permet aux utilisateurs dans le groupe sudo d'exécuter n'importe quelle commande via sudo.

Vérifier l'appartenance au groupe sudo

Une fois connecté comme utilisateur, vous pouvez vérifier si l'utilisateur appartient ou non au groupe sudo en utilisant soit la commande id soit la commande groups. Par exemple, l'utilisateur foo tapera

et obtiendra en sortie

Si sudo n'est pas présent à l'affichage en sortie, l'utilisateur n'appartient pas à ce groupe. De même, la commande id, plus complexe, devrait sortir quelque chose comme

Ajouter un utilisateur existant à partir de la ligne de commande

Pour ajouter l'utilisateur foo au groupe sudo :

Autrement, vous pouvez d'abord vous connecter comme superutilisateur (par exemple, sudo su -) et ensuite exécuter les mêmes commandes sans le préfixe sudo :

Après s'être ajouté à un nouveau groupe, l'utilisateur doit se déconnecter et se reconnecter afin que le changement pour le nouveau groupe soit effectif. C'est une erreur assez répandue de s'ajouter à un groupe mais de ne pas ensuite se déconnecter et reconnecter, ce qui occasionne des problèmes car le groupe n'est pas encore assigné ; vérifiez l'appartenance aux groupes.

Créer des utilisateurs avec sudo

Vous pouvez également créer des utilisateurs avec l'appartenance au groupe sudo :

Créer un nouvel utilisateur pendant l'installation de l'OS

Depuis Squeeze, si vous donnez au superutilisateur (root) un mot de passe vide durant l'installation, sudo sera installé et le premier utilisateur sera capable de l'utiliser pour obtenir l'accès du superutilisateur (actuellement, l'utilisateur sera ajouté au groupe sudo). Le système configurera également gksu et aptitude pour utiliser sudo. Vous devriez toujours [#Vérifier_l'appartenance_au_groupe_sudo|vérifiez l'appartenance aux groupes]] après vous être connecté comme l'utilisateur de l'installation.

Créer un nouvel utilisateur à partir de la ligne de commande

Un utilisateur qui est déjà membre du groupe sudo peut créer un autre utilisateur (par exemple foo) comme membre du groupe sudo à partir de la ligne de commande :

(ou connectez-vous d'abord en tant que superutilisateur comme dans la section précédente). Vous devez alors vous connecter en tant qu'utilisateur nouvellement créé et vérifiez l'appartenance aux groupes.

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) que vous pouvez inclure dans un fichier /etc/sudoers.d, en utilisant visudo -f /etc/sudoers.d/myfile.

User_Alias      MYADMINS = jdoe

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

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

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 ou bien en changeant de groupe avec newgrp sudo.

La directive inclue

Le fichier /etc/sudoers standard 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 !

Il est également recommandé d'apporter des modifications locales aussi dans un extrait de code.

sudoers est en lecture seule

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

L'explication est qu'il a été configuré de cette manière pour motiver les administrateurs à ne le modifier que via la commande visudo, qui fournit une vérification supplémentaire avant de laisser le nouveau fichier en place. Vous pourriez penser que le correctif pour un /etc/sudoers mutilé peut être aussi simple que su -c visudo, mais sudo est souvent utilisé dans un endroit où se connecter à root simplement avec su n'est pas possible car vous ne connaissez tout simplement pas le mot de passe root.

Attention, la plupart des éditeurs de texte vous permettront de modifier le fichier sans se plaindre du bit en lecture seule, vous n'obtiendrez donc peut-être pas automatiquement cette protection supplémentaire.

Demander le mot de passe du compte administrateur (« root »)

Si vous souhaitez que le mot de passe du compte administrateur (« root ») soit demandé à chaque utilisation de sudo à la place du mot de passe de l'utilisateur, ajoutez la ligne :

Defaults   rootpw

Aucune invite de mot de passe pour l'utilisateur sudo

Si vous voulez que les membres du groupe sudo exécutent des commandes sans mot de passe, ajoutez la ligne :

%sudo ALL=(ALL) NOPASSWD: ALL

Personnaliser le délai d'expiration du cache des informations d'identification

Par défaut, après avoir demandé un mot de passe, vos informations d'identification sont mises en cache par sudo durant 15 minutes. Vous pouvez changer cela en utilisant la commande visudo et personnaliser le délai d'expiration pour un utilisateur spécifique :

Defaults:foobar timestamp_timeout=30

Voir aussi


CategoryRoot | CategorySystemSecurity | CategorySystemAdministration