Почему я должен редактировать / etc / sudoers с помощью visudo?

51

Я заметил, что файл sudoers и файлы конфигурации cron действуют особым образом по сравнению с другими файлами конфигурации в Linux. Их нужно редактировать с помощью специальной оболочки, а не текстового редактора. Почему это?

Брайан Литтл
источник

Ответы:

71

Вы используете visudo главным образом для предотвращения взлома вашей системы. Visudo проверяет ваши изменения, чтобы убедиться, что вы ничего не испортили. Если вы что-то испортили, вы можете полностью разрушить вашу способность исправить это или сделать что-либо, требующее привилегий, без перезагрузки в режиме восстановления.

Страница man описывает это .

visudo редактирует файл sudoers безопасным способом, аналогичным vipw (8). visudo блокирует файл sudoers от нескольких одновременных изменений, обеспечивает базовые проверки работоспособности и проверки на ошибки синтаксического анализа. Если файл sudoers в данный момент редактируется, вы получите сообщение, чтобы повторить попытку позже.

Zoredache
источник
3
Интересно! +1, для иллюстрации простого объяснения чего-то, что я должен был знать давно :)
Грег Михан
7
Поведение visudo доступно как команда sudoedit. Это делает тот же цикл блокировки / копирования / редактирования / копирования / разблокировки (хотя, очевидно, не с шагом разбора). Одним из преимуществ этого является то, что он позволяет пользователям sudo иметь доступ к редактированию файлов, принадлежащих корню, без запуска редактора в качестве пользователя root, что может позволить им запустить оболочку из редактора. Если я запускаю sudoedit из моего редактора, мой euid остается моим.
Джеймс Ф
18

Zoredache ответ идеально подходит.

Еще одна вещь, о которой стоит упомянуть. Вы можете использовать свой любимый редактор, установив EDITORили VISUAL:

export EDITOR=whatevertexteditoryouwant
export VISUAL=whatevertexteditoryouwant

Или же:

EDITOR=whatevertexteditoryouwant visudo
cstamas
источник
Если вы сделаете это, он все равно выполнит шаг проверки синтаксиса или будет эквивалентен вызову sudoedit, как предложено @James F?
о0 '.
Да, это ответ на ваш вопрос. Вы можете использовать практически любой редактор, который вы можете вызвать из cli.
cstamas
3
Это был не вопрос да или нет: V
o0 '.
5
Это сделает проверку синтаксиса.
Cstamas