Нужно ли использовать "Visudo"?

В /etc/sudoers, это говорит:

# This file MUST be edited with the 'visudo' command as root.

У меня вопрос, почему этот файл должен быть отредактирован с visudo?

Кажется, я смог успешно отредактировать файл с gedit, выдав:sudo gedit /etc/sudoers,

Если бы я мог отредактировать его с geditпочему я должен использовать visudo?

3 ответа

Решение

Это просто безопаснее в использовании visudo, Вы можете редактировать /etc/sudoers напрямую, но если вы сделаете опечатку там, вы не сможете использовать sudo больше. И не сможет исправить вашу ошибку.

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

Вы можете прочитать больше:

man visudo

Когда вы используете , если вам удается ввести синтаксическую ошибку, просто выходит с подсказкой «Что теперь?», но не дает вам никаких вариантов на экране.

Тем не менее, варианты указаны вvisudoсправочная страница :

visudo анализирует файл sudoers после редактирования и не сохраняет
изменяется, если есть синтаксическая ошибка. Обнаружив ошибку , visudo
напечатать сообщение с номерами строк, в которых произошла ошибка
и пользователь получит сообщение "Что теперь?" быстрый. В этот момент
пользователь может ввести «e», чтобы повторно отредактировать файл sudoers , «x», чтобы выйти без
сохранение изменений или «Q», чтобы выйти и сохранить изменения. Вариант «Q»
следует использовать с особой осторожностью, потому что, если visudo считает, что
быть ошибкой синтаксического анализа, так что sudo и никто не сможет снова sudo
пока ошибка не будет исправлена. Если ввести «e» для редактирования файла sudoers
после обнаружения ошибки синтаксического анализа курсор будет помещен на
строка, в которой произошла ошибка (если редактор поддерживает это
особенность).

Тем не менее, это в значительной степени стена текста, и она не очень интуитивно понятна.

Чтобы избежать путаницы, если вы получите синтаксическую ошибку, я рекомендую вам определить следующую функцию в вашем (или другом файле, полученном из ~/.bashrc).

      # Improved visudo command
editsudo () {
  echo "Valid options at the 'What now?' prompt:"
  echo "  e : Re-edit the sudoers file"
  echo "  x : Exit without saving the changes"
  echo "  Q : Quit and save changes (NOT recommended)"
  sudo visudo
}

Теперь у этого есть 2 преимущества:

  1. Команда гарантирует выполнение sudo visudo(так короче).
  2. Команда editsudoсначала печатает текст справки, так что, если вы выйдете с ошибкой, у вас будет соответствующая информация прямо вверху.

Прямо изо рта лошади, man visudo:

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

visudoанализирует файл sudoers после редактирования и не сохраняет изменения в случае синтаксической ошибки. Обнаружив ошибку, visudoнапечатает сообщение с указанием номеров строк, в которых произошла ошибка, и пользователь получит сообщение "Что теперь?" Подсказка. [...]

Другие вопросы по тегам