
Ich habe versehentlich einen Fehler in der sudoers
Datei gemacht und kann ihn jetzt nicht beheben, da beim Versuch, die Datei zu ändern, die Meldung „Zugriff verweigert“ angezeigt wird. Wenn ich sudo
die Datei öffne, wird ein Syntaxfehler angezeigt und es wurden keine gültigen sudoers
Quellen gefunden, und der Befehl wird nicht ausgeführt. Ich verwende Raspbian, eine Debian-Variante.
Weiß jemand, wie man aus diesem Dilemma herauskommt?
Antwort1
- Wenn Sie das Kennwort kennen
root
(und es festgelegt ist), können Sie es verwenden,su
um es zu öffnenroot
und zu bearbeiten/etc/sudoers
. - Wenn sich Ihr Root-Dateisystem auf einer SD-Karte befindet, können Sie es herausschieben und
/etc/sudoers
auf einem PC oder einem anderen Gerät bearbeiten, sofern es über einen Kartenleser verfügt. - Sie können die U-Boot-Befehlszeile (Bootloader) aufrufen (normalerweise durch Drücken einer Taste auf der Tastatur oder über UART) und
1
der Linux-Kernel-Befehlszeile hinzufügen, um in den Einzelbenutzermodus zu wechseln. In diesem Modus können Sieroot
bearbeiten/etc/sudoers
. Siehe auchDas.
Antwort2
Sie müssen im Einzelbenutzermodus booten.
https://serverfault.com/questions/482079/debian-boot-to-single-user-mode
Als Root-Benutzer können Sie die Sudoers-Datei bearbeiten, um das Problem zu beheben. Ich empfehle dringend, den visudo
Befehl in Zukunft zum Bearbeiten Ihrer Sudoers-Datei zu verwenden, um dies nicht noch einmal tun zu müssen, da Visudo vor dem Speichern eine Syntaxprüfung der Datei durchführt.
Antwort3
Wenn Sie sich auf einer Cloud-Instanz befinden, sind Sie in etwas größeren Schwierigkeiten.
Abhängig von der Distribution gibt es verschiedene Techniken, aber wenn Sie Docker bereits installiert und ausgeführt haben, können Sie das Problem im Allgemeinen über einen Docker-Container beheben. Das liegt daran, dass der Docker-Dienst normalerweise als Root ausgeführt wird und alles, was mit einem bereitgestellten Volume innerhalb des Containers geschieht, als Root auf dem Host ausgeführt wird.
Auf dem Host:
docker run --rm -ti -v /etc:/usr/local/etc busybox sh
Die „Busybox“ ist einfach eine nette kleine Distribution, deren Download nicht lange dauert. Wenn Sie bereits ein Docker-Image haben, das eine Shell enthält, verwenden Sie einfach dieses.
Zum Docker-Container:
cd /usr/local/etc
vi sudoers
Möglicherweise haben Sie dem /etc/sudoers.d/
Verzeichnis eine fehlerhafte Datei hinzugefügt. In diesem Fall entfernen Sie am besten einfach die Datei.
Wenn Sie den Container verlassen, ist dies sudo
erneut möglich.
Wütend!