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 single
am 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.txt
Dinge 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/sh
am 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.