Wie bearbeite ich eine ungültige sudoers-Datei? Der folgende Fehler wird ausgegeben, und ich kann ihn nicht erneut bearbeiten, um ihn zu beheben.
Folgendes passiert:
$ 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
Antworten:
Auf einem modernen Ubuntu-System (und vielen anderen GNU / Linux-Distributionen) ist das Beheben einer beschädigten
sudoers
Datei recht einfach und erfordert keinen Neustart, keine Live-CD oder keinen physischen Zugriff auf den Computer.Melden Sie sich dazu über SSH am Computer an und führen Sie den Befehl aus
pkexec visudo
. Wenn Sie physischen Zugriff auf den Computer haben, ist SSH nicht erforderlich. Öffnen Sie einfach ein Terminal-Fenster und führen Sie diesenpkexec
Befehl aus.Vorausgesetzt , dass Sie (oder einen anderen Benutzer) sind berechtigt , Programme laufen
root
mit PolicyKit können Sie Ihr Passwort eingeben, und dann wird es laufenvisudo
wieroot
, und Sie können Ihre beheben/etc/sudoers
.Wenn Sie eine der Konfigurationsdateien bearbeiten müssen
/etc/sudoers.d
(was in dieser Situation ungewöhnlich, aber möglich ist), verwenden Sie .pkexec visudo -f /etc/sudoers.d/filename
Wenn Sie in einer verwandten Situation zusätzliche Systemverwaltungsbefehle als root ausführen müssen, um das Problem zu beheben (in diesem Fall ebenfalls ungewöhnlich, in anderen Fällen jedoch häufig), können Sie eine interaktive Root-Shell mit starten
pkexec bash
. Im Allgemeinensudo
kannpkexec
stattdessen jeder nicht-grafische Befehl ausgeführt werden, mit dem Sie ausgeführt würden .(Wenn es mehr als ein Benutzerkonto auf dem System gibt, das zum Ausführen von Programmen wie
root
mit PolicyKit berechtigt ist , werden Sie bei einer dieser Aktionen aufgefordert, das gewünschte Konto auszuwählen, bevor Sie nach Ihrem Kennwort gefragt werden.)Wenn dies nicht funktioniert - zum Beispiel, wenn keine Benutzer berechtigt sind, Programme als Root über PolicyKit auszuführen -, booten Sie von einer Ubuntu Live-CD (wie die CD, die Sie wahrscheinlich zur Installation von Ubuntu verwendet haben) und hängen Sie das Dateisystem für das ein installiertes System. Sie können dies tun, indem Sie ausführen
sudo parted -l
, um Ihre Partitionen anzuzeigen - es gibt wahrscheinlich nur eine ext4-Partition, und das ist das Root-Dateisystem.Angenommen, das Root-Dateisystem des installierten Ubuntu-Systems befindet sich unter / dev / sda1. Dann könnten Sie es mit montieren
sudo mount /dev/sda1 /mnt
. Anschließend können Sie die sudoers-Datei des installierten Systems mit bearbeitensudo nano -w /mnt/etc/sudoers
. Oder, noch besser, Sie können es mit bearbeiten(Dies verhindert, dass Sie eine sudoers-Datei mit falscher Syntax speichern).
quelle
#include
Direktiven insudoers
Dateien speziell behandelt. die führende#
nicht dazu führt , den Rest der Zeile als Kommentar interpretiert werden, in diesem Fall. Wieman sudoers
gesagt: "Das Nummernzeichen ('#') gibt einen Kommentar an (es sei denn, es ist Teil einer # include-Direktive oder ..." Siehe auch visudo: #includedir sudoers.d (archiviert von lzone.de/ Blog )pkexec visudo
nach einem Passwort gefragt, das das korrekte Passwort nicht akzeptiert. Es wird der Fehler "AUTHENTICATION FAILED" ausgegeben.Verwenden
visudo
Sie diese Option immer , um Ihre sudoers-Datei zu bearbeiten, und bearbeiten Sie sie niemals direkt. Sie können es nur dann auf der Festplatte speichern, wenn es überprüft wird.quelle
Eintippen:
Ändern Sie dann die letzte Zeile
Zu:
Es sollte Ihr Problem lösen.
quelle
#
von#includedir
Syntaxfehlern verursacht, die#
zumindest unter Ubuntu 12.10 Teil der Direktive sind.Wenn jemand wie ich pkexec nicht installiert hatte oder vi, visudo, nano oder einen anderen Editor zum Ändern der sudoers-Datei nicht ausführen konnte, können Sie sicher sein, dass dieser Prozess ausgeführt wird.
Hängen Sie das Boot-Gerät für rw erneut ein und wenden Sie das Exec-Recht für den Benutzer an und bearbeiten Sie die Datei
behebe diesen Fehler und sei glücklich :)
quelle
visudo
stattdessen verwendennano /etc/sudoers
.Wenn Sie Ihre
sudoers
Datei durcheinander gebracht haben , müssen Sie:visudo
, repariere deine DateiQuelle: - http://mario.net.au/content/recover-etcsudoers-ubuntu-1204
quelle
Es ist nichts Falsches #include sudoer.d Entfernen von #include sudoer.d wird keinen Unterschied machen.
Stellen Sie jedoch sicher, dass Sie keine Syntaxfehler haben. Ich hatte das gleiche Problem, aber ich habe Stunden damit verbracht, es zu beheben und herauszufinden, dass es sich um Syntaxfehler handelt. Siehe Handbuch und korrigieren Sie sie.
Angenommen, Ihr Benutzername lautet: dolly Ich habe Folgendes verwendet, was falsch ist
korrekte Syntax ist
oder
hoffe das hilft
quelle
visudo
beim Bearbeiten dieser Dateien immer zu verwenden , wodurch sichergestellt wird, dass Sie keine Syntaxfehler haben, bevor die Datei geändert wird.visudo
dient nicht nur zum Bearbeiten/etc/sudoers
- es werden auch Dateien in erstellt und bearbeitet/etc/sudoers.d
. Es funktioniert auch mit jedem beliebigen Texteditor. Einzelheiten finden Sie auf der Manpage .thunderbird
, die ohnehin nie als Root ausgeführt werden sollte) dem Benutzer bei der Ausführung als Root den vollständigen Systemzugriff gewährt. Selbst scheinbar einfache Funktionen öffnen die Tür zum vollständigen Root-Zugriff. Zum Beispiel kann ein Benutzer, der ein Programm ausführen kann, das eine Datei an einem beliebigen Ort als root speichern kann, vollen Root-Zugriff erhalten (er kann seine eigenen installieren/etc/sudoers
, oder wenn Syntaxbeschränkungen dies verhindern, kann er seine eigenen installieren/etc/crontab
).Führen Sie den Wiederherstellungsmodus aus und geben Sie diesen ein
Nur die Gruppe und der Benutzer root sollten Leserechte haben
quelle
Sie können sich auch als root an einer
tty
Konsole mit Ctrl+ Fn( Fnvon 1 bis 6) anmelden und ausführenvisudo
.quelle
Sie können Ihren Boot-Eintrag auch in grub bearbeiten.
Starten Sie einfach Ihren PC neu und warten Sie, bis Grub angezeigt wird. Drücken Sie dann "e" im "Ubuntu" -Eintrag, um ihn zu bearbeiten.
Suchen Sie nach einer Zeile mit "linux =" oder "kernel =" und fügen Sie am Ende dieser Zeile einfach eine "single" hinzu.
Drücken Sie dann F10, um diesen vorübergehend geänderten Starteintrag zu starten. Dadurch erhalten Sie eine Shell (ohne GUI) mit Root-Rechten und Sie können die sudoers-Datei mit s.th. wie Nano / etc / sudoers zurück in seinen vorherigen Zustand.
Dann neu starten und fertig.
quelle
Machen Sie dann Ihre Fehler wieder rückgängig
quelle
visudo
muss als root ausgeführt werden. Wennsudo
es nicht funktioniert,pkexec
funktioniert es manchmal. Dies wird von meiner früheren Antwort abgedeckt ... aber es ist eine korrekte Antwort, dievisudo
an sich (wenn sie nicht als root ausgeführt wird) nicht funktioniert, und es kann sinnvoll sein, korrekte, kurze Antworten zu geben, auch wenn sich ihre Empfehlungen erheblich mit anderen Antworten überschneiden. Wenn man in den Wiederherstellungsmodus geht, ist das natürlich eine Root-Shell, die für Befehle wie weder notwendigsudo
nochvisudo
notwendig istpkexec
. Vielleicht meinen Sie das ...In Ubuntu 16.04, das auf einer VirtualBox läuft (sollte keinen Unterschied machen), haben die oben genannten Methoden bei mir nicht funktioniert (ungültige Zeile am Ende der Datei). Was hat funktioniert war:
su -
und geben Sie dann das Passwort Ihres eigenen Benutzernamens ein.root@ubuntu-xenial:~#
prompt enden , wenn das/etc/sudoers
nicht zu kaputt oder leer ist. Ich bin mir nicht sicher, was in diesem Fall passieren würde.visudo
die Datei einfach ausführen und reparieren.Ctrl + X
Sie aufgefordert, den geänderten Puffer zu speichern. Drücken SieY
undEnter
Falls Ihr
/etc/sudoers
leer ist oder etwas fehlt und Sie es bearbeiten können, dann ist hier der Inhalt von mir:quelle
Gute Praxis: ein Backup-Terminal-Fenster und dort ausführen
sudo su
. Führen Sie auf einem anderen Termianl visudo oder sudo vim / etc / sudoers aus. Wenn etwas schief geht, kehren Sie zu Terminal 1 zurück und reparieren Sie die Datei. Sie fragen sich vielleicht, warum nicht einfachsudo su
vorhervisudo
in einem Terminal laufen ? Dies funktioniert auch, birgt jedoch ein höheres Risiko, dass Sie das Terminal schließen, bevor Sie es wissen.quelle
Es gibt eine einfachere Lösung. Ohne Neustart, Wiederherstellungsmodus oder
pkgexec
(pkgexec
hat nicht funktioniert und ich habe keine Ahnung, warum oder wie ich es verwenden sollte) einfach Folgendes tun:Und dann einfach den Syntaxfehler beheben!
quelle