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.

Notes pour les nouveaux utilisateurs de Debian

Certains nouveaux utilisateurs de Debian, venant généralement de Ubuntu, sont choqués par les problèmes du type : « sudo ne fonctionne pas dans Debian ». Cette situation n'arrive cependant que si vous avez configuré un mot de passe superutilisateur (root) durant l'installation de Debian.

Si vous aimez sudo que vous voulez l'installer (même si vous l'avez sauté durant l'installation de votre Debian), vous pouvez, devenir superutilisateur avec la commande su, l'installer, et vous ajouter votre propre nom d'utilisateur dans le groupe sudo et faire une déconnexion puis une reconnexion complète.

Exemple :

(Remplacez « jhon-smith » par votre nom d'utilisateur personnel)

Puis veuillez effectuer une complète déconnexion et reconnexion.

Pourquoi pas sudo ?

Notez que, historiquement, tous les systèmes de type Unix fonctionnaient parfaitement même avant que « sudo » ne doit inventé. De plus, avoir un système sans sudo pourrait apporter encore plus de sécurité car le paquet sudo pourrait être affecté par des bogues de sécurité, comme toute partie additionnel de votre système.

Nombre d'utilisateur de Debian n'installent pas sudo. Ils ouvrent à la place un terminal en tant que supertulisateur (par exemple avec la commande su - à partir d'un utilisateur normal). Ainsi, vous n'avez pas placer « sudo » devant n'importe quelle commande.

Pourquoi sudo ?

Utiliser sudo pourrait être un plus familier pour les nouveaux utilisateur et 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ée parce que cela annule la plupart les avantages cités ci-dessus.

Utilisateurs et sudo

Dans sa configuration par défaut Debian permet aux utilisateurs du 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 l'appartenance 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é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