
sudo (abréviation de
substitute
user
do) est une commande permettant à l'administrateur système d'accorder à certains utilisateurs (ou groupes d'utilisateurs) la possibilité de lancer une commande en tant qu'administrateur.
sudo s'utilise en ligne de commande, dans un terminal. Il permet de prendre les droits root pour exécuter une commande.
Le mot de passe demandé est celui de l'utilisateur qui a saisi
sudo, ici
adrien.
La commande sera exécutée si le mot de passe entré est correct et que l'utilisateur courant peut effectuer des tâches d'administration.
Le mot de passe est mémorisé par défaut pour une durée de 15 minutes.
Pendant ce laps de temps, on peut toujours saisir des commandes avec
sudo mais le mot de passe ne sera pas demandé.
Il, par sécurité, on souhaite "oublier" le mot de passe mémorisé, on peut utiliser :
On peut ouvrir une "session root" avec sudo, via
sudo -i revient au même que la commande su - en terme de droits.
Avec sudo -i, le mot de passe utilisateur est demandé.
Avec su -, le mot de passe root est demandé.
sudo -i est donc plus élégant que sudo su
Les autorisations pour utiliser
sudo sont définies dans le fichier
/etc/sudoers.
Pour l'éditer, il est préférable d'utiliser la commande suivante :
En effet, avec
visudo, lors de l’enregistrement, l’outil nous indique s'il y a une erreur de syntaxe.
Le fichier qui se modifie est
/etc/sudores mais il est possible de créer le nom de son choix dans le dossier
/etc/sudoers.d !
Chaque ligne du fichier est structurée de cette façon :
Un seul groupe ou utilisateur doit être représenté par ligne.
On peut indiquer dans le fichier
sudoers de ne pas utiliser de mot de passe pour certaines commandes (utile dans le cadre d'un script)
Attention, cela constitue une vulnérabilité du système !
Voici un exemple avec un utilisateur (fonctionne aussi avec les groupes) :
Ici, la
commande 1 est autorisée via sudo avec un mot de passe,
commande2 est autorisée via
sudo sans demande de mot de passe.
Autoriser apache à lancer la commande service avec
sudo sans demande de mot de passe :
Autoriser l'utilisateur à exécuter toutes les commandes via
sudo :
Autoriser adrien à exécuter toutes les commandes via
sudo mais que
sudo reboot ne demande pas le mot de passe (faire 2 lignes) :