Aller au contenu

Délagation de pouvoir avec sudo


DomiX

Messages recommandés

Membre, Posté(e)
DomiX Membre 35 messages
Baby Forumeur‚
Posté(e)

Délagation de pouvoir avec sudo



Autoriser des utilisateurs à executer des commandes avec les droits root ou autres

Auteur: DomiX
Difficulté©: Intermédiaire
Duré©e: time.jpg 15 minutes
Logiciels recquis: UNIX / LINUX


Mise en situation:
Il est parfois utile de déléguer les pouvoirs de root à des utilisateurs de confiance. Grâce a sudo, il ne sera plus nécessaire de se connecter en root pour chaque tâches d'administration (sauvegarde, mise à jour), plus besoin de donner le mot de passe root.


1.jpgPré-requis
Avant de poursuivre, assurez vous que les programmes suivant soient bien présents:
- sudo
- visudo

Sudo ne fait pas parti du système de base, pour l'installer référez vous à la documentation d'installation de votre UNIX/Linux.

2.jpgFonctionnement
Lors de l'utilisation de la commande sudo par un utilisateur, le fichier de configuration sudoers est lu. Je ne conseil pas d'éditer ce fichier directement à la main mais plutôt d'utiliser la commande visudo.
La configuration se componse de 2 parties: création des alias, puis la spécifiation des utilisateurs.

a.jpgCréation des alias

On peut créer autant d'alias que l'on souhaite mais il faut respecter certaines règles. Voici les différents type alias possible:
-User_Alias: contient les noms des utilisateurs,
-Host_Alias: contient les noms des machines autorisés,
-Runas_Alias: contient les noms des utilisateurs pour lesquels ont désirent se faire passer,
-Cmnd_Alias: contient les chemins absolues des commandes autorisés.

Important: Les nom donnés à chaque alias doivent être en majuscule

Exemples d'utilisation:
User_Alias WEBMASTER= dom,foo
Dans ce cas, on crée un groupe d'utilisateurs nommé WEBMASTER contenant 2 utilisateurs dom et foo.

Cmnd_Alias ADMIN= /sbin/shutdown , ! /sbin/fsck -*
Dans ce cas, on crée un groupe de commandes contenant /sbin/shutdown mais interdisant l'utilisation de /sbin/fsck grâce à l'utilisation de '!' ainsi que toute option grâce à '-*'.

b.jpgSpécifiation des utilisateurs

Dans cette partie, on va crée les règles indiquant qui a le droit de faire quoi. On utilisera les alias crée auparavent.
Les règles sont sous cette forme:
GROUPE_D_UTILISATEURS GROUPE_DE_MACHINES = (GROUPE_DE_RUNAS) GROUPE_DE_COMMANDES

3.jpgExemples

Maintenant que la théorie est acquise, pasons à la création de nos propres règles.
Voici un exemple concret d'utilisation:

User_Alias WEBMASTER=dom,menelusque
User_Alias ADMIN=admin,dom
Host_Alias LOCAL_NET=192.168.0.0/255.255.255.0,venus,mars
Runas_Alias WEB=root,www
Cmnd_Alias SHUTDOWN=/sbin/shutdown
Cmnd_Alias HALT=/sbin/halt
Cmnd_Alias REBOOT=/sbin/reboot
Cmnd_Alias APACHE= /usr/local/etc/rc.d/apache2.sh


WEBMASTER LOCAL_NET=(WEB) NOPASSWD: APACHE
ADMIN LOCAL_NET=(ALL) NOPASSWD: HALT,REBOOT,SHUTDOWN
%wheel ALL=(ALL) NOPASSWD: ALL

Explication des dernières lignes:

La première ligne indique que tous les utilisateurs faisant partie du groupe WEBMASTER connecté depuis un hostame faisant partie du groupe LOCAL_NET pourront lancé la commande listé dans APACHE en tant qu'utiliasateur indiqué dans le groupe WEB sans spécifié le mot de passe root.

C'est le même principe pour la ligne suivante, sauf qu'on utilise le mot clé ALL à la place d'un groupe Runas_Alias, cela signifie la commande pourra etre éxecuté en tant que n'importe quel utilisateur. On peut utiliser ce mot clé pour n'importe quelle alias sauf pour remplacer User_Alias. Cela semble évident, ça représenterais une faille pour le système.

Et pour finir, le bonus, la dernière ligne d'autorisé tous les utilisateurs faisant partie du groupe wheel du système à pouvoir exécuter toutes les commandes à partir de n'importe quelle machine, et les lancer à partir de n'importe quel utilisateur.(on pourrait limité cela à un utilisateur système de confiance, en remplaçant %wheel par l'utilisateur de confiance.

Petit test:

dom@djdomics$ id
uid=1001(dom) gid=1001(dom) groups=1001(dom), 0(wheel), 5(operator)
dom@djdomics$ sudo /usr/local/etc/rc.d/apache2.sh stop
Stopping apache2.
Waiting for PIDS: 5772.


4.jpgDocumentation
Il évident que toutes les possibilités de sudo n'ont pas été montré dans ce tutorial. Si vous voulez aller plus loin, il vous faudras lire les man pages suivantes:
sudoers - list of which users may execute what
visudo - edit the sudoers file
sudo - execute a command as another user

Si vous avez des recommandations n'hésitez pas !
Lien à poster
Partager sur d’autres sites

Annonces
Maintenant

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×