Поврежденный /etc/sudoers - ошибка в синтаксисе
Так или иначе, когда-нибудь нам сужденно столкнуться с правкой файла /etc/sudoers ...и не всегда редактирование заканчивается успешно, если ты такой же "удачливый" гоу под спойлер
Обычная ситуация, вам нужно подредактировать права суперпользователя, в файле /etc/sudoers. Но никто не застрахован от ошибок, и я снова наступил на те же грабли спустя год, вместо команды sudo visudo я отредактировал файл с помощью стандартного sudo nano /etc/sudoers и после сохранения всех правок и попытке использовать права суперпользователя, система выдала ошибку:
>>> /etc/sudoers: syntax error near line 23 <<<
sudo: parse error in /etc/sudoers near line 23
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin
Синтаксис еррор, короче повредил синтаксис файла своими кривыми ручонками.
Есть достаточно тривиальный способ решения проблемы, использовать:
pkexec visudo
Пуфффф...И вопрос с редактированием /etc/sudoers решится сам собой. А если потребуется отредактировать файлы в директории /etc/sudoers.d/ то можно ввести:
pkexec visudo -f /etc/sudoers.d/<file_name>
ПРОФИТ!
Но в этот раз что-то пошло не так, и я получил в ответ:
==== AUTHENTICATING FOR org.freedesktop.policykit.exec ===
Authentication is needed to run '/usr/sbin/visudo' as the super user
Authenticating as: user,,, (name) Password: polkit-agent-helper-1:
error response to PolicyKit daemon: GDBus.Error:org.freedesktop.PolicyKit1.Error.Failed: No session for cookie
==== AUTHENTICATION FAILED ===
Error executing command as another user: Not authorized
This incident has been reported.
Интересная ситуация, чтобы редактировать sudoers мне нужны права суперпользователя, но получить я их могу, только "починив" файл sudoers - замкнутый круг. Но есть гениальный выход из этой ситуации:
Откройте два сеанса ssh к серваку (или работа в двух терминалах или две вкладки в терминале, я использую Guake Terminal ).
В первом сеансе получите PID bash:
echo $$
Во второй сессии запустите агент аутентификации с помощью:
#PID - полученный идентификатор процесса
pkttyagent --process PID
Вернувшись в первый сеанс, запустите:
pkexec visudo
На втором сеансе вы получите приглашение пароля:
==== AUTHENTICATING FOR org.freedesktop.policykit.exec ===
Для запуска приложения '/usr/sbin/visudo' от имени суперпользователя требуется аутентификация
Authenticating as: user,,, (name)
Password:
==== AUTHENTICATION COMPLETE ===
visudo запуститься в первой сессии.
Туда-сюда, туда-сюда и проблема решена! Ну и напоследок совет, при правках используйте sudo visudo, т.к. он проверяет синтаксис перед сохранением файла, и если что-то пойдет не так, то выдаст предупреждение:
>>> /etc/sudoers: syntax error near line 30 <<<
What now? #Что будем делать?
Options are:
(e)dit sudoers file again #снова редактировать
e(x)it without saving changes to sudoers file #выйти без сохранения
(Q)uit and save changes to sudoers file (DANGER!) #сохранить изменения (3,14здец!)
What now? x
Егор25.06.2024
Магия!!! Спасибо большое!!