Вопрос: Как изменить недопустимый файл / 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

202
2017-10-30 19:15


Источник


Большой вопрос, рассматривающий эту страницу, создает эту ошибку help.ubuntu.com/community/RootSudoTimeout


Ответы:


На современной системе 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/имя файла,

Если у вас есть связанная с этим ситуация, когда вам необходимо выполнить дополнительные команды системного администрирования как 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 с неправильным синтаксисом).


311
2017-10-30 19:45



pkexec / usr / sbin / visudo работал над debian 7 - marinara
Не могли ли они просто загрузиться в режим восстановления? - Seth♦
СВЯТАЯ КОРОВА! Большое спасибо! Спасла мой бекон. Добавлен файл, как предлагается в каталог etc / sudoers.d /. ИСПОЛЬЗОВАНИЕ РЕГУЛЯРНОГО ТЕКСТОВОГО РЕДАКТОРА (D-O-N-T__D-O__T-H-A-T !!!). Потеряли все возможности делать повышенные привилегии, ВКЛЮЧАЯ, редактируя нарушительный файл. Это помогло отредактировать файл. Странно, однако, мне пришлось сначала отредактировать файл / etc / sudoers, затем он обнаружил ошибки в другом файле и открыл это для меня. EVEN WEIRDER, директива в файле / etc / sudoers 'inlcudedir /etc/sudoers.d' была закомментирована, и она по-прежнему включает ее. - Dennis
@Dennis Немного смутно, #include директив в sudoers файлы обрабатываются специально; ведущий # не приводит к тому, что остальная часть строки будет интерпретироваться как комментарий в этом случае. В виде man sudoers говорит: «Значок фунта ('#') используется для указания комментария (если он не является частью директивы #include или если ...» См. также visudo: #includedir sudoers.d (заархивировано из lzone.de/blog). - Eliah Kagan
Мой пользователь sudoer, но я получил эту ошибку: Ошибка выполнения команды как другого пользователя: не разрешено - SuB


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


42
2017-11-20 17:08



задним числом 20/20 - code_monk
Это не предотвратит катастрофу. Достаточно легко оправдать себя. - Joshua
Можно ли использовать scritps? Если да, то как? - Lukas
У меня нет visudo. Поэтому я сделал pkexec vim. Затем он отображает список пользователей и запрашивает пароль. Когда я предоставляю пароль, он выдает ошибку как «Ошибка выполнения команды как другого пользователя: не авторизован». Пожалуйста помоги - Shyamkkhadka


Печатать:

pkexec visudo

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

#includedir /etc/sudoers

Для того, чтобы:

#includedir /etc/sudoers.d

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


19
2018-02-21 18:23



Я заметил, что удаление ведущих # из #includedir вызывает синтаксические ошибки, # является частью директивы, по крайней мере, на Ubuntu 12.10. - SAFX
Это просто избавило меня от головной боли. Благодаря тонну :) - Nitroware
У меня нет visudo. Поэтому я сделал pkexec vim. Затем он отображает список пользователей и запрашивает пароль. Когда я предоставляю пароль, он выдает ошибку как «Ошибка выполнения команды как другого пользователя: не авторизован». Пожалуйста помоги - Shyamkkhadka


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

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

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

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


10
2017-10-20 21:40



Хотя решение pkexec, предложенное @ eliah-kagan, кажется более простым, оно более универсально. На моей машине оказалось, что нет pkexec, и, конечно, я не смог установить его, потому что sudo apt-get install pkexec как-то не работал. - running.t


Нет ничего плохого #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

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


5
2017-07-02 23:15



Лучший подход, отличный от того, чтобы убедиться, что у вас нет синтаксических ошибок, - это всегда использовать visudo при редактировании этих файлов, что гарантирует, что у вас нет синтаксических ошибок для вас, прежде чем он изменяет файл. visudo не только для редактирования /etc/sudoers--it также будет создавать и редактировать файлы в /etc/sudoers.d, Он также будет работать с любым текстовым редактором, который вы хотите. Видеть справочная страница для деталей. - Eliah Kagan
Что касается специального разрешения, обратите внимание, что это полезно только для очень простых команд / приложений, поскольку любое достаточно сложное приложение (в том числе thunderbird, который никогда не должен запускаться как root в любом случае) эффективно предоставит пользователю полный доступ к системе при запуске с правами root. Даже кажущаяся простая функциональность открывает дверь для полного доступа root. Например, пользователь, который может запускать программу, которая может сохранить файл в произвольном месте с правами пользователя root, может получить полный доступ к корневому каталогу (они могут устанавливать собственные /etc/sudoers, или если ограничения синтаксиса предотвращают это, они могут устанавливать свои собственные /etc/crontab). - Eliah Kagan


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

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

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


5
2017-12-14 10:59



Привет, удаляет ли iptables, файлы существующей системы? - Shyamkkhadka


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

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


3
2017-11-20 17:11





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

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

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

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

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


2
2018-01-13 04:41





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


2
2018-03-09 07:12