Использование visudo для редактирования sudoers на Mac

Мне удалось сделать файл sudoers на моем Mac erorr. например.

$ sudo visudo
>>> /etc/sudoers: syntax error near line 45 <<<
sudo: parse error in /etc/sudoers near line 45
sudo: no valid sudoers sources found, quitting

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

Если я попытаюсь запустить «visudo» с помощью root, он запустит Sublime Text, и я увижу пустой файл sudoers.tmp, который, как я понимаю, является файлом блокировки.

Если я попытаюсь скопировать содержимое загруженного файла sudoers в sudoers.tmp с помощью Sublime, я получу указанную выше ошибку.

Итак, у кого-нибудь есть решение этой проблемы? Что я должен увидеть, когда запускаю команду «visudo», Sublime Text и sudoers.tmp?

большое спасибо, Джордж

Я предполагаю, что вы используете bashв качестве оболочки. Попробуйте EDITOR=nano visudoкак root.
Это сработало!!! Большое спасибо. Я должен был убедиться, что сохранил его как sudoers, а не sudoers.tmp.
Я отвечу на него, чтобы вы могли пометить вопрос как отвеченный.
EDITOR=viесли ты мазохист.

Ответы (2)

Если у вас visudoне работает так, как ожидалось, возможно, из-за того, что ваш редактор работает неправильно, попробуйте установить для переменной среды EDITORнормальное значение, а затем запустить visudo:

EDITOR=nano visudo

для sh, bash, dashи совместимы.

У меня есть следующее, export EDITOR="emacsclient -t"будет ли оно перезаписано
Только для этого единственного вызова

Я столкнулся с этой проблемой сегодня, и мне помогла приведенная выше информация, но я хотел, чтобы мой редактор был настроен на возвышенное для других целей. Я добавил следующее в свой ~/.bash_profile, который решает проблему с визуализацией, но не меняет мой редактор по умолчанию для git и т. д.

alias visudo='EDITOR=vi sudo visudo'

При выполнении это меняет редактор на vi для следующей команды и позволяет вам успешно редактировать файл sudoers.

Вы можете установить SUDO_EDITORвместо этого, EDITORчтобы избежать этого. Также EDITOR=vi sudo visudo(без a ;перед sudo) изменяет значение переменной env только для этой команды, а не для всей оболочки.
Спасибо @Patrix, хороший совет: упростив свой псевдоним, я отредактировал свой ответ выше, чтобы отразить это. Что касается вашего другого совета, я попытался добавить export SUDO_EDITOR='/usr/bin/vi'к моему ~/.bash_profile, но, похоже, это вообще не повлияло на sudo visudoкоманду, моя переменная среды EDITOR все еще действовала, по крайней мере, на моей машине под управлением OSX 10.9.5.
Ты прав. SUDO_EDITOR работает только для sudo -e /path/to/file, но не для visudo. И sudo -e не должен использоваться для редактирования файла sudoers, потому что в этом случае не будет выполняться проверка синтаксиса.
Ни EDITOR, ни SUDO_EDITOR у меня не работают должным образом. Я использую alias visudo='VISUAL=vim sudo visudo'вместо этого.