Файл / 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
Это просто замечательный чувак! Жаль, что я не мог любимые ответы тоже!
Адриан
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.