plik / etc / sudoers jest uszkodzony i nie mogę uruchomić „pkexec visudo” na SSH

14

Postępując zgodnie z instrukcją tutaj otrzymuję:

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.

Robię to przez ssh, ponieważ okno, na którym to robię, jest używane jako serwer muzyczny bez ekranu i jest raczej niedostępny. Stało się tak, kiedy zaktualizowałem system Ubuntu 14.04 do 16.04. Próbowałem skopiować plik sudoers z innej niedawnej instalacji 16.04, ale nie mogę tego zrobić z powodu pliku 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

Czy powinienem wziąć pudełko ze strychu i spróbować, pkexec visudoczy coś jest nie tak?

Thomas Ulrich Christiansen
źródło
AFAIK pkexectylko pozwala to na lokalnym użytkownik (nie użytkownika SSH zdalny) - tak więc powinien działać ze strychu
steeldriver
Zdobądź pudełko lub napęd, zamontuj je na innym komputerze i edytuj sudoersodpowiednio do potrzeb. Zależy od tego, co najłatwiejsze.
vidarlo,
@steeldriverIt Po prostu działało mi jako zdalny użytkownik. JFYI.
koder php

Odpowiedzi:

44

Natknąłem się na ten problem i przy pewnym kopaniu znalazłem działające rozwiązanie. Oryginalne rozwiązanie pochodzi z tego wydania github dla NixOS autorstwa EstalillaJ.

  1. Otwórz dwie sesje ssh na serwerze docelowym.
  2. W pierwszej sesji uzyskaj PID bash, uruchamiając:

    echo $$

  3. W drugiej sesji uruchom agenta uwierzytelniania za pomocą:

    pkttyagent --process (pid from step 2)

  4. W pierwszej sesji uruchom:

    pkexec visudo

  5. W drugiej sesji otrzymasz monit o hasło. visudo rozpocznie się w pierwszej sesji.

Satyen A.
źródło
5
Kurwa, stary, uratowałeś mi życie! dzięki: D
Roger Barretto
1
to szalone, działa idealnie! i nie ma potrzeby restartowania systemu
undefinedman
1
Dzięki tona, to naprawdę mnie uratowało! ⭑
Frederic
1
Uratowałem mój ** od ponownego uruchomienia serwera w celu przywrócenia, bardzo na zdrowie!
SergeantSerk
1
To po prostu niezwykły koleś! Chciałbym też móc ulubione odpowiedzi!
Adrian