Файл / etc / sudoers поврежден, и я не могу запустить pkexec visudo через SSH

14

Следуя инструкции здесь я получаю:

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или здесь что-то не так?

Томас Ульрих Кристиансен
источник
AFAIK pkexecпозволяет это только локальному пользователю (не удаленному пользователю SSH) - так что да, он должен работать с чердака
steeldriver
Либо получите коробку, либо достаньте диск, установите его на другом компьютере и отредактируйте sudoersв соответствии с требованиями. Зависит от того, что проще всего.
Видарло
@steeldriverIt Это просто работало для меня как удаленного пользователя. JFYI.
php-кодер

Ответы:

44

Я тоже столкнулся с этой проблемой и, покопавшись, нашел рабочее решение. Оригинальное решение из этой проблемы Github для NixOS от EstalillaJ.

  1. Откройте две сессии ssh на целевом сервере.
  2. В первом сеансе получите PID bash, запустив:

    echo $$

  3. Во втором сеансе запустите агент аутентификации с помощью:

    pkttyagent --process (pid from step 2)

  4. Вернувшись в первый сеанс, запустите:

    pkexec visudo

  5. Во втором сеансе вы получите запрос пароля. Visudo начнется в первой сессии.

Сатьен А.
источник
5
Черт возьми, ты спас мне жизнь! спасибо: D
Роджер Барретто
1
это безумие, оно прекрасно работает! и не нужно перезагружать систему
undefinedman
1
Спасибо огромное, это действительно спасло меня! Fre
Фредерик
1
Спасло мое ** от перезагрузки сервера в рекавери, ура много!
SergeantSerk
1
Это просто замечательный чувак! Жаль, что я не мог любимые ответы тоже!
Адриан