Ubuntu: испортил файл sudoers, как я могу это исправить?

11

Я редактировал свой /etc/sudoersфайл и сохранил его, но там есть синтаксическая ошибка. Теперь я не могу, sudo vim /etc/sudoersпотому что sudo считает файл sudoers недействительным.

Как я могу это исправить?

Фред Бассет
источник

Ответы:

6

Загрузите систему в одном режиме, а затем отредактируйте ее.

Игнасио Васкес-Абрамс
источник
Спасибо, моя Ubuntu работает под Virtualbox. Как мне загрузиться в однопользовательском режиме?
Фред Бассет
debuntu.org/recover-root-password-single-user-mode-and-grub
Игнасио Васкес-Абрамс
Однако я не могу получить параметры grub во время загрузки, он загружается прямо в Ubuntu ...
Фред Бассет,
Попробуйте удерживать <Ctrl> или что-то еще.
Игнасио Васкес-Абрамс
1
@red basset: Когда vm запускается, несколько раз нажмите клавишу Esc, после чего вы попадете в grub, затем выберите опцию режима восстановления.
user9517
21

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

Для выхода из этой ситуации либо загрузитесь в однопользовательском режиме и отредактируйте файл, либо загрузитесь с livecd и сделайте то же самое.

EEAA
источник
Спасибо, мне было интересно, что Visudo сделал по-другому. Мне нужно сейчас разобраться, как загрузиться в однопользовательском режиме. Моя Ubuntu работает под Virtualbox.
Фред Бассет
1
visudo заставляет вас редактировать копию файла sudoers. Он заменит файл sudoers только в том случае, если он проверяется при его сохранении. Он будет использовать редактор, указанный в переменной EDITOR, поэтому вы можете использовать предпочитаемый вами редактор. Его также можно использовать в режиме проверки, если вы отредактировали файл и хотите убедиться, что он все еще действителен.
BillThor
2

Как отмечалось в этом аналогичном вопросе о Askubuntu , это вполне может работать без перезагрузки в однопользовательском режиме:

pkexec visudo
Том
источник
Это самый простой способ сделать это, если он доступен.
belacqua
1

Кстати, если у вас есть пароль root, просто войдите с ним и установите его обратно, как это было.

chmod 0440 / etc / sudoers

Это позволит избежать загрузки в однопользовательском режиме или, что еще хуже, загрузки с livecd.

В моем случае я не мог позволить себе отключить сервер.

yaxzone
источник
1

Если у вас установлен Docker, и ваш пользователь является членом dockerгруппы, вы можете легко выбраться из этого рассола (и некоторых других) без перезагрузки или чего-то еще:

  1. $ docker run -it --rm -v '/etc/:/root/host.etc/' debian bash
  2. apt-get update && apt-get install [vim|nano|whatever]
  3. cd ~/host.etc/
  4. Восстановите проблемные файлы
  5. exit
Адриан Гюнтер
источник
Docker? Вы видели Docker где-нибудь в оригинальном вопросе?
Охотник на оленей
2
Поскольку вопрос не определяет ничего об окружающей среде Аскер и теперь 2015, то есть довольно много людей имеют Docker установлен, я понимаю , ни ваше отношение ко мне , ни ваше презрение моего вклада. Совершенно очевидно, что кто-то еще в этой ситуации установил бы программное обеспечение, которое на сегодняшний день было отмечено 23,5 тысячами людей на GitHub. Если pkexecтакже по какой-либо причине недоступно, то это обеспечивает альтернативный метод, без перезагрузки, который является почти таким же быстрым и простым.
Адриан Гюнтер