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 #