VPN-Schaltfläche braucht sudo: Regel eingrenzen, Richtlinie prüfen
Eine Schaltfläche auf dem Desktop ist kein Grund für root ohne Passwort. Prüfen Sie, ob der Netzwerkmanager das selbst kann, grenzen Sie einen Befehl ein und validieren Sie dann die gesamte sudo-Richtlinie.
Die VPN-Schaltfläche funktioniert für den Administrator und scheitert für alle anderen, also fügt jemand eine Zeile in sudoers hinzu. Diese Zeile überlebt meist das Problem, das sie lösen sollte, und sie gewährt oft mehr, als die Schaltfläche braucht. Prüfen Sie, bevor Sie die Richtlinie bearbeiten, ob der unterstützte Eigentümer der Verbindung die Aufgabe schon erledigen kann. Die drei Bedingungen unten entscheiden, ob sudo überhaupt im Spiel ist.
Bedingung 1: der unterstützte Eigentümer kann es ohne sudo
Auf den meisten Linux-Desktops besitzt der Netzwerkmanager bereits VPN-Verbindungen, und seine Autorisierung läuft über polkit statt über sudo. Ein Benutzer, der eine Verbindung hochfahren darf, kann das von der Kommandozeile aus ohne jede root-Regel tun. Prüfen Sie, was der Manager erlaubt, bevor Sie annehmen, die Schaltfläche brauche ein Privileg. Ist die Antwort ja, löst die Änderung an sudoers ein Problem, das nicht existiert.
nmcli connection show
nmcli connection up "Work VPN"
Wenn der Manager ablehnt, lesen Sie nach, warum: eine fehlende polkit-Regel, eine Verbindung im Besitz eines anderen Benutzers oder ein Profil, das dort gespeichert ist, wo der Benutzer es nicht lesen kann. Jeder dieser Fälle hat eine unterstützte Lösung, die enger ist als eine sudo-Regel. Eine Rechteausweitung ist das letzte Mittel, nicht das erste.
Bedingung 2: die Regel benennt genau eine ausführbare Datei und ihre Argumente
Wenn sudo wirklich nötig ist, sollte die Regel den genauen Befehl und, wo möglich, die erlaubten Argumente benennen. Eine Regel, die einem Benutzer erlaubt, ein Wrapper-Skript auszuführen, ist nur so sicher wie die Rechte dieses Skripts, denn der Benutzer kann bearbeiten, was root ausführen wird. Eine Regel mit einem Platzhalter nach dem Befehl ist dasselbe Problem in kürzerer Form.
sudo -l -U alice
ls -l /usr/local/sbin/vpn-up
Prüfen Sie jeden Pfad in der Befehlskette: die Binärdatei, das aufgerufene Skript, die gelesene Konfigurationsdatei und jedes Verzeichnis dazwischen. Wenn einer davon für den Benutzer schreibbar ist, ist die eingegrenzte Regel praktisch uneingeschränktes root. Auch Argumente zählen, denn ein Befehl, der einen Konfigurationspfad annimmt, lässt sich auf eine Datei richten, die der Benutzer kontrolliert. Schreiben Sie die Regel für den Vorgang, nicht für die Schaltfläche.
Halten Sie an, wenn der Befehl eine vom Benutzer kontrollierte Datei braucht, um zu funktionieren. Dann ist das Design falsch, und keine sudoers-Syntax macht es sicher.
Bedingung 3: die ganze Richtlinie wird geparst, nicht nur Ihre Zeile
Validieren Sie mit dem Editor, der die Datei sperrt und die Syntax prüft, und validieren Sie die zusammengesetzte Richtlinie statt eines Fragments. Eine Datei, die für sich parst, kann trotzdem die Include-Reihenfolge brechen oder eine Regel so duplizieren, dass sich das Verhalten ändert.visudo-Handbuch dokumentiert sowohl den sperrenden Editor als auch den hier verwendeten Nur-Prüf-Modus.
sudo visudo -c
sudo visudo -cf /etc/sudoers.d/vpn-launcher
Die Prüfung meldet die Datei und die Zeile, wenn sie scheitert, und genau dieser Bericht ist der nützliche Teil. Reparieren Sie die beabsichtigte Änderung über den Editor, statt einen bekannten Fehler gewaltsam zu speichern, denn eine kaputte Richtlinie kann alle Administratoren auf einmal aussperren. Dateien im Include-Verzeichnis brauchen außerdem den Eigentümer und den Modus, die das Handbuch verlangt, sonst werden sie ignoriert oder abgelehnt. Syntax ist nur das erste Tor: Nachdem sie bestanden ist, lesen Sie die Regel erneut und fragen Sie, was sie tatsächlich erlaubt.
Halten Sie an, wenn der einzige Weg, die Änderung zum Laufen zu bringen, das Abschalten der Syntaxprüfung ist. Das ist keine Richtlinie, das ist ein Ausfall, der auf einen Neustart wartet.
Wiederherstellung: eine Sitzung behalten, die noch funktioniert
Bevor Sie speichern, stellen Sie sicher, dass eine autorisierte administrative Sitzung bereits offen ist und ein zweiter Weg in die Maschine existiert. Ein sudoers-Fehler kann Ihnen die Möglichkeit nehmen, ihn zu beheben, und eine Desktop-Schaltfläche ist dieses Risiko nicht wert. Wenn sudo bereits kaputt ist, nutzen Sie den dokumentierten Wiederherstellungsweg des Systems, statt einen zu improvisieren.
sudo -n true
id
Alternativen wie pkexec hängen von ihrer eigenen Installation und Richtlinie ab, sind also kein garantierter zweiter root-Prompt. Halten Sie die lokale Autorisierung auch getrennt von der Bereitstellung des VPN-Geheimnisses: Eine sudo-Regel kann keinen fehlenden Secret-Agenten entsperren und erfüllt nicht die MFA des Gateways. Testen Sie nach der Korrektur das normale Konto, das nur den beabsichtigten Vorgang ausführt, und nutzen Sie dann die gewohnten Steuerelemente des Managers.
Die Entscheidung endet, wenn Sie sagen können, welche Bedingung sudo gerechtfertigt hat, was die Regel benennt, dass die ganze Richtlinie parst und wie Sie sich erholen würden, wenn nicht. Ein privilegierter Starter, der Sie den administrativen Zugang kostet, ist ein schlechter Tausch, und er ist meist vermeidbar.