La commande sudo comme alternative au compte root
Logo de sudo :
Présentation de sudo
La commande sudo (substitute user do) est une commande qui permet de lancer des commandes administratives sans nécessité d'accès au compte root (superutilisateur sous les systèmes Unix) mais également des applications graphiques d'administrations tel que GParted. Il existe une commande similaire à sudo du nom de doas qui provient du projet OpenBSD.
Installation de sudo
Pour les distributions Linux n'ayant pas sudo par défaut, il faut d'abord vous connectez en tant que root :
su -
puis entrez votre mot de passe root.
Sous Debian :
apt install sudo
Sous Fedora :
dnf install sudo
Sous openSUSE :
zypper install sudo
Sous Mageia :
urpmi sudo
Sous Arch Linux :
pacman -S sudo
Lié un utilisateur à sudo
Par la méthode traditionnel
Suite à l'installation de sudo, un fichier de configuration est créé du nom de sudoers
, /etc/sudoers
sous Linux ou /usr/local/etc/sudoers
sous FreeBSD.
Pour éditer ce fichier de manière sécurisée, il y a l'utilitaire visudo qui utilise votre éditeur de texte par défaut.
Entrez en root :
visudo
ouvre le fichier /etc/sudoers
avec votre éditeur de texte.
Copier la ligne root ALL=(ALL:ALL) ALL
et ajoutez au fichier tom ALL=(ALL:ALL) ALL
, tom est à remplacer par votre nom d'utilisateur. L'ajout de tom ALL=(ALL:ALL) ALL
au fichier sudoers
vous donne tous les droits du compte root de manière immédiate. Vous pouvez évidemment peaufiner votre réglage et n'attribuer que quelques autorisations à votre utilisateur.
En passant par le groupe utilisateur sudo
Sous Debian, en root :
adduser tom sudo
ajoute l'utilisateur tom au groupe sudo.
Toutes distributions Linux confondues, en root :
usermod -aG sudo tom
ajoute l'utilisateur tom au groupe sudo. Évidemment il faut remplacer tom par votre nom d'utilisateur !
À noter que l'ajout de votre utilisateur au groupe sudo n'a pas un effet immédiat, il faut vous déconnectez et vous reconnectez avec votre utilisateur.
sudoers
, qui fonctionne sur tout OS de type Unix.
Utilisation de la commande sudo
Pour avoir une information complète sur la commande sudo :
man sudo
Pour avoir un bref résumé de l'utilisation de la commande sudo :
sudo --help
qui affiche :
sudo – exécute une commande en tant qu'un autre utilisateur usage: sudo -h | -K | -k | -V usage: sudo -v [-ABkNnS] [-g group] [-h host] [-p prompt] [-u user] usage: sudo -l [-ABkNnS] [-g group] [-h host] [-p prompt] [-U user] [-u user] [command [arg ...]] usage: sudo [-ABbEHkNnPS] [-r role] [-t type] [-C num] [-D directory] [-g group] [-h host] [-p prompt] [-R directory] [-T timeout] [-u user] [VAR=value] [-i | -s] [command [arg ...]] usage: sudo -e [-ABkNnS] [-r role] [-t type] [-C num] [-D directory] [-g group] [-h host] [-p prompt] [-R directory] [-T timeout] [-u user] file ... Options: -A, --askpass utiliser un programme adjoint pour demander le mot de passe -b, --background exécuter la commande en arrière-plan -B, --bell émettre un signal sonore lors d'une demande -C, --close-from=num fermer tous les descripteurs de fichiers >= n° -D, --chdir=directory changer le répertoire de travail avant d'exécuter la commande -E, --preserve-env préserver l'environnement de l'utilisateur en exécutant la commande --preserve-env=list préserver les variables d'environnement spécifiques -e, --edit éditer les fichiers au lieu d'exécuter une commande -g, --group=group exécuter la commande en tant que le nom ou ID de groupe spécifié -H, --set-home assigner à la variable HOME le répertoire personnel de l'utilisateur cible -h, --help afficher le message d'aide et terminer -h, --host=host exécuter la commande sur l'hôte (si supporté par le greffon) -i, --login exécuter le shell de login comme l'utilisateur cible. Une commande peut aussi être spécifiée -K, --remove-timestamp supprime complètement le fichier d'horodatage -k, --reset-timestamp invalide le fichier d'horodatage -l, --list afficher les privilèges de l'utilisateur ou vérifie une commande spécifique. Utilisez deux fois pour une forme plus longue -n, --non-interactive mode non interactif, aucune invite utilisée -P, --preserve-groups préserve le vecteur des groupes au lieu de le changer en celui de la cible -p, --prompt=prompt utiliser l'invite de mot de passe spécifié -R, --chroot=directory changer le répertoire racine avant d'exécuter la commande -r, --role=role créer le contexte de sécurité SELinux avec le rôle spécifié -S, --stdin lire le mot de passe depuis l'entrée standard -s, --shell exécuter le shell en tant que l'utilisateur cible. Une commande peut aussi être spécifiée -t, --type=type créer le contexte de sécurité SELinux avec le type spécifié -T, --command-timeout=timeout terminer la commande après la limite de temps spécifiée -U, --other-user=user en mode liste, afficher les privilèges de l'utilisateur -u, --user=user exécuter la commande (ou éditer le fichier) sous le nom d'utilisateur ou le ID spécifié -V, --version afficher les informations de version et terminer -v, --validate mettre à jour l'horodatage de l'utilisateur sans exécuter de commande -- arrêter de traiter les arguments en ligne de commande
Quelques commandes sudo
Pour vous connecter en tant que root via votre utilisateur :
sudo su -
ou :
sudo -i
Exécuter une commande administrative avec les droits root sous sudo :
sudo cmd_admin
exemple :
sudo apt update
Exécuter une commande avec sudo en choisissant votre utilisateur :
sudo -u tom fdisk -l
exécute la commande fdisk -l
via l'utilisateur tom avec des droits root.
Vous connectez en tant que root en spécifiant un shell Unix installé :
sudo -s tcsh
vous connectes en root avec le shell tcsh.
Terminer une session sudo, pour devoir retaper le mot de passe de votre utilisateur après une nouvelle commande sudo :
sudo -k