Table des matières
sudo
finalité
Permettre a de simple user
, d'executer des taches en tant que root
.
Comme il est dit là , le fait de fixer le “suid” d'un script, ne rend pas ce scripte executable pas tout le monde en tant que “root” ! (quel con!)
en pratique
Initialement, c'est parce que je veus autoriser l'utilisateur “snmp” (du daemon “snmpd”) a superviser des éléments de la machine, notamment le RAID.
installation
# aptitude update # aptitude install sudo
On a un nouveau fichier ici:
# ls /etc/sudoers -lart -r--r----- 1 root root 458 2008-08-26 16:49 /etc/sudoers
Mais il faudra l'editer exclusivement avec la commande visudo
.
config
Initialement, le fichier est comme ça:
# cat /etc/sudoers # /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. # Defaults env_reset # Host alias specification # User alias specification # Cmnd alias specification # User privilege specification root ALL=(ALL) ALL
Et c'est trés bien.
On va autoriser le user “snmp” et moi-même, a démarrer un petit scripte qui retourne l'etat du RAID.
On tape visudo
et on fait en sorte d'avoir un truc comme ca:
# User alias specification User_Alias MONITOR=thierry,snmp # Cmnd alias specification Cmnd_Alias SCRIPTMON=/root/prod/snmpd/raidmon # User privilege specification root ALL=(ALL) ALL MONITOR ALL=NOPASSWD:SCRIPTMON
Traduction:
les “users” appartenant au groupe “MONITOR” sont autorisés a utilisé les commandes déclarés dans “SCRIPTMON” .
Le “NOPASSWD” permet d'eviter une demande de mot de passe.
Le “ALL=“ autorise tous les hotes (reseaux)… mais comment sans connexion ? (passons)
Le ”(ALL)“ , quand il existe, donne la liste des “run as user”… a défaut, c'est “root”. (voir la doc)
On aurait pu faire:
thierry ALL=NOPASSWD:/root/prod/snmpd/raidmon snmp ALL=NOPASSWD:/root/prod/snmpd/raidmon
Mais c'est caca.
En déclarant des “groupes”, on peut facilement ajouter/retirer des “users” (au groupe “MONITOR”) et ajouter/retirer des commandes (au groupe “SCRIPTMON”).