Tutoriel Linux

Visudo unter Linux: Sudoers ändern, ohne den Root-Zugriff zu verlieren

Débutant5 min de lecture
À retenirLinux n'est pas réservé aux experts. Le bon point de départ : une distribution accessible, une sauvegarde propre et quelques commandes comprises.

Ein Fehler in /etc/sudoers Sie können Ihre letzten Administratorrechte verlieren, während die SSH-Sitzung noch läuft. Das Risiko entsteht oft durch eine schlecht formulierte Regel, einen falschen Befehlspfad oder eine zu schnell hinzugefügte Datei. /etc/sudoers.d.

Ich bearbeite sudoers niemals mit einem Editor, der direkt auf der Datei gestartet wird. Visudo Sperren Sie die Konfiguration während der Bearbeitung und überprüfen Sie die Syntax vor dem Speichern. Halten Sie auf einem Remote-Server außerdem eine zweite Root-Sitzung bis zum abschließenden Test geöffnet. Diese Sicherheitsmaßnahme ist genauso wichtig wie der Befehl selbst.

Tux validiert eine sudoers-Konfiguration und erhält gleichzeitig den Backup-Administratorzugriff aufrecht.
Visudo überprüft vor dem Speichern die Syntax der sudoers, aber eine zweite Root-Sitzung auf einem entfernten Server ist weiterhin unerlässlich.

Prüfen Sie die sudo-Berechtigung, bevor Sie eine Regel ändern.

Prüfen Sie zunächst, ob Ihr Konto noch über sudo-Berechtigungen verfügt und welche Befehle es ausführen darf:

sudo -v
sudo -l
Ausweis
Gruppen

Überprüft Authentifizierungsinformationen, ohne einen sensiblen Befehl auszuführen. sudo -l Zeigt die tatsächlich auf das Konto angewendeten Regeln an. Falls dieser Schritt fehlschlägt, ändern Sie die sudoers-Datei dieser Sitzung nicht.

Öffnen Sie als Nächstes ein zweites Terminal und halten Sie dort eine Root-Sitzung aufrecht:

sudo -i
WHO
w

Schließen Sie diese Sitzung während der Bearbeitung nicht. Überprüfen Sie auf einem Remote-Rechner außerdem Ihre Konsole, Ihren KVM-Switch oder den Zugriff auf das Rettungspanel. Die Anleitung dazu finden Sie hier: Linux-Konten und -Gruppen kann Ihnen dabei helfen, das Zielkonto zu bestätigen, bevor Sie ihm Berechtigungen erteilen.

sudoers speichern, ohne die Berechtigungen zu ändern

Vor der Bearbeitung kopieren Sie die Hauptdatei in einen für das Stammverzeichnis reservierten Ordner. Die Option -hat Behält insbesondere den Eigentümer, die Gruppe und den Modus bei:

sudo cp -a /etc/sudoers "/root/sudoers.backup-$(date +%F-%H%M)"
sudo stat -c '%A %a %U:%G %n' /etc/sudoers /etc/sudoers.d

Bei vielen Distributionen /etc/sudoers gehört dazu root:root mit einem Modus vier­hundert­vierzigKorrigieren Sie Berechtigungen nicht willkürlich, wenn Ihre Distribution eine andere Richtlinie verwendet. Notieren Sie sich zunächst den aktuellen Status und bewahren Sie den genauen Pfad zur Sicherung auf.

Um die Hauptkonfiguration zu öffnen, starten Sie einfach Folgendes:

sudo visudo

Visudo Es erstellt eine Sperre, um zwei gleichzeitige Bearbeitungen zu verhindern. Beim Schließen analysiert es die Syntax und verweigert normalerweise die Installation einer ungültigen Konfiguration. Falls das Tool einen Fehler meldet, kehren Sie zum Editor zurück und beheben Sie ihn. Erzwingen Sie nicht das Speichern einer Datei, deren Funktionsweise Sie nicht verstehen.

Eine sudoers-Regel folgt typischerweise dieser Logik: Benutzer oder Gruppe, beteiligte Hosts, Ausführungsidentität und dann autorisierte Befehle. Um das Konto zu autorisieren. Alice Um Nginx neu zu starten und nur Nginx zu überprüfen, überprüfen Sie zuerst den Binärpfad:

Befehl -v systemctl

Wenn der Befehl zurückkehrt /usr/bin/systemctlDie Regel kann folgende Form annehmen:

alice ALL=(root) /usr/bin/systemctl is-active nginx, /usr/bin/systemctl restart nginx

