291 votes

Comment modifier un fichier '/etc/sudoers' invalide ?

Comment modifier un fichier sudoers invalide ? L'erreur suivante apparaît et je ne peux pas l'éditer à nouveau pour la corriger.

Voici ce qui se passe :

$ sudo visudo
>>> /etc/sudoers: syntax error near line 28 <<<
sudo: parse error in /etc/sudoers near line 28
sudo: no valid sudoers sources found, quitting

1voto

Markus Ressel Points 11

Vous pouvez modifier votre entrée de démarrage tout en étant dans Grub aussi bien.

Il suffit de redémarrer votre PC, et d'attendre que Grub s'affiche. Appuyez ensuite sur "e" sur l'entrée "Ubuntu" pour la modifier.

Recherchez une ligne avec "linux = " ou "kernel = " et ajoutez simplement un "single" à la fin de cette ligne.

Ensuite, appuyez sur F10 pour démarrer cette entrée de démarrage temporairement modifiée. Cela vous donnera un Shell (sans interface graphique) avec les droits de root et vous pourrez éditer le fichier sudoers avec s.th. comme nano /etc/sudoers pour revenir à son état précédent.

Puis redémarrez et c'est fait.

1voto

Juha Untinen Points 133

Dans Ubuntu 16.04 fonctionnant sur une VirtualBox (cela ne devrait pas faire de différence), les méthodes ci-dessus n'ont pas fonctionné pour moi (ligne invalide à la fin du fichier). Ce qui a fonctionné est :

  1. Redémarrer la VirtualBox
  2. Laissez-le démarrer normalement, jusqu'à ce qu'il vous demande votre nom d'utilisateur et votre mot de passe dans la console.
  3. Connectez-vous normalement avec votre nom d'utilisateur
  4. Ensuite, lorsque vous vous retrouvez dans la console (à condition que votre boîte ne démarre pas dans une interface graphique), donnez simplement la commande su - puis donnez le mot de passe de votre propre nom d'utilisateur.
  5. Il devrait maintenant se retrouver dans root@ubuntu-xenial:~# si le /etc/sudoers n'est pas trop cassé ou vide. Je ne sais pas ce qui se passerait dans ce cas.
  6. Ensuite, vous pouvez simplement exécuter visudo et réparer le fichier.
  7. Puis Ctrl + X et il vous sera demandé de sauvegarder la mémoire tampon modifiée. Appuyez sur Y y Enter
  8. Redémarrez la boîte et cela devrait fonctionner maintenant.

Au cas où votre /etc/sudoers est vide ou manque quelque chose, et que vous pouvez le modifier, alors voici le contenu du mien :

Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

root ALL=(ALL:ALL) ALL

%admin ALL=(ALL) ALL

%sudo ALL=(ALL:ALL) ALL

1voto

biocyberman Points 748

Bonne pratique : une fenêtre de terminal de secours et exécuter sudo su là. Sur un autre termianl, exécutez visudo ou sudo vim /etc/sudoers. Si quelque chose ne va pas, retournez au premier terminal et corrigez le fichier. Vous pouvez vous demander pourquoi ne pas simplement exécuter sudo su avant visudo dans un seul terminal ? Cela fonctionne aussi bien, mais le risque est plus élevé que vous fermiez le terminal avant même de vous en rendre compte.

1voto

rien333 Points 224

Il existe une solution beaucoup plus simple. Sans redémarrage, mode de récupération, ou pkgexec ( pkgexec n'a pas fonctionné et je n'ai aucune idée du pourquoi ou du comment je devrais l'utiliser), il suffit de le faire :

su root # switch to root user, without using sudo (which is broken at this point)
your_favorite_editor /etc/sudoers # e.g. nano

Et ensuite, il suffit de corriger l'erreur de syntaxe !

1voto

Jack Hamilton Points 21

Ajouté pour la nouvelle vague de VMs Linux basées sur WSL. Lorsque je me suis enfermé hors de ma VM WSL2 basée sur Debian (Pengwin) qui n'avait pas pkexec et le mot de passe root n'était pas défini, voici ce que j'ai trouvé pour résoudre le problème :

  • Ouvrez un Windows Powershell en tant qu'administrateur (cliquez à droite sur "Exécuter en tant qu'administrateur").
  • Définissez l'utilisateur par défaut sur la VM comme étant root (car il ne demandera pas de mot de passe) par ce mode d'emploi :

    <distro.exe> config --default-user root

Ejemplo:

ubuntu1804.exe config --default-user root 

o

pengwin.exe config --default-user root
  • Relancez votre distro.
  • Vous devriez maintenant être root et vous pouvez aller régler votre problème de sudo.
  • Répétez le processus pour que l'utilisateur par défaut redevienne normal.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X