Frage Wie ändere ich eine ungültige '/ etc / sudoers' Datei?


Wie bearbeite ich eine ungültige sudoers Datei? Es wirft unter Fehler und es erlaubt mir nicht, erneut zu bearbeiten, um es zu beheben.

Hier ist was 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

206
2017-10-30 19:15


Ursprung


Eine große Frage in Anbetracht dieser Seite erzeugt diesen Fehler help.ubuntu.com/community/RootSudoTimeout


Antworten:


Auf einem modernen Ubuntu-System (und vielen anderen GNU / Linux-Distributionen), behoben sudoers Die Datei ist eigentlich recht einfach und erfordert keinen Neustart, eine Live-CD oder physischen Zugriff auf den Computer.

Um dies über SSH zu tun, melden Sie sich bei der Maschine 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 das aus pkexec Befehl.

Angenommen, Sie (oder ein anderer Benutzer) sind berechtigt, Programme als auszuführen root Mit PolicyKit können Sie Ihr Passwort eingeben und es wird ausgeführt visudo wie rootund du kannst deine reparieren /etc/sudoers.

Wenn Sie eine der Konfigurationsdateien in bearbeiten müssen /etc/sudoers.d (die in dieser Situation ungewöhnlich, aber möglich), verwenden pkexec visudo -f /etc/sudoers.d/Dateiname.

Wenn Sie eine ähnliche Situation haben, in der Sie zusätzliche Systemverwaltungsbefehle als root ausführen müssen, um das Problem zu beheben (in diesem Fall auch ungewöhnlich, in anderen Fällen jedoch üblich), können Sie eine interaktive root-Shell mit starten pkexec bash. Im Allgemeinen alle nicht-grafischen Befehle, mit denen Sie arbeiten würden sudo kann mit ausgeführt werden pkexec stattdessen.

(Wenn mehr als ein Benutzerkonto auf dem System vorhanden ist, das für die Ausführung von Programmen berechtigt ist root Mit PolicyKit werden Sie dann aufgefordert, das gewünschte zu wählen, bevor Sie nach Ihrem Passwort gefragt werden.)


Wenn das 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 mounten das Dateisystem für die installiertes System Sie können dies tun, indem Sie ausführen sudo parted -l um deine Partitionen zu sehen - es gibt wahrscheinlich nur eine ext4-Partition, und das ist das Root-Dateisystem.

Angenommen, das Root-Dateisystem des installierten Ubuntu-Systems befindet sich in / dev / sda1. Dann könntest du es mit montieren sudo mount /dev/sda1 /mnt. Dann können Sie die sudoers-Datei des installierten Systems mit bearbeiten sudo nano -w /mnt/etc/sudoers. Oder, noch besser, Sie können es mit bearbeiten

sudo visudo -f /mnt/etc/sudoers

(was verhindert, dass Sie eine sudoers-Datei mit falscher Syntax speichern).


317
2017-10-30 19:45



pkexec / usr / sbin / visudo hat an debian 7 gearbeitet - marinara
Können sie nicht einfach in den Wiederherstellungsmodus starten? - Seth♦
HEILIGE KUH! Danke vielmals! Sparte meinen Speck. Eine Datei wie vorgeschlagen in das Verzeichnis etc / sudoers.d / eingefügt. VERWENDUNG EINES REGELMÄßIGEN TEXT EDITORS (D-O-N-T__D-O__T-H-A-T !!!). Verloren alle Fähigkeit, erhöhte Privilegien zu tun, einschließlich der Bearbeitung der beleidigenden Datei. Dies half beim Bearbeiten der Datei. Seltsamerweise musste ich zuerst / etc / sudoers bearbeiten, dann fand er die Fehler in der anderen Datei und öffnete diese für mich. EVEN WEIRDER, die Direktive in der Datei / etc / sudoers 'inlcudedir /etc/sudoers.d' wurde auskommentiert und enthält sie immer noch. - Dennis
@Dennis Etwas verwirrend, #include Richtlinien in sudoers Dateien werden speziell behandelt; die Führung # In diesem Fall wird der Rest der Zeile nicht als Kommentar interpretiert. Wie man sudoers sagt: "Das Nummernzeichen ('#') wird verwendet, um einen Kommentar anzuzeigen (außer es ist Teil einer # include-Direktive oder es sei denn ..." Siehe auch visudo: #includedir sudoers.d (archiviert von lzone.de/blog). - Eliah Kagan
Mein Benutzer ist Sudoer, aber ich habe diesen Fehler: Fehler beim Ausführen des Befehls als anderer Benutzer: Nicht autorisiert - SuB