Nicht verwenden NOPASSWD Aus Gewohnheit. Bei der Automatisierung sollte man es auf ein einzelnes Konto, einen einzelnen Befehl und kontrollierte Argumente beschränken. Eine weitreichende Regel, die Zugriff auf eine Shell, einen Editor oder einen Befehl gewährt, der andere Programme starten kann, läuft oft auf die Gewährung von vollständigem Root-Zugriff hinaus.

Erstelle eine leere Datei in /etc/sudoers.d

Für eine abteilungs- oder teamspezifische Regel bevorzuge ich ein separates Fragment anstelle der großen Hauptdatei. Öffnen Sie es mit der Option -F :

sudo visudo -f /etc/sudoers.d/administration

Wählen Sie einen einfachen Namen ohne Leerzeichen, Punkte oder Sonderzeichen, zum Beispiel ~Gemäß der Richtlinie @includedir Da einige Namen von der Distribution verwendet werden, werden sie möglicherweise ignoriert. Überprüfen Sie nach der Registrierung den Inhaber und den Modus:

sudo chown root:root /etc/sudoers.d/administration
sudo chmod 0440 /etc/sudoers.d/administration
sudo stat -c '%A %a %U:%G %n' /etc/sudoers.d/administration

Das allgemeine Tutorial zu Die Delegierung durch Benutzer, Gruppen und Aliase wird detailliert beschrieben. Hierbei bleibt das Ziel enger gefasst: die Installation einer überprüfbaren Regel, ohne die Möglichkeit zu verlieren, zur vorherigen Version zurückzukehren.

Bitte überprüfen Sie die gesamte Konfiguration vor dem Testen.

Das Ergebnis sollte anzeigen, dass die analysierten Dateien syntaktisch korrekt sind. Falls ein Fehler gemeldet wird, öffnen Sie die betreffende Datei erneut. visudo -fStarten Sie den Rechner nicht neu und schließen Sie die Root-Sitzung nicht, solange die Überprüfung fehlschlägt.

Anschließend werden aus der beibehaltenen Root-Sitzung die Rechte des Zielkontos angezeigt:

sudo -l -U alice

Diese Auswertung ermöglicht es Ihnen, eine nicht geladene Regel, einen falschen Benutzernamen oder eine viel umfassendere Autorisierung als erwartet zu identifizieren.

Testen Sie in einer neuen Sitzung, bevor Sie root schließen.

Öffnen Sie ein drittes Login mit dem betreffenden Konto. Verwenden Sie nicht einfach die Sitzung, die bereits ein zwischengespeichertes sudo-Ticket besitzt. Ungültigmachen Sie diesen Cache, fordern Sie die Liste der Berechtigungen an und führen Sie dann nur den autorisierten Befehl aus:

sudo -k
sudo -v
sudo -l
sudo systemctl status nginx

Überprüfen Sie außerdem, ob ein unerwarteter Befehl weiterhin abgelehnt wird. Eine Regel ist korrekt, wenn der Benutzer die erwarteten Zugriffsrechte behält, ohne mehr Berechtigungen als nötig zu erlangen. Schließen Sie die Backup-Root-Sitzung erst nach diesem Test.

sudoers wiederherstellen, falls Validierung oder Zugriff fehlschlägt

Wenn visudo -c Falls dies fehlschlägt, korrigieren Sie das fehlerhafte Fragment in der noch geöffneten Root-Sitzung. Um zur ursprünglichen Sicherungsdatei zurückzukehren, ersetzen Sie den Pfad durch Ihre tatsächliche Sicherungsdatei:

cp -a /root/sudoers.backup-YYYY-MM-DD-HHMM /etc/sudoers
visudo -c

Sind alle Administratorsitzungen bereits geschlossen, verwenden Sie die Herstellerkonsole, den Wiederherstellungsmodus oder eine Live-Umgebung, um das System einzubinden und die Konfiguration zu reparieren. Das Bearbeiten von sudoers mit einem Konto ohne entsprechende Berechtigungen ist nicht möglich.

Um eine Ablehnung nach erfolgreicher Validierung zu verstehen, überprüfen Sie die sudo-Ereignisse des aktuellen Systemstarts und anschließend das Authentifizierungsprotokoll, falls Ihre Distribution dieses verwendet:

sudo journalctl -t sudo -b --no-pager
sudo tail -n 100 /var/log/auth.log

Dort Visudo-Handbuchseite dokumentiert die Verriegelung, Steuerung und Option -F. Dokumentation sudoers(5) Hier werden Syntax, Einschlüsse und Befehlsregeln beschrieben. Beachten Sie unbedingt diese Reihenfolge: Zugriff sichern, speichern, bearbeiten mit , globale Validierung, dann Test in einer neuen Sitzung.

sudo apt update && sudo apt upgrade