Wie kann ich eine ungültige Datei / etc / sudoers beheben, wenn der Root-Zugriff deaktiviert ist?

9478
3cheesewheel

Dies betrifft mein Raspberry Pi, auf dem ich Raspbmc installiert habe. Mir ist klar, dass es eine Raspberry Pi StackExchange-Site gibt, aber ich dachte mir, dass ich dieses Problem hier vielleicht noch mehr sehen könnte.

Das Problem ist, dass ich /etc/sudoersin einem Versuch geändert habe NOPASSWD, einem der Benutzer Berechtigungen zu erteilen, aber ich schätze, irgendwann auf dem Weg, an dem ich die Datei erstellt habe, und jetzt bekomme ich die folgende Fehlermeldung, wenn ich mich anmelde / versuche zu verwenden sudo:

sudo: parse error in /etc/sudoers near line 19 sudo: no valid sudoers sources found, quitting sudo: unable to initialize policy plugin 

Ich habe ähnliche Beiträge auf Ubuntu und StackOverflow gefunden, aber das Problem ist, dass für alle Antworten ein Root-Passwort erforderlich ist und das Root-Konto standardmäßig auf Raspbmc deaktiviert ist. Ich hatte es offensichtlich nicht aktiviert, bevor ich etwas ändern wollte /etc/sudoers.

Meine Frage ist also: Wie kann ich die Datei reparieren, wenn der Root-Zugriff nicht aktiviert ist? Ist es überhaupt möglich?

0
Vergessen Sie nicht, "visudo" nächstes Mal für die Bearbeitung zu verwenden. slhck vor 10 Jahren 2

3 Antworten auf die Frage

6
Lawrence

Sie sollten den Pi weiterhin im Einzelbenutzermodus starten können, um Zugriff auf root zu erhalten.

Verwenden Sie einen anderen Computer, ändern Sie ihn cmdline.txtund fügen Sie ihn singleam Ende der Zeile ein.
Wenn Sie das Pi von der SD-Karte aus starten, sollten Sie automatisch eine Root-Eingabeaufforderung erhalten, in der Sie das Update durchführen können/etc/sudoers

Leider brauche ich root, um `/ boot / cmdline.txt` ändern zu können :( 3cheesewheel vor 10 Jahren 0
Daher * mit einem anderen Computer * Lawrence vor 10 Jahren 2
Die Festplatte von Raspberry Pi ist nur eine SD-Karte. Sie können sie also über einen Kartenleser an einen anderen Computer anschließen und dort alle Änderungen vornehmen, ohne Pi im Single-Modus zu starten. VL-80 vor 10 Jahren 1
@Nikolay Angenommen, auf dem OP ist ein anderer Computer mit Linux installiert oder natürlich eine Live Distro. Lawrence vor 10 Jahren 0
(Oder Windows / OSX mit VirtualBox; die "USB-Freigabe" -Funktion funktioniert gut.) Obwohl "single" auch nach dem Root-Kennwort fragt, kann es zwar den Zugriff auf ein gesperrtes oder abgelaufenes Root-Konto * zulassen, der Zugriff kann jedoch weiterhin verweigert werden Gelegentlich ist das Editieren von `/ etc / sudoers` direkt aus dem Live-System etwas einfacher und schneller. grawity vor 10 Jahren 0
Mein Fehler, ich habe das irgendwie als "Verwenden eines anderen Computers" in SSH interpretiert, anstatt die SD-Karte in einen anderen Computer einzulegen und die Datei dort zu ändern. Vielen Dank! :) 3cheesewheel vor 10 Jahren 0
Ich habe es versucht; Ich konnte `cmdline.txt` ändern, aber das bootete nicht automatisch zu einem Root-Prompt. Ich habe beim Booten versucht, die Umschalttaste und die Esc-Taste gedrückt zu halten, aber keine dieser Tasten funktionierte (und dies waren die einzigen beiden Tasten, die ich beim Googeln finden konnte, die dazu beitrugen, eine Eingabeaufforderung zu starten). Hat jemand Erfolg mit dieser Antwort? 3cheesewheel vor 10 Jahren 0
Verwenden Sie RaspBMC mit NOOBS oder verwenden Sie rohe RaspBMC? Lawrence vor 10 Jahren 0
0
Dylan

Die einfachste Lösung ist, ein anderes Betriebssystem auf einer LiveDVD oder LiveUSB (im Idealfall ein LiveUSB und im Idealfall ein Linux-Betriebssystem) zu booten, die Disk zu mounten und die Datei manuell zu ändern. Ich habe ähnliche Dinge schon einmal gemacht und es auf diese Weise behoben. Alle Ihre Dateien sind im Live-System sichtbar und können bearbeitet werden. Sofern Sie das Laufwerk nicht verschlüsselt haben. das macht die Sache etwas komplizierter.

Lassen Sie mich wissen, wenn Sie Fragen haben, und ich bearbeite diese Antwort. Ich bin mir nicht sicher, wie gut Sie das Einrichten eines Live-USB-Geräts tun könnten, aber es ist nicht sehr schwer.

0
Daniel Giljam

Nach zwei Tagen Recherche und Surfen im Internet habe ich endlich eine Lösung gefunden und konnte mein eigenes Raspberry Pi-System speichern (ich muss die SD-Karte nicht neu formatieren und von vorne anfangen)!

HINWEIS: Diese Antwort ist ziemlich lang. Wenn Sie schnell zur aktuellen Lösung gelangen möchten, habe ich einen Header hinzugefügt, zu dem Sie nach unten scrollen können. Ich empfehle Ihnen jedoch, die gesamte Antwort zu lesen, da dies Einblick in die Unterschiede zwischen der Raspbian-Distribution und anderen Linux-Distributionen sowie Klarheit darüber geben kann, warum viele der vorgeschlagenen Lösungen, die Sie im Internet finden, möglicherweise nicht auf Ihrem Pi funktionieren .

