Следуя инструкции здесь я получаю:
pkexec visudo
==== AUTHENTICATING FOR org.freedesktop.policykit.exec ===
Authentication is needed to run `/usr/sbin/visudo' as the super user
Authenticating as: Thomas,,, (tuc) 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.
Я делаю это через ssh, так как окно, на котором я это делаю, используется как музыкальный сервер без экрана и довольно недоступно. Это произошло, когда я обновил Ubuntu 14.04 до 16.04. Я попытался скопировать файл sudoers из другой недавней установки 16.04, но я не могу этого сделать из-за файла sudoers:
sudo mv ~/gyrf sudoers
>> /etc/sudoers: syntax error near line 36 <<<
>> /etc/sudoers: syntax error near line 37 <<<
>> /etc/sudoers: syntax error near line 38 <<<
>> /etc/sudoers: syntax error near line 39 <<<
>> /etc/sudoers: syntax error near line 40 <<<
>> /etc/sudoers: syntax error near line 41 <<<
>> /etc/sudoers: syntax error near line 42 <<<
>> /etc/sudoers: syntax error near line 43 <<<
>> /etc/sudoers: syntax error near line 44 <<<
>> /etc/sudoers: syntax error near line 45 <<<
>> /etc/sudoers: syntax error near line 46 <<<
>> /etc/sudoers: syntax error near line 47 <<<
>> /etc/sudoers: syntax error near line 48 <<<
>> /etc/sudoers: syntax error near line 49 <<<
sudo: parse error in /etc/sudoers near line 36
sudo: no valid sudoers sources found, quitting sudo: unable to initialize policy plugin
Должен ли я взять коробку с чердака и попробовать pkexec visudo
или здесь что-то не так?
pkexec
позволяет это только локальному пользователю (не удаленному пользователю SSH) - так что да, он должен работать с чердакаsudoers
в соответствии с требованиями. Зависит от того, что проще всего.Ответы:
Я тоже столкнулся с этой проблемой и, покопавшись, нашел рабочее решение. Оригинальное решение из этой проблемы Github для NixOS от EstalillaJ.
В первом сеансе получите PID bash, запустив:
echo $$
Во втором сеансе запустите агент аутентификации с помощью:
pkttyagent --process (pid from step 2)
Вернувшись в первый сеанс, запустите:
pkexec visudo
Во втором сеансе вы получите запрос пароля. Visudo начнется в первой сессии.
источник