При попытке настроить срабатывание одного из скриптов, который обращается к системной функции от имени обычного пользователя системы, возникла необходимость внести изменения в полномочия пользователя через файл /etc/sudoers
В найденных на эту тему материалах говорится, что редактирование данного файла необходимо производить через команду visudo. Хотелось бы, конечно, чтобы авторы таких материалов уточняли, что команду следует запускать от имени суперпользователя, так как при вводе просто visudo в терминале появляется:
~ $ visudo
visudo: /etc/sudoers: Отказано в доступе
После ввода "правильной" команды открывается окно редактора nano с загруженным в него содержанием файла sudoers.
Авторы публикаций поясняют, что при таком способе будет проверяться правильность синтаксиса вносимых в него изменений.
Вследствие отсутствия необходимости использования редактора nano мне не было известно назначение клавиш, с помощью которых производится запись в файл вносимых изменений:
И только в дальнейшем после "подсказки друга" мне стало известно, что символ ^ соответствует клавише Ctrl.
Поэтому редактирование мной файла sudoers производилось более привычным способом – sudo gedit /etc/sudoers
Увы, никто не застрахован от ошибок и после очередного эксперимента с редактированием содержания этого файла система мне выдала сообщение:
>>> /etc/sudoers: ошибка синтаксиса near line 21 <<<
sudo: parse error in /etc/sudoers near line 21
sudo: no valid sudoers sources found, quitting
sudo: не удаётся инициализировать модуль политики
Следствием этого стало невозможным использование любых начинающихся с sudo команд, а также символ ошибки в значке, отображающем доступность обновлений системы
К счастью, "лечение" сломанного механизма сводится к выполнению одной команды:
pkexec visudo
После ввода пароля суперпользователя будет открыт тот же редактор nano с загруженным в него содержанием файла sudoers.
Соотнесите содержание своего файла с содержанием по умолчанию (без строк, начинающихся с символа комментария #):
root ALL=(ALL:ALL) ALL
%admin ALL=(ALL) ALL
%sudo ALL=(ALL:ALL) ALL
Исправьте свои "неверные" записи или приведите файл к исходного значению, после чего нажмите на комбинацию клавиш Ctrl и o. На последующий запрос нажмите y:
Далее, используя клавишу Backspace, удалите в наименовании файла .tmp и на вопрос о перезаписи существующего файла снова нажмите клавишу y:
Как видите, нет необходимости в переустановке системы. К тому же Вы будете избавлены от боязни дальнейшего редактирования файла sudoers, так как всегда сможете вернуться к корректному состоянию его содержания.
а если так:
ОтветитьУдалитьuser@mail:~$ pkexec visudo
==== AUTHENTICATING FOR org.freedesktop.policykit.exec ===
Authentication is needed to run `/usr/sbin/visudo' as the super user
Authenticating as: ,,, (user)
Password:
polkit-agent-helper-1: error response to PolicyKit daemon: GDBus.Error:org.freeesktop.PolicyKit1.Error.Failed: No session for cookie
==== AUTHENTICATION FAILED ===
Error executing command as another user: Not authorized
This incident has been reported.
См комментарий ниже.
Удалить1. открыть две сессии ssh на целевом сервере (там где испортил sudoers)
ОтветитьУдалить2. в первой сессии получить PID bash, исполнив (echo $$)
3. во второй сессии запустить authentication agent (pkttyagent --process (pid из п.2)
4. вернуться в первую сессию и там запустить pkexec visudo
Спасибо большое, ты просто спас меня!
УдалитьСпасибо, помогли!
ОтветитьУдалитьПомогло! Спасибо!
ОтветитьУдалитьИ мне помогло! Спасибо большое, а то уже собиралась Убунту сносить
ОтветитьУдалитьЧто делать если так?
ОтветитьУдалитьCannot run program visudo: no such file directory