sudo, &, -b oder --daemon: Wie man einen OpenVPN-Client im Hintergrund startet
Ein Ampersand gibt das Terminal frei, nicht die Anmeldung. Vergleichen Sie sudo -b, --daemon und eine Dienstinstanz danach, wer den Prozess besitzt und wer Abfragen beantwortet.
In der Wendung „im Hintergrund laufen lassen“ stecken zwei Fragen. Die erste ist, ob dieser Benutzer überhaupt einen privilegierten Prozess starten darf; die zweite, ob die Sitzung weiterlaufen kann, ohne dass jemand in ein Terminal tippt. Ein Shell-Ampersand beantwortet keine von beiden, und ein Skript, das ein sudo-Passwort in einer Variablen speichert, beantwortet die erste schlecht und lässt die zweite unberührt. Trennt man sie, lassen sich die Optionen leicht vergleichen.
Vergleichen Sie die drei Kandidaten nach Eigentümerschaft, nicht nach Bequemlichkeit.
Drei Wege aus dem Terminal, drei verschiedene Eigentümer
Ein Ampersand an einen Befehl zu hängen, bittet die Shell, ihn als Hintergrundjob auszuführen, und der Job gehört weiterhin dieser Shell. sudo kann nachfragen, bevor das Programm überhaupt startet, und OpenVPN kann danach nach einer Schlüsselpassphrase oder einer Anmeldung fragen. Einen Befehl, der Eingaben erwartet, in den Hintergrund zu schicken, erzeugt einen Prozess, der auf ein Terminal wartet, das niemand beobachtet. Das Terminal wird frei; die Interaktion nicht.
Das ist die billigste Option und diejenige, die am verwirrendsten scheitert, weil die Abfrage an einer Stelle erscheint, die der Bediener bereits verlassen hat.
sudo -b ist keine Anmeldedatenverwaltung
sudo -b führt den Befehl aus der Sicht von sudo im Hintergrund aus, was nach der fehlenden Funktion klingt und es nicht ist. Laut sudo-Handbuch verhalten sich interaktive Befehle in diesem Modus im Allgemeinen falsch, und die Jobkontrolle der Shell kann die erzeugten Prozesse nicht verwalten. Er verschiebt den Prozess, ohne ihm eine Möglichkeit zu geben, Fragen zu beantworten. Nichts daran liefert eine Passphrase für einen privaten Schlüssel oder eine Gateway-Anmeldung.
Braucht die Verbindung Interaktion, ist die Lösung eine unterstützte nicht-interaktive Authentifizierungseinrichtung, nicht ein anderer Weg, dieselbe Abfrage zu starten.
--daemon ändert das Programm, nicht die Anmeldung
--daemon bittet OpenVPN selbst, sich nach der Initialisierung abzulösen. Das Handbuch zu 2.6 merkt an, dass die syslog-Umleitung beim Parsen der Option erfolgt, obwohl die Ablösung erst später geschieht, sodass Meldungen früher als erwartet im Terminal verschwinden können. Stille danach beweist nichts über den Tunnel. Fügen Sie ein ausdrückliches --log oder --log-append hinzu, damit die Ausgabe an einer lesbaren Stelle landet.
Der Daemon-Modus entfernt zudem dauerhaft die Konsole. Ein geschützter privater Schlüssel braucht in diesem Modus askpass , und über die Konsole eingegebene Anmeldedaten können zusammen mit Caching-Optionen eine spätere erneute Authentifizierung ohne Ort für die Abfrage zurücklassen. Prüfen Sie das Authentifizierungsmodell gegen die installierte Version, bevor Sie annehmen, ein Hintergrundstart überstehe seine erste Schlüsselerneuerung.
Was die sudo-Validierung leistet und was nicht
sudo -v validiert oder erneuert die zwischengespeicherten lokalen Anmeldedaten und authentifiziert, wenn die Richtlinie es verlangt. Es startet OpenVPN nicht, authentifiziert sich nicht am Gateway und garantiert nicht, dass ein späterer Befehl im Skript erlaubt ist. sudo -n bedeutet das Gegenteil: nicht nachfragen, sondern scheitern. Das macht einen lokalen Autorisierungsfehler ausdrücklich, was nützlich ist, und sagt nichts darüber, wonach OpenVPN später fragen wird.
Keine der beiden Optionen ist ein Grund, pauschal passwortlose Befehle zu erteilen oder ein Administratorkennwort in ein Skript zu leiten.
Bevorzugen Sie einen Eigentümer, der beobachtet werden kann
Für einen maschineneigenen Tunnel nutzen Sie die Dienstinstanz, die von der Distribution unterstützt wird. Dieser Eigentümer bietet Start, Stopp, Status und Protokolle und überlebt das Ende Ihrer Sitzung. Shell-Hintergrundausführung, Daemonisierung und eine Neustartschleife umeinander zu bauen, erzeugt drei Eigentümer für einen Tunnel und keine klare Antwort darauf, welcher läuft.
Was auch immer Sie wählen, prüfen Sie die Ressource, für die der Tunnel existiert. Eine erfolgreiche Startanfrage ist ein Prozessereignis, kein Beweis einer funktionierenden Verbindung.