Verwenden Sie immer visudo um deine sudoers-Datei zu bearbeiten, editiere sie niemals direkt selbst. Es verhindert, dass Sie es auf dem Datenträger speichern, es sei denn, es wird überprüft.


44
2017-11-20 17:08



Rückblick ist 20/20 - code_monk
Es wird keine Katastrophe verhindern. Es ist leicht genug, um sich selbst abzulehnen. - Joshua
Kann visudo von scrypt verwendet werden? Wenn das so ist, wie? - Lukas
Ich habe keine visudo installiert. Also habe ich pkexec vim gemacht. Dann zeigt es die Liste der Benutzer an und fragt nach dem Passwort. Wenn ich ein Passwort einstelle, wird der Fehler "Fehler beim Ausführen des Befehls als anderer Benutzer: Nicht autorisiert" ausgegeben. Bitte helfen Sie - Shyamkkhadka


Eintippen:

pkexec visudo

Dann ändere die letzte Zeile

#includedir /etc/sudoers

Zu:

#includedir /etc/sudoers.d

Es sollte dein Problem lösen.


20
2018-02-21 18:23



Ich habe bemerkt, dass die Führung entfernt wurde # von #includedir verursacht Syntaxfehler, die # ist Teil der Richtlinie, zumindest auf Ubuntu 12.10. - SAFX
Das hat mir Kopfschmerzen erspart. Danke vielmals :) - Nitroware
Ich habe keine visudo installiert. Also habe ich pkexec vim gemacht. Dann zeigt es die Liste der Benutzer an und fragt nach dem Passwort. Wenn ich ein Passwort einstelle, wird der Fehler "Fehler beim Ausführen des Befehls als anderer Benutzer: Nicht autorisiert" ausgegeben. Bitte helfen Sie - Shyamkkhadka


wenn jemand wie ich es nicht getan hätte pkexec installiert, oder war nicht in der Lage, vi, visudo, nano oder einen anderen Editor zu laufen, um sudoers-Datei zu ändern, die Sie mit diesem Prozess sicher sein können .. Ich wurde mit diesem gespeichert:

  • neu starten
  • Halten Sie die Shift-Taste beim Booten gedrückt, um die Option für den Wiederherstellungsmodus zu aktivieren (geben Sie sie ein)
  • Geben Sie die Befehlszeile als root ein (vorletzte Option in meinem grub-Menü)
  • remount Boot-Gerät für rw, und wenden Sie exec direkt für Benutzer und Datei bearbeiten

    mount -n -o remount,rw /
    chmod u+x /etc/sudoers
    nano /etc/sudoers
    

repariere diesen Fehler und sei glücklich :)


10
2017-10-20 21:40



Während die von @ eliah-kagan vorgeschlagene pkexec-Lösung einfacher zu sein scheint, ist diese universeller. Auf meinem Rechner stellte sich heraus, dass kein pkexec installiert war und natürlich konnte ich es nicht installieren, da sudo apt-get install pkexec irgendwie nicht funktionierte. - running.t


Es gibt nichts falsch #include sudoer.d Das Entfernen von #include sudoer.d macht keinen Unterschied.

Bitte stellen Sie sicher, dass Sie keine Syntaxfehler haben. Ich hatte das gleiche Problem aber und verbrachte Stunden zu beheben und nur herausgefunden, dass sie Syntaxfehler sind. Beziehen Sie sich auf das Handbuch und machen Sie es richtig.

Beispielsweise Angenommen, Ihr Benutzername lautet: dolly Ich habe folgendes verwendet, was falsch ist

 dolly ALL = (ALL) ALL NO PASSWD: ALL

korrekte Syntax ist

dolly ALL = (ALL) ALL //give permission to everything, not good

oder

dolly ALL=(ALL) NOPASSWD:/usr/bin/thurderbird //good, give specific permission

hoffe das hilft


6
2017-07-02 23:15



