Ответы:
visudo
проверяет синтаксис файла перед его перезаписью sudoers
.
Если вы используете простой редактор, испортите синтаксис и сохраните ... sudo
(вероятно) перестанет работать, и, поскольку его /etc/sudoers
можно изменить только с помощью root
, вы застряли (если у вас нет другого способа получить root).
Кроме того, это гарантирует, что изменения будут одной атомарной операцией. Эта блокировка важна, если вам нужно убедиться, что никто не сможет испортить ваши тщательно продуманные изменения конфигурации. Для редактирования других файлов от имени root, кроме того, /etc/sudoers
есть sudoedit
команда, которая также защищает от таких конфликтов редактирования.
sudo
а OS X имеет инструменты GNU. Поскольку sudo был впервые создан как приложение с открытым исходным кодом, вероятно, нет оснований для его множества реализаций. sudo
и sudoedit
те же команды, sudo
ведет себя как sudo -e
при вызове, как sudoedit
. Я считаю, что просто OS X забыл добавить sudoedit -> sudo
ссылку, но вы все равно должны иметь возможность использовать sudo -e
или вызывать sudo
с argv [0], установленным sudoedit
для получения того же поведения.
visudo
по умолчанию используется nano.
sudo vim /etc/sudoers
и испорчу синтаксис, то я не смогу sudo vim /etc/sudoers
снова это исправить. По сути, все возможности повышения привилегий через sudo будут потеряны, поскольку система не сможет проанализировать файл.
Со страницы руководства visudo:
visudo блокирует файл sudoers от нескольких одновременных изменений, обеспечивает базовые проверки работоспособности и проверки на ошибки синтаксического анализа. Если файл sudoers в данный момент редактируется, вы получите сообщение, чтобы повторить попытку позже.
Также проверьте этот ответ от serverfault .