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 :
- les pages de manuel relatives au programme et à ses fichiers de configuration;
- les pages du wiki-admin relatives au programme et à sa configuration courante, les raisons des choix précédents;
- é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 :
- éditer le fichier dans le premier terminal
- 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