Ubuntu: borked mon fichier sudoers, comment puis-je le réparer?

11

J'étais en train de modifier mon /etc/sudoersfichier et je l'ai enregistré, mais il contient une erreur de syntaxe. Maintenant, je ne peux pas sudo vim /etc/sudoersparce que sudo pense que le fichier sudoers n'est pas valide.

Comment puis-je réparer cela?

fred basset
la source

Réponses:

6

Démarrez le système en mode unique, puis modifiez-le.

Ignacio Vazquez-Abrams
la source
Merci, mon Ubuntu fonctionne sous Virtualbox. Comment démarrer en mode mono-utilisateur?
fred basset
Je n'ai pas les options grub au moment du démarrage cependant, il démarre directement dans Ubuntu ...
Fred Basset
Essayez de maintenir <Ctrl> ou quelque chose.
Ignacio Vazquez-Abrams
1
@red basset: Au démarrage de la VM, appuyez plusieurs fois sur Esc, ce qui devrait vous faire tomber dans grub, puis sélectionnez l'option de mode de récupération.
user9517
21

Vous ne devez jamais modifier votre fichier sudoers directement. Utilisation visudo- il vous protégera de ces erreurs de syntaxe à l'avenir.

Pour récupérer de cette situation, démarrez en mode mono-utilisateur et modifiez le fichier ou démarrez à partir d'un livecd et faites de même.

EEAA
la source
Merci, je me demandais ce que visudo faisait différemment. Je dois maintenant trouver comment démarrer en mode mono-utilisateur. Mon Ubuntu fonctionne sous Virtualbox.
fred basset
1
visudo vous oblige à modifier une copie du fichier sudoers. Il ne remplacera le fichier sudoers que s'il est validé lors de son enregistrement. Il utilisera l'éditeur spécifié par votre variable EDITOR, vous pouvez donc utiliser votre éditeur préféré. Il peut également être utilisé en mode de vérification si vous avez modifié le fichier et que vous voulez vous assurer qu'il est toujours valide.
BillThor
2

Comme indiqué dans cette question similaire sur askubuntu , cela peut très bien fonctionner sans avoir à redémarrer en mode mono-utilisateur:

pkexec visudo
À M
la source
C'est de loin la façon la plus simple de le faire, si elle est disponible.
belacqua
1

Soit dit en passant, si vous avez le mot de passe root, connectez-vous simplement avec et définissez-le comme il était.

chmod 0440 / etc / sudoers

Cela vous évitera de démarrer en mode mono-utilisateur ou pire, de démarrer à partir d'un livecd.

Dans mon cas, je ne pouvais pas me permettre d'arrêter le serveur.

yaxzone
la source
1

Si Docker est installé et que votre utilisateur est membre du dockergroupe, vous pouvez facilement vous sortir de ce cornichon (et de quelques autres) sans redémarrer ou quoi que ce soit:

  1. $ docker run -it --rm -v '/etc/:/root/host.etc/' debian bash
  2. apt-get update && apt-get install [vim|nano|whatever]
  3. cd ~/host.etc/
  4. Réparer les fichiers problématiques
  5. exit
Adrian Günter
la source
Docker? Avez-vous vu Docker quelque part dans la question d'origine?
Deer Hunter
2
Comme la question ne spécifie rien sur l'environnement du demandeur et que c'est maintenant 2015, ce qui signifie que beaucoup de gens ont installé Docker, je ne comprends ni votre attitude envers moi ni votre mépris pour ma contribution. Il n'est pas du tout insondable que quelqu'un d'autre dans cette situation ait installé un logiciel qui, à ce jour, a été joué par 23,5 k personnes sur GitHub. S'il pkexecest également indisponible pour une raison quelconque, cela fournit une méthode alternative, sans redémarrage, qui est presque aussi rapide et simple.
Adrian Günter