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

Как изменить недопустимый файл 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
200 голосов | спросил YumYumYum 30 +04002011-10-30T23:15:48+04:00312011bEurope/MoscowSun, 30 Oct 2011 23:15:48 +0400 2011, 23:15:48

11 ответов


310

В современной системе Ubuntu (и многих других дистрибутивах GNU /Linux) исправление поврежденного файла sudoers на самом деле довольно простое и не требует перезагрузки, с использованием живого компакт-диска или физического доступа к машине.

Для этого через 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 +04002011-10-30T23:45:31+04:00312011bEurope/MoscowSun, 30 Oct 2011 23:45:31 +0400 2011, 23:45:31
42

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

ответил Caesium 20 72011vEurope/Moscow11bEurope/MoscowSun, 20 Nov 2011 21:08:27 +0400 2011, 21:08:27
19

Введите

pkexec visudo

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

#includedir /etc/sudoers

To:

#includedir /etc/sudoers.d

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

ответил Andrej Burcev 21 FebruaryEurope/MoscowbThu, 21 Feb 2013 22:23:58 +0400000000pmThu, 21 Feb 2013 22:23:58 +040013 2013, 22:23:58
10

, если у кого-либо, подобного мне, не установлено 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 21 +04002014-10-21T01:40:54+04:00312014bEurope/MoscowTue, 21 Oct 2014 01:40:54 +0400 2014, 01:40:54
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 3 J000000Tuesday12 2012, 03:15:27
5

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

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

источник: - http://mario.net.au/content/recover -etcsudoers-убунту-1204

ответил streak 14 FriEurope/Moscow2012-12-14T14:59:51+04:00Europe/Moscow12bEurope/MoscowFri, 14 Dec 2012 14:59:51 +0400 2012, 14:59:51
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 72011vEurope/Moscow11bEurope/MoscowSun, 20 Nov 2011 21:11:25 +0400 2011, 21:11:25
2

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

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

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

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

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

ответил Markus Ressel 13 Jam1000000amSun, 13 Jan 2013 08:41:56 +040013 2013, 08:41:56
2

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

ответил magisterludi 9 MaramSat, 09 Mar 2013 11:12:23 +04002013-03-09T11:12:23+04:0011 2013, 11:12:23
2
pkexec visudo

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

ответил Bhavesh Gabani 1 Jpm1000000pmWed, 01 Jan 2014 12:23:13 +040014 2014, 12:23:13
0

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

#includedir /etc/sudoers.d
ответил George Van Tuyl 24 FebruaryEurope/MoscowbFri, 24 Feb 2012 01:57:11 +0400000000amFri, 24 Feb 2012 01:57:11 +040012 2012, 01:57:11

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132