Comment modifier un fichier sudoers invalide? Cela renvoie l'erreur ci-dessous et ne me permet pas de modifier à nouveau pour la réparer.
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
Réponses:
Sur un système Ubuntu moderne (et de nombreuses autres distributions GNU / Linux), réparer un
sudoers
fichier corrompu est en fait assez simple et ne nécessite pas de redémarrage, d’utilisation d’un CD live ou d’accès physique à la machine.Pour ce faire via SSH, connectez-vous à la machine et exécutez la commande
pkexec visudo
. Si vous avez un accès physique à la machine, SSH n'est pas nécessaire. ouvrez simplement une fenêtre de terminal et lancez cettepkexec
commande.En supposant que vous (ou un autre utilisateur) êtes autorisé à exécuter des programmes comme
root
avec PolicyKit, vous pouvez entrer votre mot de passe, puis il s'exécutera envisudo
tant queroot
, et vous pourrez y remédier/etc/sudoers
.Si vous avez besoin de modifier l'un des fichiers de configuration
/etc/sudoers.d
(ce qui est rare dans cette situation, mais possible), utilisez .pkexec visudo -f /etc/sudoers.d/filename
Si vous rencontrez une situation connexe dans laquelle vous devez exécuter des commandes d'administration système supplémentaires en tant que root pour résoudre le problème (également rare dans ce cas, mais commun dans d'autres), vous pouvez démarrer un shell racine interactif avec
pkexec bash
. De manière générale, toute commande non graphique que vous exécuteriezsudo
peut être exécutée à lapkexec
place.(S'il existe plus d'un compte utilisateur sur le système autorisé à exécuter des programmes comme
root
avec PolicyKit, il vous sera demandé de sélectionner celui que vous souhaitez utiliser avant de vous demander votre mot de passe.)Si cela ne fonctionne pas - par exemple, si aucun utilisateur n'est autorisé à exécuter des programmes en tant que root via PolicyKit - démarrez à partir d'un live CD Ubuntu (comme le CD que vous avez probablement utilisé pour installer Ubuntu) et montez le système de fichiers pour le système installé. Vous pouvez le faire en exécutant
sudo parted -l
pour afficher vos partitions - il n'y a probablement qu'une partition ext4, et c'est le système de fichiers racine.Supposons que le système de fichiers racine du système Ubuntu installé se trouve sur / dev / sda1. Ensuite, vous pouvez le monter avec
sudo mount /dev/sda1 /mnt
. Ensuite, vous pouvez éditer le fichier sudoers du système installé avecsudo nano -w /mnt/etc/sudoers
. Ou, mieux encore, vous pouvez le modifier avec(ce qui vous empêchera de sauvegarder un fichier sudoers avec une syntaxe incorrecte).
la source
#include
directives dans lessudoers
fichiers sont traitées spécialement; le début#
ne fait pas que le reste de la ligne soit interprété comme un commentaire, dans ce cas. Commeman sudoers
dit: "Le signe dièse ('#') est utilisé pour indiquer un commentaire (sauf s'il fait partie d'une directive #include ou si ..." Voir aussi visudo: #includedir sudoers.d (archivé de lzone.de/ blog )pkexec visudo
demande un mot de passe, qui n’accepte pas le mot de passe correct. Il génère une erreur "ÉCHEC AUTHENTIFICATION".Toujours utiliser
visudo
pour modifier votre fichier sudoers, ne le modifiez jamais directement vous-même. Cela vous empêchera de l'enregistrer sur le disque à moins qu'il ne soit validé.la source
Tapez:
Puis changez la dernière ligne
À:
Cela devrait résoudre votre problème.
la source
#
de liste des#includedir
causes d'erreur de syntaxe#
faisait partie de la directive, du moins sur Ubuntu 12.10.Si quelqu'un d'autre comme moi n'avait pas installé pkexec ou n'était pas capable d'exécuter vi, visudo, nano ou tout autre éditeur pour changer de fichier sudoers, vous pouvez être sûr de ce processus .. J'ai été enregistré avec ceci:
remonter le périphérique d’amorçage pour rw, appliquer un droit d’exécution correct pour l’utilisateur et modifier le fichier
corrige cette erreur et sois heureux :)
la source
visudo
plutôtnano /etc/sudoers
.Si vous avez foiré votre
sudoers
dossier, vous devrez:visudo
, réparer votre fichiersource: - http://mario.net.au/content/recover-etcsudoers-ubuntu-1204
la source
Il n'y a rien de mal #include sudoer.d supprimer #include sudoer.d ne fera aucune différence.
Mais assurez-vous de ne pas avoir d'erreur de syntaxe. J'ai eu le même problème, mais j'ai passé des heures à réparer et à comprendre qu'il s'agit d'erreurs de syntaxe. Reportez-vous au manuel et corrigez-le.
Par exemple, dites que votre nom d'utilisateur est: dolly j'ai utilisé après ce qui est faux
la syntaxe correcte est
ou
J'espère que cela t'aides
la source
visudo
lors de l’édition de ces fichiers, ce qui vous évite d’avoir des erreurs de syntaxe avant la modification du fichier.visudo
n’est pas uniquement destiné à l’édition -/etc/sudoers
il créera et modifiera également des fichiers/etc/sudoers.d
. Cela fonctionnera également avec l’éditeur de texte de votre choix. Voir la page de manuel pour plus de détails.thunderbird
, qui ne devrait jamais être exécutée en tant que root) donnera effectivement à l’utilisateur un accès complet au système lorsqu’elle sera exécutée en tant que root. Même une fonctionnalité apparemment simple ouvre la porte à un accès root complet. Par exemple, un utilisateur pouvant exécuter un programme pouvant enregistrer un fichier à un emplacement arbitraire en tant que root peut obtenir un accès root complet (il peut installer le vôtre/etc/sudoers
, ou si les limitations de syntaxe le permettent, il peut installer le vôtre/etc/crontab
).exécuter le mode de récupération puis tapez ce
seuls le groupe et l'utilisateur root doivent avoir lu privilège
la source
Vous pouvez également vous connecter en tant que root sur une
tty
console avec Ctrl+ Fn( Fnde 1 à 6) et exécutervisudo
.la source
Vous pouvez également modifier votre entrée de démarrage lorsque vous êtes dans grub.
Redémarrez simplement votre ordinateur et attendez que grub apparaisse. Puis appuyez sur "e" sur l'entrée "Ubuntu" pour le modifier.
Cherchez une ligne avec "linux =" ou "kernel =" et ajoutez simplement un "single" à la fin de cette ligne.
Appuyez ensuite sur F10 pour démarrer cette entrée de démarrage modifiée temporairement. Cela vous donnera un shell (sans interface graphique) avec les droits root et vous pourrez éditer le fichier sudoers avec s.th. comme nano / etc / sudoers à son état précédent.
Puis redémarrez et c'est fait.
la source
puis revenez sur vos erreurs
la source
visudo
doit être lancé en tant que root. Sisudo
ça ne marche pas,pkexec
ça marche parfois. Ceci est couvert par ma réponse précédente ... mais c'est une réponse correcte,visudo
elle ne fonctionnera pas en soi (si elle n'est pas exécutée en tant que root), et des réponses correctes et brèves peuvent être utiles, même lorsque leurs recommandations se chevauchent considérablement avec d'autres réponses. Bien sûr, si l’on passe en mode de récupération, il s’agit d’un shell root et nisudo
nivisudo
nécessaire pour des commandes commepkexec
. C'est peut-être ce que vous voulez dire ...Dans Ubuntu 16.04 s’exécutant sur une VirtualBox (cela ne devrait pas faire de différence), les méthodes ci-dessus ne fonctionnaient pas pour moi (ligne non valide à la fin du fichier). Quel était le travail était:
su -
, puis donnez le mot de passe de votre propre nom d'utilisateur.root@ubuntu-xenial:~#
prompt, si le/etc/sudoers
n'est pas trop cassé ou vide. Pas sûr de ce qui se passerait dans ce cas.visudo
et réparer le fichier.Ctrl + X
, vous serez invité à enregistrer le tampon modifié. PresseY
etEnter
Au cas où votre
/etc/sudoers
est vide ou manque quelque chose, et vous pouvez le modifier, alors voici le contenu du mien:la source
Bonne pratique: une fenêtre de terminal de sauvegarde et d’exécution
sudo su
. Sur un autre termianl, exécutez visudo ou sudo vim / etc / sudoers. Si quelque chose ne va pas, retournez à la première borne et corrigez le fichier. Vous pouvez demander, pourquoi ne pas simplement courirsudo su
avantvisudo
dans un terminal? Cela fonctionne aussi, mais vous avez plus de risques de fermer le terminal avant de le savoir.la source
Il y a une solution plus simple. Sans redémarrage, en mode de récupération ou
pkgexec
(pkgexec
cela ne fonctionne pas et je ne sais pas pourquoi ni comment je devrais l'utiliser), faites simplement:Et puis corrigez l'erreur de syntaxe!
la source