Table of Contents
sudo
sudo est un utilitaire qui permet d'exécuter une commande sous un autre utilisateur de la machine.
Installation :
aptitude install sudo
Par défaut, sous Debian, on a ce genre de configuration :
cat /etc/sudoers [..] # Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) ALL
… qui permet à tout utilisateur membre du groupe sudo de lancer des commandes en tant que root (en re-saisissant son mot de passe) ainsi : sudo <CMD>
.
Attention : il faut toujours utiliser la commande visudo pour éditer la configuration de sudo, sous peine de bloquer le système en cas d'erreur de syntaxe !
Exemple de configuration :
vi /etc/sudoers/apache # permettre a l'utilisateur apache de lancer s1 et s2 en tant que admin, # à partir de n'importe quelle machine (ALL) et sans saisir de mot de passe Cmnd_Alias HTTP_SCRIPTS = /scripts/s1.sh, /scripts/s2.sh apache ALL=(admin)NOPASSWD: HTTP_SCRIPTS
Les différentes options / cas d'utilisation :
# lancer une commande en tant que admin sudo -u admin <CMD> # lancer une commande en tant que root sudo <CMD> # se connecter (obtenir un shell) en tant que root sudo -i # afficher les droits sudo de l'utilisateur apache sudo -l -U apache
Tips
Lancer plusieurs commandes
Pour lancer plusieurs commandes avec un seul sudo
:
sudo -s -- 'whoami; whoami' root root # La précédente option "-s" ne fonctionne pas toujours ; # en alternative, lancer un shell qui exécute les commandes : sudo -- sh -c 'whoami; whoami' root root
Demander le mot de passe root
Par défaut un utilisateur doit saisir son propre mot de passe pour lancer une commande comme root (à condition qu'il en ait le droit !) ; pour lui demander de saisir le mot de passe root il faut ajouter la ligne de configuration suivante (avec visudo
) :
Defaults:toto rootpw toto ALL=(ALL:ALL) ALL :x # -> toto@srv $ sudo -i [sudo] password for root: root@srv #