Fichier sudoers modifié et ne peut plus l'ouvrir; ne peut ouvrir aucun fichier en utilisant root

8

J'ai changé les paramètres du fichier sudoers en utilisant

sudo visudo 

et le gâché. Maintenant, lorsque j'essaie de le faire à nouveau ou d'ouvrir un fichier à l'aide de sudo, je ne peux plus l'ouvrir et je reçois ce message d'erreur:

>>> fichier sudoers: erreur de syntaxe, ligne 7 

Et maintenant?

Existe-t-il un moyen de résoudre ce problème (pour rétablir les paramètres) ou dois-je installer une nouvelle copie de Linux?

La raison pour laquelle j'ai obtenu tout cela est que j'ai appuyé sur "Q" alors qu'il me disait qu'il y avait une erreur, ce qui était très stupide de ma part.

Merci.

ÉDITER

Mon fichier sudoers n'est pas différent du fichier sudoers normal. Je viens d'ajouter la ligne timestamp_timeout = 0 dans ce fichier et tous ces problèmes sont survenus. J'ai fait ce que James a suggéré et j'ai même supprimé cette ligne (timestamp_timeout = 0). J'ai changé l'autorisation de fichier en 0440, ce qu'il a demandé, puis je démarre normalement. Ensuite, je reçois le même message d'erreur

sudoers file: syntax error, line 7 
sudo: parse error in /etc/sudoers near line 7
comme ci-dessus.

Qu'est-ce que je devrais faire maintenant ??

EDIT 2 résolu

C'est ce que j'ai fait:

  1. Démarrage à l'aide de livecd
  2. Supprimer l'ancien fichier sudoers
  3. J'ai créé un nouveau fichier sudoers et j'ai tout copié dans ce fichier, c'est-à-dire les paramètres de configuration minimum, que j'ai heureusement enregistrés dans un autre fichier
  4. Modification de l'autorisation de fichier en 0440
  5. Redémarrez à nouveau normalement à partir du disque dur

Vive !!

Karlo
la source
vous pouvez coller le contenu de votre fichier sudoers sur www.pastebin.com et laissez-nous jeter un œil, probablement le moyen le plus rapide.
Andrioid
Je rechercherais des # manquants dans les commentaires, des deux-points manquants, des signes égaux, des barres obliques inversées, etc.
Pause jusqu'à nouvel ordre.

Réponses:

8

En supposant que vous n'avez pas donné de mot de passe à l'utilisateur root, le moyen le plus simple de résoudre ce problème est d'utiliser un CD live tel que Knoppix . Démarrage du CD. Montez le disque local, modifiez le fichier, démontez le disque et redémarrez.

James
la source
6

Simple, démarrez l'ordinateur en « mode utilisateur unique » en procédant comme suit:

  1. Redémarrer
  2. Lorsque Grub démarre, appuyez sur ESC (ou échapper)
  3. Appuyez sur «e» pour modifier la ligne actuelle
  4. Ajoutez 'single' à la fin de la ligne contenant 'linux'
  5. Boot (appuyez sur b)

Cela démarrera l'ordinateur avec un seul utilisateur, root. De là, suivez ces étapes:

  1. / usr / bin / vim / etc / sudoers (ou utilisez nano, pourrait être plus facile pour vous) pour résoudre le problème
  2. Si vous n'êtes pas sûr du problème, essayez de copier l'exemple inclus de sudoers depuis "/ usr / share / doc / sudo / examples" (varie) et bien sûr ajoutez votre utilisateur là-bas.
  3. Enregistrez le fichier, quittez Vim
  4. Redémarrez, profitez-en!
Andrioid
la source
Je me demandais quand il demandait un mot de passe avant de donner le shell utilisateur unique?
James
Cette méthode ne fonctionne pas pour toutes les distributions. Comme il s'agit d'une porte dérobée bien connue, certaines distributions forcent une connexion avant d'arriver à une invite racine. On dirait que c'est le cas pour toi, James.
Télémaque le
Je ne savais pas que les distributions avaient commencé à faire ça, toujours travaillé pour moi dans les bons vieux jours Slackware
Andrioid
Vous devriez recommander l'utilisation de visudo sur vim: en.wikipedia.org/wiki/Visudo
3

L'idée de James d'utiliser un cd live (en supposant que le compte root n'est pas activé) est une bonne idée. J'ajouterais quelques points.

  • Tout d'abord, vous pourriez avoir de la chance et une sauvegarde du fichier / etc / sudoers a été automatiquement enregistrée lors de sa modification. Archivez / etc pour un fichier qui ressemble à ceci sudoers~ (vous pouvez accéder cdà ce répertoire et l'exécuter ls -A sans les privilèges root, même si vous ne pouvez pas lire ou modifier les fichiers en tant qu'utilisateur normal). Certains éditeurs créeront une telle sauvegarde le cas échéant possible, vous pouvez donc en avoir un sans l'avoir créé explicitement.
  • Deuxièmement, si vous ne savez pas comment modifier le fichier, vous pouvez envisager de le publier (ou la zone autour de la ligne 7) ici ou ailleurs. Bien que le fichier lui-même ait à voir avec la sécurité, il n'y a pas de mot de passe, donc il n'y a aucun mal immédiat à le publier.
  • Enfin, notez qu'un message d'erreur comme celui que vous avez vu ne signifie pas nécessairement que le problème lui-même est littéralement à la ligne 7. L'erreur peut être à la ligne 4, mais n'a été déclenchée, pour ainsi dire, qu'à la ligne 7.
Télémaque
la source
0

Essayez d'appuyer sur e pour modifier. Cela devrait vous permettre de modifier le fichier et de corriger les erreurs.

Torandi
la source
En appuyant sur «e» lorsque vous voyez l'erreur, une fois la modification terminée, vous reviendrez pour que vous puissiez corriger vos erreurs. Malheureusement, cela ne vous le mentionne pas explicitement.
0

Pour ceux d'entre nous qui n'ont pas de console ou d'accès local au serveur pour démarrer au niveau d'exécution 1 ou qui ont un jeu de racines (ou les informations d'identification / certificats disponibles), utilisez pkexec visudo ou pkexec vi / etc / sudoers, visudo est meilleur car il fait une vérification d'erreur sur le fichier.

anon
la source
Mais comment pouvez-vous pkexecfaire votre offre si vous ne connaissez pas le mot de passe root?
Scott