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


11

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

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


Ответы:


6

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


Спасибо, моя Ubuntu работает под Virtualbox. Как мне загрузиться в однопользовательском режиме?
Фред Бассет


Однако я не могу получить параметры grub во время загрузки, он загружается прямо в Ubuntu ...
Фред Бассет,

Попробуйте удерживать <Ctrl> или что-то еще.
Игнасио Васкес-Абрамс

1
@red basset: Когда vm запускается, несколько раз нажмите клавишу Esc, после чего вы попадете в grub, затем выберите опцию режима восстановления.
user9517

21

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

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


Спасибо, мне было интересно, что Visudo сделал по-другому. Мне нужно сейчас разобраться, как загрузиться в однопользовательском режиме. Моя Ubuntu работает под Virtualbox.
Фред Бассет

1
visudo заставляет вас редактировать копию файла sudoers. Он заменит файл sudoers только в том случае, если он проверяется при его сохранении. Он будет использовать редактор, указанный в переменной EDITOR, поэтому вы можете использовать предпочитаемый вами редактор. Его также можно использовать в режиме проверки, если вы отредактировали файл и хотите убедиться, что он все еще действителен.
BillThor


1

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

chmod 0440 / etc / sudoers

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

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


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также по какой-либо причине недоступно, то это обеспечивает альтернативный метод, без перезагрузки, который является почти таким же быстрым и простым.
Адриан Гюнтер
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.