Normalerweise ist es in einer Linux-Umgebung der schnellste Weg, den kaputten Sudo ohne Neustart zu reparieren, indem PolicyKit oder der pkexec-command wie folgt verwendet wird :

pkexec visudo 

Aber auf dem Pi funktioniert es höchstwahrscheinlich nicht, es fragt nach dem root-Passwort, aber es wird kein Passwort akzeptiert. (Ich meine, haben Sie überhaupt ein Root-Passwort festgelegt? Warten Sie, dann? Dann springen Sie zum Sternchen *.)

Einige Linux-Distributionen, z. B. Ubuntu, verfügen über einen Wiederherstellungsmodus, auf den durch Drücken der Umschalttaste während des Startvorgangs zugegriffen werden kann. Sie bieten eine benutzerfreundliche Oberfläche und ermöglichen das Ablegen in eine Root-Shell-Eingabeaufforderung, auf die zugegriffen werden kann Reparieren Sie die defekten Dateien. Die Raspbian-Linux-Distribution von Pi verfügt nicht über einen solchen Wiederherstellungsmodus, sodass die Lösung für uns keine Lösung ist. Der Pi fordert Sie jedoch beim Booten auf, die Shift-Taste gedrückt zu halten, um in einen Wiederherstellungsmodus zu gelangen. Wenn Sie den Wiederherstellungsmodus des Pi oder den NOOBS-Dialog aufrufen, sind wir sicherlich auf dem richtigen Weg, den kaputten Sudo auf unserem Pi zu reparieren.

Eine andere übliche Methode zum Reparieren von Sudo ist das Booten in den Einzelbenutzermodus, der Sie zu einer Root-Shell-Eingabeaufforderung führt. Auf diese Weise fügen Sie das Wort singleam Ende der cmdline.txt-Datei in der Boot-Partition des Systems hinzu. Beim nächsten Systemstart wird das System im Einzelbenutzermodus gestartet.

Wir können diese Lösung problemlos auf unserem Pi ausprobieren, da der Wiederherstellungsmodus von Pi oder der NOOBS-Dialog die Bearbeitung der cmdline.txt-Datei erleichtern. Im Wiederherstellungsmodus oder im NOOBS-Dialogfeld öffnen Sie durch Klicken auf das "Edit config" -Symbol einen Editor, mit dem Sie zwei Dateien bearbeiten können, von denen eine eine ist cmdline.txt. Durch Drücken von "OK" im Editor werden Ihre Änderungen gespeichert.

Wenn Sie im Einzelbenutzermodus oder im "Rettungsmodus" auf dem Pi booten, erhalten Sie höchstwahrscheinlich die folgende Meldung:

Cannot open access to console, the root account is locked. See sulogin(8) man page for more details.  Press Enter to continue. 

Dies ist ebenso wie auch der Grund, warum die zuvor erwähnte Eingabeaufforderung für das Root-Passwort keine Passwörter akzeptiert hat, weil Raspbian standardmäßig kein Passwort für das Root-Konto festgelegt hat. Dies ist nicht mit einem Passwort zu verwechseln, das nichts ist oder dass kein Passwort erforderlich wäre. Raspbian erwartet genau wie eine Handvoll anderer Linux-Distributionen (zum Beispiel Debian, von dem Raspbian abgeleitet ist), dass der Benutzer über sudo als root arbeitet und nicht über das Konto selbst. Daher befindet sich der Root-Account im "Lockdown" -Zustand, den wir gerade erfahren.

* Wenn Sie das Root-Passwort selbst festlegen, z. B. über den Befehl sudo passwd root, sollten Sie den Befehl pkexec-command verwenden und im Einzelbenutzermodus starten können. Wenn Sie dies tun, müssen Sie sudo verwenden. Dies ist offensichtlich keine Lösung, wenn sudo einmal zerbrochen ist. Ich weise jedoch darauf hin, weil dies wahrscheinlich der Grund ist, warum einige Leute Erfolg hatten, wenn sie ihre Pi fixieren, wenn sie die Lösungen anwenden, die die folgenden Schritte vorschlagen pkexec: Befehl oder Einzelbenutzermodus. Diese Leute waren irgendwann gegangen und haben manuell ein Root-Passwort festgelegt, um das Root-Konto ihres Systems zu entsperren.

Die Lösung

Dieser Blogbeitrag erläutert, wie wir das tun, was wir tun müssen. Die Schritte sind fast identisch mit den Schritten, die wir unternommen haben, als Sie versuchten, sudo im Einzelbenutzermodus zu reparieren. Sie müssen nicht all die umständlichen cmdline.txtDinge erledigen, die der Blogbeitrag erwähnt, um die -Datei zu bearbeiten, sondern tun Sie es einfach im NOOBS-Dialogfeld. Der Schlüssel ist das Hinzufügen init=/bin/sham Ende der cmdline.txt-Datei. Wenn dieses Snippet hinzugefügt wird, werden Sie beim nächsten Booten Ihres Pi in einer Root-Shell-Eingabeaufforderung angezeigt.

Ursprünglich wird das Dateisystem im schreibgeschützten Modus geladen. Bevor Sie also etwas bearbeiten können, müssen Sie die Root-Partition im Lese- und Schreibmodus erneut starten, indem Sie den folgenden Befehl ausführen:

mount -o remount,rw /dev/mmcblk0p2 / 

Jetzt sollten Sie sich in einer Root-Shell-Eingabeaufforderung befinden, in der Sie beliebige Dateien einschließlich der defekten Sudo-Dateien frei bearbeiten können.