Pourquoi dois-je éditer / etc / sudoers avec visudo?

51

J'ai remarqué que le fichier sudoers et les fichiers de configuration cron agissent de manière particulière par rapport aux autres fichiers de configuration sous Linux. Ils doivent être modifiés avec un wrapper spécial plutôt qu'avec un éditeur de texte. Pourquoi est-ce?

Brian Lyttle
la source

Réponses:

71

Vous utilisez principalement visudo pour éviter de casser votre système. Visudo vérifie vos modifications pour vous assurer de ne rien gâcher. Si vous gâchiez quelque chose, vous pourriez complètement perdre votre capacité à le réparer ou à faire tout ce qui nécessite des privilèges sans devoir redémarrer en mode de secours.

La page de manuel décrit ceci .

visudo édite le fichier sudoers de manière sécurisée, à l’instar de vipw (8). 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.

Zoredache
la source
3
Intéressant! +1, pour illustrer une explication simple pour quelque chose que j'aurais dû savoir il y a longtemps :)
Greg Meehan
7
Le comportement de visudo est disponible de manière générique sous la forme d'une commande appelée sudoedit. Ceci fait le même cycle verrouiller / copier / éditer / copier / déverrouiller (bien évidemment pas avec l'étape d'analyse). Cela présente l’avantage de permettre aux utilisateurs d’éditer des fichiers appartenant à la racine sans lancer un éditeur en tant que root, ce qui pourrait leur permettre de lancer un shell à partir de cet éditeur. Si je me débarrasse de mon éditeur en exécutant sudoedit, mon euid reste le mien.
James F
18

La réponse de Zoredache est parfaite.

Une dernière chose à souligner. Vous pouvez utiliser votre éditeur favori en définissant EDITORou VISUAL:

export EDITOR=whatevertexteditoryouwant
export VISUAL=whatevertexteditoryouwant

Ou:

EDITOR=whatevertexteditoryouwant visudo
cstamas
la source
Si vous faites cela, il fera toujours l’étape de vérification de la syntaxe, ou cela équivaudra à appeler sudoedit comme suggéré par @James F?
o0 '.
Oui est la réponse à votre question. Vous pouvez utiliser presque n'importe quel éditeur que vous pouvez invoquer à partir de cli.
Cstamas
3
Ce n'était pas une question de oui ou non: V
o0 '.
5
Il ne la vérification de la syntaxe.
Cstamas