SUDO


sudo permet de lancer des programmes avec les droits root. On peut donc donner la permission à un utilisateur ou un groupe d'utilisateur d'executer des programmes avec les droits root (par exeme halt ou reboot), dans le cas d'un serveur avec plusieurs utilisateurs cela peut-être pratique.
On peut aussi utiliser sudo, si on a tout simplement la flemme d'élever ses droits avec su.

sudo est installé par défaut sur la distribution ubuntu.

Le fichier /etc/sudoers

La configuration de sudo se fait à partir du fichier /etc/sudoers
Son edition se fait par l'intermédiaire de la commande visudo qui est en fait un editeur de texte amélioré pour sudo (un peu comme crontab).

Les Groupes
Dans un premier temps, vous devez définir les groupes d'utilisateurs.

Host_Alias :
permet de créer un groupe dem machines, ceci peut être utilisé pour donner des droits à des utilisateurs se connectant à partir de machines dont vous avez spéficiées l'adresse. La syntaxe est :
Host_Alias  NOM_DU_GROUPE = host1, host2, host3, etc..
exemple : Host_Alias HOST_EXEMPLE = 192.168.1.1, *.wanadoo.fr, www.malekal.com

User_Alias : permet de définir un groupe d'utilisateurs. La syntasxe est :
User_Alias NOM_DU_GROUPE = user1, user2, user3, etc..
exemple:
User_Aias USR_HALT = yann, herve, pierre
User_Alias USR_ROOT = christophe, laurent


Cmnd_Alias :
permet de créer un groupe de commandes, afin de donner des droits sur ces commandes à un groupe d'utilisateur. La syntaxe est :
Cmd_Alias NOM_DU_GROUPE = chemin_complet_commande1, chemin_complet_commande2, chemin_complet_commande3
exemple :
Cmnd_Alias CMND_HALT = /sbin/halt, /sbin/reboot,  /sbin/shutdown -r, /sbin/shutdown -h
Sachez que vous pouvez utiliser le ! devant la commune pour interdire l'utilisation de la commande.
Ceci peut etre interressant pour interdire certains paramètres d'une commande, dans l'exemple ci-dessous, si on vait eu la ligne :
Cmnd_Alias CMND_HALT = /sbin/halt, /sbin/reboot,  !/sbin/shutdown -*, /sbin/shutdown -r, /sbin/shutdown -h
Cela signifirait qu'on ne peut utiliser aucune option avec /sbin/shutdown sauf -r et -h

Runas_Alias : permet de définir un groupe d'utilisateurs à partir duquel seront executé les commandes.
Runas_Alias NOM_DU_GROUPE = user1, user2, user3, etc..
exemple:
User_Aias RUNAS_HALT = yann, herve, pierre
User_Alias RUNAS_ROOT = christophe, laurent


Donner les droits

La syntaxe est :
GROUPE_DE_USER  GROUPE_D_HOST = (GROUPE_DE_RUNAS)NOPASSWD: GROUPE_DE_COMMANDES
ici l'option NOPASSWD permet de ne pas demander le mot de passe lors de l'utilisation de sudo.

Exemple
Voici le fichier /etc/sudoers par défaut de la distribution ubuntu
# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#
# Host alias specification
# User alias specification
# Cmnd alias specification

# Defaults

Defaults        !lecture,tty_tickets,!fqdn

# User privilege specification
root    ALL=(ALL) ALL
Cette ligne signifie que l'utilisateur root peut lancer à partir de n'importe quelle machine (premier ALL) à partir de n'importe quel utilisateur (second ALL) n'importe quelle commande (troisième ALL)

# Members of the admin group may gain root privileges
%admin  ALL=(ALL) ALL
Ici cela signifie que le groupe admin (issu de /etc/group) peut lancer à n'importe quelle machine (premier ALL) à partir de n'importe quel utilisateur (second ALL) n'importe quelle commande (troisième ALL).

yann localhost = (ALL) ALL, (root) !ALL

Cette ligne signifie que l'utilisateur yann à partir de la machine (localhost) peut lancer à partir de n'importe quel utilisateur (ALL entre parenthèse) SAUF le compte root, n'importe quelle commande (second ALL).

Après avoir modifier le fichier de configuration, visudo vérifie la syntaxe, si cette dernière est mauvaise, il vous le fera savoir! corrigez alors votre erreur.
Vous pouvez aussi utiliser la commande visudo -c

Retour à la page d'accueil