Как изменить недопустимый файл «/ etc / sudoers»?

193

Как изменить недопустимый файл 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
    
задан YumYumYum 30.10.2011 в 20:15
источник

11 ответов

295

В современной системе 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, - затем загрузитесь с Live CD с Ubuntu (например, на CD, который вы, вероятно, использовали для установки Ubuntu), и смонтируйте файловую систему для установленной системы. Вы можете сделать это, запустив sudo parted -l для просмотра ваших разделов - есть, вероятно, только один раздел ext4, и это корневая файловая система.

Предположим, что установленная корневая файловая система системы Ubuntu включена / dev / sda1. Затем вы можете установить его с помощью sudo mount /dev/sda1 /mnt . Затем вы можете отредактировать файл sudoers установленной системы с sudo nano -w /mnt/etc/sudoers . Или, что еще лучше, вы можете редактировать его с помощью

sudo visudo -f /mnt/etc/sudoers

(что не позволит вам сохранить файл sudoers с неправильным синтаксисом).

    
ответ дан Eliah Kagan 30.10.2011 в 20:45
источник
37

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

    
ответ дан Caesium 20.11.2011 в 18:08
18

Введите

pkexec visudo

Затем измените последнюю строку

#includedir /etc/sudoers

To:

#includedir /etc/sudoers.d

Он должен решить вашу проблему.

    
ответ дан Andrej Burcev 21.02.2013 в 19:23
9

, если у кого-либо, подобного мне, не установлено pkexec , или он не смог запустить vi, visudo, nano или любой другой редактор, чтобы изменить файл sudoers, вы можете быть уверены в этом процессе. Я был сохранен с этим:

  • перезагрузка
  • удерживайте клавишу shift во время загрузки, чтобы иметь возможность для режима восстановления (введите его)
  • введите командную строку как root (вторая последняя опция в моем меню grub)
  • перезагрузить загрузочное устройство для rw и применить exec для пользователя и отредактировать файл

    mount -n -o remount,rw /
    chmod u+x /etc/sudoers
    nano /etc/sudoers
    

исправить эту ошибку и быть счастливой:)

    
ответ дан Kresimir Pendic 20.10.2014 в 23:40
5

Нет ничего плохого #include sudoer.d удаление #include sudoer.d не имеет никакого значения.

Но, пожалуйста, убедитесь, что у вас нет синтаксических ошибок. У меня была одна и та же проблема, но я потратил несколько часов на исправление и выяснил, что это синтаксические ошибки. Обратитесь к руководству и сделайте все правильно.

Например Скажите, что ваше имя пользователя: dolly Я использовал неправильное значение

 dolly ALL = (ALL) ALL NO PASSWD: ALL

правильный синтаксис

dolly ALL = (ALL) ALL //give permission to everything, not good

или

dolly ALL=(ALL) NOPASSWD:/usr/bin/thurderbird //good, give specific permission

надеюсь, что это поможет

    
ответ дан Thusitha Nuwan 03.07.2012 в 01:15
5

Если вы испортили свой файл sudoers. Вам нужно:

  • Перезагрузитесь в режим восстановления (удалите escape во время загрузки, выберите вариант режима восстановления на экране grub)
  • Выберите параметр «Включить сеть» (если вы не установили файловую систему как доступную только для чтения),
  • Выберите опцию «Drop to root shell».
  • запустить visudo, исправить файл
  • Перезагрузка с обычной опцией grub

источник: - Ссылка

    
ответ дан streak 14.12.2012 в 11:59
3

запустите режим восстановления, затем введите этот

chown -R root:root /etc/sudoers.d
chmod u=rwx,g=rx,o=rx /etc/sudoers.d/
chmod u=r,g=r,o= /etc/sudoers.d/*

только группа и корень пользователя должны читать privelege

    
ответ дан kosaidpo 20.11.2011 в 18:11
2

Вы также можете редактировать свою загрузочную запись в grub.

Просто перезагрузите компьютер и дождитесь появления grub. Затем нажмите «e» в записи «Ubuntu», чтобы отредактировать ее.

Найдите строку с «linux =» или «kernel =» и просто добавьте «single» в конец этой строки.

Затем нажмите F10, чтобы загрузить эту временно измененную загрузочную запись. Это даст вам оболочку (без GUI) с правами root, и вы можете редактировать файл sudoers с помощью s.th. например nano / etc / sudoers, в предыдущее состояние.

Затем перезагрузитесь и сделайте это.

    
ответ дан Markus Ressel 13.01.2013 в 05:41
2

Вы также можете войти в систему как root на консоли tty с Ctrl + Fn ( Fn от 1 до 6) и запустить visudo .     

ответ дан magisterludi 09.03.2013 в 08:12
2
pkexec visudo

затем верните свои ошибки

    
ответ дан Bhavesh Gabani 01.01.2014 в 09:23
0

Я нашел ошибку. Он находится в последних двух строках файла /etc/sudoers по умолчанию. Удалите следующие записи из файла / etc / sudoers с помощью visudo .

#includedir /etc/sudoers.d
    
ответ дан George Van Tuyl 23.02.2012 в 22:57