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
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
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 #