Auf dieser Seite finden Sie Tipps zur Verwendung des sudo
-Befehlszeilendienstprogramms, zur Verwaltung des Plug-ins sudoers
und zur Vermeidung oder Behebung von Problemen.
Ursachen von Problemen
Bei jeder Ausführung des Befehls sudo
wird der folgende Prozess durchgeführt, um die Dateien sudoers
zu validieren:
- Die Syntax wird auf Richtigkeit geprüft.
- Der Inhalt wird analysiert, um einige logische Fehler auszuschließen.
- Eigentümerschaft und Berechtigungen werden geprüft.
Die Validierung der sudoers
-Dateien kann aufgrund eines der folgenden Fehler fehlschlagen:
Syntaxfehler
Wenn Sie Änderungen an den sudoers
-Dateien vornehmen, müssen Sie bestimmte Syntaxregeln einhalten. Jede Abweichung von dieser Syntax, einschließlich, aber nicht beschränkt auf ein fehlendes oder zusätzliches Zeichen oder ein unpassendes Komma, kann die Datei ungültig machen. Wenn die Datei ungültig ist, kann das Dienstprogramm sudo
nicht mehr verwendet werden.
Lösung
Die Lösung besteht darin, die sudoers
-Dateien mit dem Dienstprogramm visudo
zu bearbeiten. Es prüft den Dateiinhalt vor dem Speichern und benachrichtigt Sie bei Problemen. Das Dienstprogramm visudo
wurde erstellt, um die Datei sicher zu bearbeiten.
Die folgenden Beispiele zeigen korrekte und falsche Syntaxbeispiele:
Richtige Syntax
user ALL=(ALL) ALL
Falsche Syntax
user ALL=(ALL), ALL
Beispiel für Syntaxfehler
$ sudo useradd username
/etc/sudoers:20:17: syntax error
user ALL=(ALL), ALL
^
Logische Fehler
Fehler dieses Typs können folgende Ursachen haben:
- Falsches Verständnis der Prinzipien des
sudoers
-Plug-ins. - Abweichungen von der richtigen Syntax.
Logische Fehler werden jedoch während der Validierung nicht erkannt, da sie nicht gegen Syntaxregeln verstoßen und daher schwer zu erkennen sind.
Lösung
Lesen Sie die offizielle Dokumentation sorgfältig und halten Sie sich an die Prinzipien, wenn Sie die Datei bearbeiten.
Google empfiehlt auch die Verwendung des Dienstprogramms visudo
zum Bearbeiten der sudoers
-Dateien, da es einige Arten von logischen Fehlern erkennen kann, z. B.:
- Nicht definierte oder nicht verwendete Aliasse
- Zyklische Referenzen
- Doppelte Einträge
Wenn Probleme erkannt werden, wird eine Warnmeldung angezeigt.
Die folgenden Beispiele zeigen logisch korrekte und falsche Beispiele:
Logisch korrekt
barbara ALL=(ALL:ALL) /usr/bin/ls
Logisch falsch
barbara ALL=(4LL:ALL) /usr/bin/ls
^
barbara ALL=(ALL;ALL) /usr/bin/ls
^
bar6ara ALL=(ALL:ALL) /usr/bin/1s
^ ^
Falsche Berechtigungen
Zusätzlich zu Fehlern, die durch den Inhalt der sudoers
-Dateien verursacht werden, können ihre übermäßigen Dateiberechtigungen oder die falsche Eigentümerschaft auch dazu führen, dass das Dienstprogramm sudo
fehlschlägt.
Lösung
In der Ausgabe des fehlgeschlagenen Befehls sudo
wird eine Beschreibung dieser Fehler angezeigt. Lesen Sie die Beschreibung der Fehlermeldung und nehmen Sie die erforderlichen Korrekturen vor.
Dies ist ein Beispiel für die richtigen Dateiberechtigungen und Eigentumsrechte.
$ ls -l /etc/sudoers
-r--r----- 1 root root 700 Jan 1 12:00 /etc/sudoers
$ sudo useradd username
Das folgende Beispiel zeigt den Fehler, der angezeigt wird, wenn redundante Berechtigungen für die Berechtigungsgruppe alle Nutzer vorhanden sind:
$ ls -l /etc/sudoers
-r--r---w- 1 root root 700 Jan 1 12:00 /etc/sudoers
$ sudo useradd username
sudo: /etc/sudoers is world writable
sudo: no valid sudoers sources found, quitting
sudo: error initializing audit plugin sudoers_audit
Das folgende Beispiel zeigt die Fehlermeldung, die bei falscher Eigentümerschaft angezeigt wird. In diesem Beispiel ist ein Nutzer mit einer ID, die nicht 0
ist (oder ein Nutzer, der nicht root
ist), der Inhaber der Datei:
$ ls -l /etc/sudoers
-r--r----- 1 user user 700 Jan 1 12:00 /etc/sudoers
$ sudo useradd username
sudo: /etc/sudoers is owned by uid 1000, should be 0
sudo: no valid sudoers sources found, quitting
sudo: error initializing audit plugin sudoers_audit
Weitere Informationen zur Konfiguration der sudoers
-Dateien finden Sie im Sudoers-Handbuch.
Weitere Informationen zur Verwaltung und Verwendung des visudo
-Editors finden Sie im Visudo-Handbuch.
Folgen von Problemen
Probleme in den sudoers
-Dateien haben negative Auswirkungen und können die Funktionalität des gesamten Systems beeinträchtigen.
Der Befehl
sudo
funktioniert nicht mehr.Dies ist die offensichtlichste Folge von Problemen in den
sudoers
-Dateien. Dies hat zur Folge, dass für Nutzer keine höheren Berechtigungen verwendet werden können, wodurch ihre Aktivität auf dem Server blockiert wird.Destruktivere und unvorhersehbare Folgen sind jedoch Ausfälle von Anwendungen, die auf den
sudo
-Befehl angewiesen sind. In einigen Fällen kann dies dazu führen, dass die Anwendung vollständig ausfällt, was zu unerwartetem Verhalten, Abstürzen oder Datenverlust führt. Ein anderes Beispiel ist, wenn dersudo
-Befehl während der Betriebssystem-Bootsequenz von einer Anwendung aufgerufen wird und fehlschlägt. Dies kann zu einem Ausfall des Betriebssystems oder dazu führen, dass die Bootsequenz hängen bleibt.Möglicher unbefugter Zugriff auf das System.
Eine weitere riskante Folge ist, dass Probleme in den
sudoers
-Dateien zu einem nicht autorisierten Zugriff auf das System führen können. Dies kann aufgrund eines logischen Fehlers auftreten, wenn Regeln in densudoers
-Dateien einigen Nutzern oder Gruppen übermäßige Berechtigungen gewähren.Dies kann auch dadurch geschehen, dass der Systemeigentümer die Schutzmaßnahmen des Systems vorübergehend deaktiviert oder schwächt, um sich anzumelden und das Problem zu beheben.
Wiederherstellung bei Problemen
Wenn Sie erhöhte Nutzerberechtigungen verlieren oder den Befehl sudo
aufgrund von Problemen mit den sudoers
-Dateien nicht verwenden können, verwenden Sie das Superuser-Konto für die Wiederherstellung.
In Unix-ähnlichen Betriebssystemen ist der Superuser ein spezielles Nutzerkonto mit einer ID von 0, das normalerweise root
genannt wird. Der Superuser hat uneingeschränkten Zugriff auf die Systemressourcen und kann jede administrative Aufgabe ohne Einschränkungen ausführen.
Während die Interaktion mit dem Betriebssystem im Namen des Superuser im Allgemeinen als unsicher angesehen wird, ist er möglicherweise die einzige Option für bestimmte Aufgaben wie die Wiederherstellung der sudoers
-Dateien.
Die direkte Anmeldung als Superuser stellt ein Risiko für das Betriebssystem dar. Zur Vermeidung dieses Risikos empfiehlt Google, eine Startskriptfunktion zu verwenden, da dieses Skript im Namen des Superuser ausgeführt wird.
Mehr über Compute Engine-Startskripte erfahren.
So stellen Sie die sudoers
-Dateien mit einem Startskript wieder her:
Erstellen Sie eine Sicherungskopie des aktuellen Startskripts, das bereits verwendet wird. Der Sicherungsansatz hängt davon ab, wie das Startskript konfiguriert ist.
Startskript
Wenn der Skriptinhalt direkt im Metadatenwert festgelegt ist, können Sie den Skriptinhalt in den Cloud Storage-Bucket, die lokale Datei oder einen anderen temporären privaten Speicher kopieren.
startup-script-url
Wenn sich der Inhalt des Skripts bereits im Remotespeicher befindet und seine URL-Adresse verwendet wird, können Sie einfach den Metadatenschlüssel
startup-script-url
entfernen, um das aktuelle Startskript zu deaktivieren.Aktualisieren Sie das Startskript mit der folgenden Befehlssequenz:
mv /etc/sudoers /etc/sudoers.backup.$(date +"%s") && echo "%google-sudoers ALL=(ALL:ALL) NOPASSWD:ALL" > /etc/sudoers && chown 0:0 /etc/sudoers && chmod 0440 /etc/sudoers
Weitere Informationen zu den Funktionen des Befehls
-
mv /etc/sudoers /etc/sudoers.backup.$(date +"%s")
-
Mit diesem Befehl wird eine Kopie der Datei
/etc/sudoers
mit einem anderen Namen erstellt und die Originaldatei gelöscht. Der Name der neuen Datei enthält einen Zeitstempel am Ende der Eindeutigkeit (z. B.sudoers.backup.1672527600
). -
echo "%google-sudoers ALL=(ALL:ALL) NOPASSWD:ALL" > /etc/sudoers
-
Dieser Befehl erstellt die zuvor gelöschte Datei
/etc/sudoers
mit einer einzelnen Regel, die es autorisierten Google Cloud-Nutzern mit Zugriff auf die VM ermöglicht, Befehle für alle Systemnutzer auszuführen. Diese Regel ist immer standardmäßig in einer zusätzlichen Datei/etc/sudoers.d/google_sudoers
vorhanden. -
chown 0:0 /etc/sudoers
-
Dieser Befehl setzt den Inhaber der Datei
/etc/sudoers
auf einen Nutzer mit der ID0
und eine Gruppe von Inhabern auf eine Gruppe mit der ID0
. -
chmod 0440 /etc/sudoers
-
Mit diesem Befehl werden Berechtigungen für die Datei
/etc/sudoers
schreibgeschützt festgelegt und nur der Inhaber und die Inhabergruppe dürfen die Datei lesen.
-
Beenden Sie die VM, wenn sie ausgeführt wird. Starten Sie die VM neu, um die Ausführung des Startskripts auszulösen.
Verbinden Sie sich mit der VM und bearbeiten Sie die defekte
sudoers
-Datei, um sie wiederherzustellen.sudo visudo /etc/sudoers.backup.TIMESTAMP
Speichern Sie die Änderungen und ersetzen Sie die aktuelle Datei
/etc/sudoers
durch die gerade bearbeitete Datei.sudo mv /etc/sudoers.backup.TIMESTAMP /etc/sudoers
Achten Sie darauf, dass das ursprüngliche Problem bei der Verwendung des Befehls
sudo
und erhöhter Berechtigungen behoben wurde.Entfernen Sie das temporäre Startskript und stellen Sie das ursprüngliche Startskript wieder her, wenn es verwendet wurde.
Nächste Schritte
- Unzugängliche oder beschädigte VM wiederherstellen
- Vorhandenes Laufwerk zu einer anderen VM hinzufügen