Pourquoi devons-nous utiliser visudo au lieu de modifier directement le fichier sudoers?

84

Je comprends que si vous voulez modifier qui peut utiliser sudoet ce qu’ils peuvent en faire, vous devriez utiliser visudo. Je sais que je ne suis pas censé modifier directement le fichier / etc / sudoers moi-même.

Qu'est-ce qui visudone modifie pas directement le fichier? Qu'est-ce qui peut aller mal?

Dason
la source

Réponses:

104

visudovérifie la syntaxe du fichier avant de l' écraser sudoers.

Si vous utilisez un éditeur en clair, bousillez la syntaxe et sauvegardez ... sudocessera (probablement) de fonctionner et, comme il /etc/sudoersn'est modifiable que par root, vous êtes bloqué (à moins que vous n'ayez un autre moyen de gagner la racine).

De plus, cela garantit que les modifications constitueront une opération atomique. Ce verrouillage est important si vous devez vous assurer que personne d'autre ne peut gâcher vos modifications de configuration soigneusement étudiées. Outre l'édition de fichiers en tant que root, /etc/sudoersil existe une sudoeditcommande qui protège également de tels conflits d'édition.

Tapis
la source
3
Wow, jamais su sur sudoedit. Cela ne fonctionne pas sous OS X, donc je suppose que c'est un outil GNU? Quoi qu'il en soit, info cool ici. J'avais toujours édité manuellement et n'avais jamais eu de problème - je comprends maintenant que c'était simplement de la chance et que l'outil peut aider à éviter une catastrophe. Merci!
Harv
2
@ Harv. Il n’existe pas de GNU sudoet OS X possède des outils GNU. Sudo ayant été créé en tant qu'application open source, il n'y a probablement aucune raison pour qu'il s'agisse de nombreuses implémentations. sudoet sudoeditsont les mêmes commandes, sudose comporte comme sudo -equand appelé sudoedit. Je pense que c'est juste qu'OS X a oublié d'ajouter le sudoedit -> sudolien, mais vous devriez toujours pouvoir utiliser sudo -eou appeler sudoavec argv [0] sudoeditpour obtenir le même comportement.
Stéphane Chazelas
Fait intéressant, visudoutilise nano par défaut.
Tim
3
@ Tim: Le "vrai" défaut est vi, mais il peut être configuré pour utiliser autre chose. Nano pourrait donc bien être la valeur par défaut de votre distribution / configuration. Voir la page de manuel .
Mat
2
@ AngularInDepth.com, les conséquences sont assez évidentes. Si vous enregistrez un fichier sudoers non valide, le système ne pourra pas l’analyser. Donc, si je fais un sudo vim /etc/sudoersbricolage de la syntaxe, je ne pourrai sudo vim /etc/sudoersplus le réparer. En effet, toute possibilité d’élévation des privilèges via sudo sera perdue car le système ne pourra pas analyser le fichier.
Spencer D
23

À partir de la page de manuel de visudo:

visudo verrouille le fichier sudoers contre plusieurs modifications simultanées, fournit des contrôles de base et vérifie les erreurs d'analyse. Si le fichier sudoers est en cours de modification, vous recevrez un message pour réessayer ultérieurement.

Vérifiez également cette réponse depuis serverfault .

amyassin
la source