La commande sudo permet de fournir à un utilisateur de confiance, un accès avec privilèges sur un système, sans avoir à partager le mot de passe de l’utilisateur root.
Lorsque les utilisateurs ayant des droits sudo, précèdent une commande administrative avec sudo, ils sont invités à entrer leur mot de passe. Une fois authentifié, et en supposant que la commande est autorisée, la commande administrative est exécutée comme si elle est exécutée par l’utilisateur root.
On commence en éditant le fichier /etc/sudoers via la commande visudo:
visudo
On cherche les lignes qui donne le droit sudo au utilisateur du groupe Wheel:
## Allows people in group wheel to run all commands
# %wheel ALL=(ALL) ALL
Cette ligne de configuration demandera un mot de passe lors de l’appel de sudo
## Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL
Cette ligne de configuration ne demandera pas de mot de passe lors de l’appel de sudo
On supprime le croisillon de la ligne « #%wheel ALL…. » souhaitée pour activer la configuration voulue.
Une fois que l’on a utilisé sudo dans un terminal, on dispose de 20 minutes pour utiliser sudo avec d’autres commandes, sans que la console nous redemande un mot de passe. Pour passer de 20 minute à une journée (en minute):
Defaults env_reset,timestamp_timeout=1440
Pour une durée illimitée, on met « -1 » :
Defaults env_reset,timestamp_timeout=-1
Puis on sauvegarde et on quitte visudo.
Il ne nous reste plus qu’a ajouter l’utilisateur voulu au groupe wheel.
Pour cela nous éditons le fichier /etc/group :
vi /etc/group
Et nous ajoutons le login de l’utilisateur (ici antoine) à qui l’on donne le droit sudo directement dans le groupe wheel:
root:x:0:
bin:x:1:bin,daemon
daemon:x:2:bin,daemon
sys:x:3:bin,adm
adm:x:4:adm,daemon
tty:x:5:
disk:x:6:
lp:x:7:daemon
mem:x:8:
kmem:x:9:
wheel:x:10:starmate,antoine
mail:x:12:mail,postfix
uucp:x:14:
Antoine peut maintenant utiliser sudo pour exécuter des commandes comme si il était connecté en root.
Quelques règles de sécurité
Pour empêcher sudo d’agir ailleurs qu’en mode console, il faut déclarer le paramètre suivant dans le fichier /etc/sudoers lors de son édition avec visudo :
Defaults requiretty
Pour enregistrer dans un fichier de logs spécifique, les actions effectuer via sudo :
Defaults log_host,log_year,logfile="/var/log/sudoers"
Il peut être également utile de bloquer certaine commande comme « su« , « passwd« , « bash » ou encore « sh« , pour cela il suffit de faire précéder la commande à bloquer par un point d’exclamation « !« .
Dans ce cas, nous allons directement déclarer l’utilisateur, ici Antoine, pour lui donner les droits sudo dans le fichier sudoers (donc sans passer par le groupe wheel) de cette façon, via visudo:
antoine ALL=(ALL) ALL,!/bin/su,!/usr/bin/passwd,!/bin/bash,!/bin/sh
Ce qui aura pour résultat:
sudo su
Sorry, user antoine is not allowed to execute '/bin/su' as root on Centos_server.