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 :
$ su - Password: (entrez ici le mot de passe superutilisateur que vous avez défini dans l'installation de votre Debian et appuyez sur la touche Entrée) # apt install sudo # adduser jhon-smith sudo
(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 :
Personne n'a à connaitre le mot de passe du superutilisateur (sudo demande le mot de passe de l'utilisateur courant). Des droits supplémentaires peuvent être accordés temporairement à des utilisateurs puis retirés sans qu'il soit besoin de changer de mot de passe.
Il est facile de n'exécuter que les commandes qui nécessitent des droits spéciaux avec sudo et le reste du temps, on travaille en tant qu'utilisateur non-privilégié, ce qui réduit les dommages que l'on peut commettre par erreur.
- Contrôler et enregistrer : quand une commande sudo est exécutée, le nom de l'utilisateur et la commande sont enregistrés.
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
$ groups
et obtiendra en sortie
foo sudo
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
uid=1001(foo) gid=1001(foo) groups=1001(foo),27(sudo)
Ajouter un utilisateur existant à partir de la ligne de commande
Pour ajouter l'utilisateur foo au groupe sudo :
$ sudo adduser foo 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 :
# adduser foo # adduser foo 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 :
$ sudo adduser foo -G sudo
(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 :
$ sudo test We trust you have received the usual lecture from the local System Administrator. It usually boils down to these three things: #1) Respect the privacy of others. #2) Think before you type. #3) With great power comes great responsibility. [sudo] password for toto: Sorry, user toto is not allowed to execute '/usr/bin/test' as root on localhost.
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 :
#includedir /etc/sudoers.d
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
Les pages du Manuel : sudoers(5), sudo(8), visudo(8), sudoedit(8), sudoreplay(8)
Doas - un outil similaire, plus léger, minimaliste et de configuration plus simple
CategoryRoot | CategorySystemSecurity | CategorySystemAdministration