Как мне отредактировать неверный файл sudoers? Выдает приведенную ниже ошибку и не позволяет мне снова редактировать, чтобы это исправить.
Вот что происходит:
$ sudo visudo
>>> /etc/sudoers: syntax error near line 28 <<<
sudo: parse error in /etc/sudoers near line 28
sudo: no valid sudoers sources found, quitting
Ответы:
В современной системе Ubuntu (и во многих других дистрибутивах GNU / Linux) исправление поврежденного
sudoers
файла на самом деле довольно простое и не требует перезагрузки, использования live CD или физического доступа к машине.Чтобы сделать это через SSH, войдите в систему и выполните команду
pkexec visudo
. Если у вас есть физический доступ к машине, SSH не нужен; просто откройте окно терминала и выполните этуpkexec
команду.Предполагая, что вы (или какой-либо другой пользователь) авторизованы для запуска программ, как
root
с PolicyKit, вы можете ввести свой пароль, а затем он будет работатьvisudo
какroot
, и вы можете исправить свой/etc/sudoers
.Если вам нужно отредактировать один из конфигурационных файлов
/etc/sudoers.d
(что необычно в этой ситуации, но возможно), используйте .pkexec visudo -f /etc/sudoers.d/filename
Если у вас есть связанная ситуация, когда вам нужно выполнить дополнительные команды системного администратора в качестве пользователя root для решения проблемы (также необычно в этом случае, но часто встречается в других), вы можете запустить интерактивную корневую оболочку с помощью
pkexec bash
. Вообще говоря, любая неграфическая команда, которую вы запускаете,sudo
может быть выполненаpkexec
вместо этого.(Если в системе несколько учетных записей пользователей, которым разрешено запускать программы, как
root
с PolicyKit, то для любого из этих действий вам будет предложено выбрать, какую из них вы хотите использовать, прежде чем запрашивать пароль.)Если это не работает - например, если нет пользователей, авторизованных для запуска программ с правами root с помощью PolicyKit, - загрузитесь с живого компакт-диска Ubuntu (например, с компакт-диска, который вы, вероятно, использовали для установки Ubuntu) и смонтируйте файловую систему для установленная система. Вы можете сделать это, запустив
sudo parted -l
для просмотра ваших разделов - вероятно, есть только один раздел ext4, и это корневая файловая система.Предположим, что корневая файловая система установленной системы Ubuntu находится в / dev / sda1. Тогда вы можете смонтировать его с
sudo mount /dev/sda1 /mnt
. Затем вы можете редактировать файл sudoers установленной системы с помощьюsudo nano -w /mnt/etc/sudoers
. Или, что еще лучше, вы можете отредактировать его с помощью(что не позволит вам сохранить файл sudoers с неверным синтаксисом).
источник
#include
директивы вsudoers
файлах обрабатываются специально; в этом случае ведущий#
не вызывает интерпретацию остальной части строки как комментария. Какman sudoers
говорится: «Знак фунта ('#') используется для обозначения комментария (если только он не является частью директивы #include или если ..." См. Также visudo: #includedir sudoers.d (заархивировано из lzone.de/). блог ).pkexec visudo
запрашивает пароль, который не принимает правильный пароль. Выдает ошибку «СБОЙ АУТЕНТИФИКАЦИИ».Всегда используйте
visudo
для редактирования файла sudoers, никогда не редактируйте его самостоятельно. Это не позволит вам сохранить его на диск, если он не проверен.источник
Печатать:
Затем измените последнюю строку
Для того, чтобы:
Это должно решить вашу проблему.
источник
#
строки#includedir
вызывает синтаксические ошибки,#
это часть директивы, по крайней мере, в Ubuntu 12.10.если у кого-то вроде меня не было установлено pkexec , или не удалось запустить vi, visudo, nano или любой другой редактор для изменения файла sudoers, вы можете быть уверены в этом процессе ... Я был сохранен с этим:
перемонтируйте загрузочное устройство для rw, примените право exec для пользователя и отредактируйте файл
исправить эту ошибку и быть счастливым :)
источник
visudo
вместо этогоnano /etc/sudoers
.Если вы испортили свой
sudoers
файл, вам необходимо:visudo
, исправить свой файлисточник: - http://mario.net.au/content/recover-etcsudoers-ubuntu-1204
источник
В этом нет ничего плохого #include sudoer.d удаление #include sudoer.d не будет иметь никакого значения.
Но, пожалуйста, убедитесь, что у вас нет синтаксических ошибок. У меня была та же проблема, но я потратил часы на ее устранение и просто понял, что это синтаксические ошибки. Обратитесь к руководству и сделайте их правильными.
Например, скажем, ваше имя пользователя: Долли Я использовал следующее, что неправильно
правильный синтаксис
или же
надеюсь это поможет
источник
visudo
при редактировании этих файлов, что гарантирует, что у вас не будет синтаксических ошибок, прежде чем он изменит файл.visudo
не только для редактирования/etc/sudoers
- он также будет создавать и редактировать файлы в/etc/sudoers.d
. Он также будет работать с любым текстовым редактором, который вы хотите. Смотрите man-страницу для деталей.thunderbird
, которое никогда не должно запускаться как root) эффективно предоставит пользователю полный доступ к системе при запуске от имени root. Даже, казалось бы, простая функциональность открывает двери для полного корневого доступа. Например, пользователь, который может запустить программу, которая может сохранить файл в произвольном месте в качестве пользователя root, может получить полный root-доступ (он может установить свой собственный root/etc/sudoers
или, если ограничения синтаксиса препятствуют этому, он может установить свой собственный/etc/crontab
).запустить режим восстановления, затем введите этот
только группа и пользователь root должны были прочитать privelege
источник
Вы также можете войти в систему как root на
tty
консоли с Ctrl+ Fn( Fnот 1 до 6) и запуститьvisudo
.источник
Вы также можете редактировать загрузочную запись, находясь в grub.
Просто перезагрузите компьютер и подождите, пока не появится grub. Затем нажмите «e» на записи «Ubuntu», чтобы отредактировать ее.
Найдите строку с «linux =» или «kernel =» и просто добавьте «single» в конец этой строки.
Затем нажмите F10, чтобы загрузить эту временно измененную загрузочную запись. Это даст вам оболочку (без графического интерфейса) с правами root, и вы можете редактировать файл sudoers с помощью s.th. как nano / etc / sudoers обратно в предыдущее состояние.
Затем перезагрузите компьютер и все готово.
источник
затем верните свои ошибки
источник
visudo
должен быть запущен от имени пользователя root. Еслиsudo
не работает,pkexec
иногда работает. Это покрыто моим предыдущим ответом ... но это правильный ответ,visudo
сам по себе (когда он не запускается от имени root) не сработает, и в правильных кратких ответах могут быть полезны значения, даже если их рекомендации значительно совпадают с другими ответами. Конечно, если один переходит в режим восстановления, это корневая оболочка , а затем ниsudo
ниvisudo
необходимо для команды типаpkexec
. Может быть, это то, что вы имеете в виду ...В Ubuntu 16.04, работающем на VirtualBox (не должно иметь значения), вышеупомянутые методы не работали для меня (недопустимая строка в конце файла). Что работало было:
su -
введите команду и введите свой собственный пароль.root@ubuntu-xenial:~#
подсказке, если/etc/sudoers
он не слишком сломан или пуст. Не уверен, что произойдет в этом случае.visudo
и исправить файл.Ctrl + X
и будет предложено сохранить измененный буфер. НажмитеY
иEnter
Если ваш файл
/etc/sudoers
пуст или что-то отсутствует, и вы можете его отредактировать, то вот мое содержимое:источник
Хорошая практика: резервное окно терминала и запуск
sudo su
там. На другом termianl запустите visudo или sudo vim / etc / sudoers. Если что-то пойдет не так, вернитесь к первому терминалу и исправьте файл. Вы можете спросить, почему бы просто не запуститьsudo su
раньшеvisudo
в одном терминале? Это также работает, но риск того, что вы закроете терминал, прежде чем вы это узнаете, выше.источник
Существует более простое решение. Без перезагрузки, режима восстановления или
pkgexec
(pkgexec
не работал и понятия не имею, почему или как мне его использовать), просто выполните:А затем просто исправьте синтаксическую ошибку!
источник