Aide-mémoire sudoers

Ce document résume les règles essentielles pour déléguer des privilèges de façon sécuritaire sous Linux.

1) Fichiers importants

sudo visudo
sudo visudo -f /etc/sudoers.d/web

Utiliser nano avec visudo :

sudo select-editor

Warning

Une erreur de syntaxe dans sudoers peut bloquer l'accès administrateur.

2) Syntaxe d'une règle

utilisateur hote=(utilisateur_cible:groupe_cible) options: commandes

Exemple générique :

alice ALL=(root) /usr/bin/systemctl restart nginx

Signification :

3) Utilisateur vs groupe

%admin ALL=(ALL) ALL

4) Autoriser plusieurs commandes

Séparer avec des virgules :

alice ALL=(root) /usr/bin/systemctl restart nginx, /usr/bin/systemctl status nginx

5) Alias utiles

User_Alias WEBOPS = alice, bob
Cmnd_Alias WEB_CMDS = /usr/bin/systemctl restart nginx, /usr/bin/systemctl status nginx
WEBOPS ALL=(root) WEB_CMDS

6) NOPASSWD (à utiliser avec prudence)

alice ALL=(root) NOPASSWD: /usr/sbin/reboot

7) Bonnes pratiques minimales

8) Vérifications rapides

Lister les privilèges d'un utilisateur :

sudo -l -U alice

Tester la syntaxe sudoers :

sudo visudo -c

8.1) Prendre le rôle d'un utilisateur et tester une règle

  1. Ouvrir une session shell comme l'utilisateur ciblé :
sudo -iu alice
  1. Exécuter la commande autorisée par votre règle (exemple) :
sudo systemctl restart nginx
  1. Confirmer le comportement attendu :
  1. Tester un cas refusé (commande non autorisée) pour valider le moindre privilège :
sudo systemctl stop ssh
  1. Quitter la session utilisateur de test :
exit

9) Modèles prêts à adapter

Redémarrer un service précis :

%webops ALL=(root) /usr/bin/systemctl restart nginx

Exécuter un script d'entretien précis :

backup ALL=(root) /usr/local/bin/backup.sh

Autoriser un compte applicatif à lire des logs via journalctl sans mot de passe :

appsupport ALL=(root) NOPASSWD: /usr/bin/journalctl -u nginx