Une mauvaise configuration de sudo peut amener à perdre la main sur une machine. La résolution d'un tel problème ne peut alors passer que par un accès physique à la machine. Pour éviter d'en arriver là, il vaut mieux respecter quelques règles de prudence, même si elles semblent un peu contraignantes.

Préliminaires

La première chose à faire avant de se lancer dans la reconfiguration, même minime, d'un programme vital, est de se demander si c'est le bon moment : évaluer son propre état de fatigue, d'alcoolémie, le temps qu'on a devant soi dans le cas où tout ne se passerait pas comme prévu, l'urgence réelle ou supposée de la tâche, etc.

Ensuite, si le moment est jugé opportun, alors commencer par lire ou relire la documentation :

  1. les pages de manuel relatives au programme et à ses fichiers de configuration;
  2. les pages du wiki-admin relatives au programme et à sa configuration courante, les raisons des choix précédents;
  3. éventuellement, des pages web traitant du même sujet.

Ensuite, on peut y aller posément, mais pas sans filet…

Procédure

La configuration se trouve dans les fichiers /etc/sudo.conf, /etc/sudoers et ceux du répertoire /etc/sudoers.d dont le nom ne contient pas de point. Les deux premiers n'ont pas à être édités.

sudo n'est pas un service mais une commande : cela signifie que toute modification de sa configuration prend immédiatement effet (c'est à dire dès le prochain appel de la commande).

Donc, avant même de modifier la configuration de sudo, il est impératif d'ouvrir et garder ouvert un shell root dans un terminal :

sudo -s

Ensuite, dans ce shell root, on peut modifier la configuration de sudo. L'édition d'un fichier sudoers se fait avec la commande

visudo -f /etc/sudoers.d/nom_du_fichier

Puis, dans un autre terminal ou une autre fenêtre de screen, il faut vérifier que :

  • la commande sudo est toujours fonctionnelle
  • un shell root est toujours accessible

Pour cela, on peut lancer sur le deuxième terminal la même commande que sur le premier, mais après avoir pris soin de supprimer le(s) cookie(s) d'authentification de sudo (histoire de ne pas biaiser le test) :

sudo -K
sudo -s

Évidemment, si l'une ou l'autre de ces commandes échoue, recommencer le cycle :

  1. éditer le fichier dans le premier terminal
  2. ouvrir un shell root dans le deuxième terminal

S'il n'y a pas de problème, on peut fermer les shells root et finir avec

sudo etckeeper commit

Voir aussi