Ein besserer Ansatz als sicherzustellen, dass Sie keine Syntaxfehler haben, ist immer zu verwenden visudo Wenn Sie diese Dateien bearbeiten, wird sichergestellt, dass Sie keine Syntaxfehler haben, bevor Sie die Datei ändern. visudo ist nicht nur zum bearbeiten /etc/sudoers- Es erstellt und bearbeitet Dateien in /etc/sudoers.d. Es funktioniert auch mit dem gewünschten Texteditor. Sehen die Manpage für Details. - Eliah Kagan
Bitte beachten Sie, dass dies nur für sehr einfache Befehle / Apps nützlich ist, da jede ausreichend komplexe App (einschließlich thunderbird, die sowieso niemals als root ausgeführt werden sollten), gibt dem Benutzer bei der Ausführung als root den vollen Systemzugriff. Selbst scheinbar einfache Funktionen öffnen die Tür zu einem vollständigen Root-Zugang. Zum Beispiel kann ein Benutzer, der ein Programm ausführen kann, das eine Datei an einem beliebigen Ort als root speichern kann, vollständigen Root-Zugriff erhalten (sie können ihre eigenen installieren) /etc/sudoersoder, falls Syntaxbeschränkungen dies verhindern, können sie ihre eigenen installieren /etc/crontab). - Eliah Kagan


Wenn Sie Ihre Sudoers-Datei vermasselt haben. Sie müssen:

  • Starten Sie den Wiederherstellungsmodus (klicken Sie während des Bootvorgangs auf Escape, wählen Sie auf dem Grub-Bildschirm die Option für den Wiederherstellungsmodus)
  • Wählen Sie die Option "Enable networking" (wenn Sie nicht Ihr Dateisystem wird als schreibgeschützt eingehangen werden. Wer wusste)
  • Wählen Sie die Option "Drop to root shell"
  • führe visudo aus, repariere deine Datei
  • Neustart mit normaler grub Option

Quelle :- http://mario.net.au/content/recover-etcsudoers-ubuntu-1204


5
2017-12-14 10:59



Hallo, entfernt es die iptables, Dateien des bestehenden Systems? - Shyamkkhadka


Führen Sie den Wiederherstellungsmodus aus und geben Sie diesen ein

chown -R Wurzel: root /etc/sudoers.d
chmod u = rwx, g = rx, o = rx / etc / sudoers.d/
chmod u = r, g = r, o = /etc/sudoers.d/

Nur die Gruppe und der Benutzer root sollten privelege gelesen haben


3
2017-11-20 17:11





Sie können Ihren Boot-Eintrag auch im grub bearbeiten.

Starten Sie Ihren PC einfach neu und warten Sie, bis grub angezeigt wird. Dann drücke "e" auf dem "Ubuntu" -Eintrag, um es zu bearbeiten.

Suchen Sie nach einer Zeile mit "linux =" oder "kernel =" und fügen Sie einfach ein "single" am Ende dieser Zeile hinzu.

Drücken Sie dann F10, um diesen temporär geänderten Boot-Eintrag zu starten. Dies gibt Ihnen eine Shell (ohne GUI) mit Root-Rechten und Sie können die sudoers-Datei mit s.th bearbeiten. wie nano / etc / sudoers zurück in den vorherigen Zustand.

Dann Neustart und es ist fertig.


2
2018-01-13 04:41





Sie können sich auch als root bei einem einloggen tty Konsole mit Strg+Fn (Fn von 1 bis 6) und rennen visudo.


2
2018-03-09 07:12





pkexec visudo

dann gib deine Fehler zurück


2
2018-01-01 08:23



nicht notwendig, pkexec zu verwenden - Braiam
@Braiam visudo muss als root ausgeführt werden. Ob sudo funktioniert nicht, pkexec manchmal. Dies ist abgedeckt durch meine frühere Antwort... aber es ist eine richtige Antwort, visudo allein (wenn nicht als root ausgeführt wird) wird nicht funktionieren, und es kann einen Wert in richtigen, kurzen Antworten geben, selbst wenn sich ihre Empfehlungen erheblich mit anderen Antworten überschneiden. Natürlich, wenn man in den Recovery-Modus geht, ist das eine Root-Shell und dann auch nicht sudo Noch visudo ist für Befehle wie erforderlich pkexec. Vielleicht meinst du das ... - Eliah Kagan


Ich habe den Fehler gefunden. Es ist in den letzten zwei Zeilen des Standards /etc/sudoers Datei. Entfernen Sie die folgenden Einträge am Ende der Datei / etc / sudoers mit visudo.

#includedir /etc/sudoers.d

0
2018-02-23 21:57



Das scheint eine verwandte, aber andere Situation als diese zu sein. In dieser Situation besteht das Problem nicht darin, dass fehlerhafte Dateien (oder falsche Berechtigungen) vorhanden sind /etc/sudoers.d, aber das /etc/sudoers war selbst korrupt. - Eliah Kagan