web-dev-qa-db-fra.com

Le fichier / etc / sudoers est corrompu et je ne peux pas exécuter "pkexec visudo" sur SSH

En suivant les instructions ici je reçois:

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.

Je le fais via ssh car la boîte sur laquelle je fais ceci est utilisée comme serveur de musique sans écran et est plutôt inaccessible. Cela s'est produit lorsque j'ai mis à niveau d'Ubuntu 14.04 à 16.04. J'ai essayé de copier un fichier sudoers à partir d'une autre installation récente du 16.04, mais je ne peux pas le faire à cause du fichier 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

Dois-je aller chercher la boîte dans le grenier et essayer pkexec visudo ou quelque chose d'autre ne va pas ici?

J'ai rencontré ce problème également et, après quelques recherches, j'ai trouvé une solution efficace. La solution originale provient de ce problème de github pour NixOS de EstalillaJ.

  1. Ouvrez deux sessions SSH sur le serveur cible.
  2. Dans la première session, obtenez le PID de bash en lançant:

    echo $$

  3. Dans la deuxième session, démarrez l'agent d'authentification avec:

    pkttyagent --process (pid from step 2)

  4. De retour dans la première session, lancez:

    pkexec visudo

  5. Lors de la deuxième session, vous recevrez l'invite du mot de passe. visudo commencera à la première session.

28
Satyen A.