Linux: sudo fragt in jedem Terminal erneut nach dem Passwort
sudo will gefühlt bei jedem Befehl das Passwort? Die Freigabe gilt 5 Minuten und pro Terminal. So stellst du sie sauber ein.
Aufwand:
ca. 10 Min.
Voraussetzung:
sudo-Rechte, Terminal, visudo
Gilt für:
sudo ab Version 1.8.21
Das Symptom
Man arbeitet sich durch eine Installation, tippt sudo vor jeden zweiten Befehl
– und wird gefühlt jedes Mal erneut nach dem Passwort gefragt. Besonders absurd
wirkt es, wenn im einen Terminalfenster gerade eben das Passwort eingegeben
wurde und das frisch geöffnete Fenster daneben trotzdem wieder fragt. Der
Verdacht liegt nahe, dass etwas kaputt ist oder das Passwort nicht angenommen
wird.
Die „Layer 8“-Wahrheit
Es ist nichts kaputt, es ist nur genau so gebaut. sudo merkt sich eine
erfolgreiche Anmeldung in einem Zeitstempel, und dieser Zeitstempel hat zwei
Eigenschaften, die zusammen den Eindruck von Willkür erzeugen. Erstens ist er
befristet: timestamp_timeout steht in der Voreinstellung auf fünf Minuten.
Zweitens gilt er nicht für den Benutzer, sondern für das Terminal –
timestamp_type steht per Vorgabe auf tty, und damit wird jede Sitzung
getrennt authentifiziert. Zwei Fenster sind zwei Sitzungen, also zwei
Passwortabfragen. Das ist eine Sicherheitsentscheidung: Eine Freigabe soll nicht
quer über alles gelten, was zufällig unter deinem Benutzernamen läuft. Wer damit
nicht leben will, hat zwei ehrliche Stellschrauben – die Frist verlängern oder
den Zeitstempel auf global umstellen – und eine unehrliche: die Abfrage per
negativem Timeout praktisch abschalten. Letzteres tauscht ein paar Sekunden
Tipparbeit gegen die letzte Rückfrage vor einem Befehl, der alles darf. Der
Handel ist schlechter, als er sich anfühlt.
Die echte, verifizierte Lösung
1000 % faktenbasiert. Jeder Befehl ist real, jeder Pfad existiert. Schritt für Schritt:
1.
Nachsehen, ob überhaupt etwas Eigenes eingestellt ist
Findet die Suche keine Zeile, gelten die Vorgabewerte: fünf Minuten, ein Zeitstempel je Terminal. Dann ist nichts kaputt, sondern alles wie ab Werk:
Prüfen, ob eigene Regeldateien überhaupt eingelesen werden
Eine Datei in /etc/sudoers.d wirkt nur, wenn die Hauptdatei das Verzeichnis einbindet. Steht in der Ausgabe eine Zeile mit @includedir oder #includedir und dem Pfad /etc/sudoers.d, ist alles vorbereitet – sonst muss die Änderung in die Hauptdatei:
sudo grep -n includedir /etc/sudoers
3.
Die Gültigkeitsdauer ändern – aber nur mit visudo
visudo prüft die Syntax vor dem Speichern. Ein Tippfehler, der direkt in die Datei geschrieben wird, kann sudo komplett unbrauchbar machen, und dann fehlen genau die Rechte, die man zur Reparatur bräuchte. Der folgende Aufruf legt eine eigene Regeldatei an:
sudo visudo -f /etc/sudoers.d/timeout
4.
Den gewünschten Wert eintragen
Diese eine Zeile in den geöffneten Editor schreiben, speichern, schließen. 15 steht für fünfzehn Minuten; jeder positive Wert ist erlaubt, auch mit Nachkommastelle. visudo meldet sich, falls die Syntax nicht stimmt:
Defaults timestamp_timeout=15
5.
Optional: alle Terminals gemeinsam zählen lassen
Wen vor allem stört, dass jedes neue Fenster wieder fragt, ändert nicht die Dauer, sondern die Art des Zeitstempels. Mit global gilt ein einziger Datensatz für alle Sitzungen des Benutzers statt einer je Terminal – ebenfalls über visudo einzutragen:
Defaults timestamp_type=global
6.
Die Änderung ohne Neuanmeldung testen
sudo -k verwirft die zwischengespeicherte Freigabe der aktuellen Sitzung, sudo -K entfernt sie für den Benutzer vollständig, unabhängig von Terminal oder Elternprozess. Danach fragt der nächste Aufruf garantiert wieder – und ab da läuft die neue Frist:
sudo -k
sudo -v
7.
Wissen, wo die Zeitstempel liegen
sudo legt sie unterhalb von /run/sudo/ts ab, je Benutzer eine Datei. /run wird bei jedem Neustart neu angelegt, weshalb nach dem Hochfahren immer erst wieder das Passwort fällig ist. Das Verzeichnis gehört root, der Blick hinein braucht also selbst Rechte:
sudo ls -l /run/sudo/ts
Häufige Fragen (FAQ)
?Wie lange gilt eine sudo-Eingabe eigentlich?
Standardmäßig fünf Minuten. Die Option timestamp_timeout in sudoers legt fest, wie viele Minuten vergehen dürfen, bevor sudo erneut nach dem Passwort fragt; der Vorgabewert ist 5. Der Wert darf einen Nachkommateil haben, 2.5 sind also zweieinhalb Minuten. Eine 0 bedeutet: immer fragen. Und jeder Aufruf von sudo setzt die Uhr neu – wer im Minutentakt arbeitet, sieht den Prompt fast nie, wer zwischendurch Kaffee holt, umso öfter.
?Warum fragt das zweite Terminalfenster wieder, obwohl ich gerade eben getippt habe?
Weil sudo den Zeitstempel nicht pro Benutzer führt, sondern pro Terminal. Die Option timestamp_type steht standardmäßig auf tty: Für jedes Terminal gibt es einen eigenen Datensatz, damit Anmeldesitzungen getrennt authentifiziert werden. Das ist kein Schikane-Feature, sondern Absicht – eine Freigabe, die man in einem Fenster erteilt hat, soll nicht in einem anderen gelten, in dem vielleicht jemand anderes sitzt. Wer das nicht möchte, kann timestamp_type auf global stellen, dann zählt ein einziger Datensatz für alle Sitzungen des Benutzers.
?Kann ich die Abfrage einfach dauerhaft abschalten?
Technisch ja: Ein negativer Wert für timestamp_timeout lässt den Zeitstempel laut Handbuch erst beim Neustart des Systems verfallen. Sinnvoll ist das selten. Jedes Programm, das unter deinem Benutzer läuft – auch ein aus Versehen gestartetes Skript aus dem Download-Ordner – kann dann ohne eine einzige Rückfrage Root-Rechte bekommen. Die Passwortabfrage ist die letzte Sekunde Nachdenkzeit vor einem Befehl, der alles darf. Wer sie loswerden will, sollte stattdessen den Zeitraum moderat erhöhen und mit sudo -k gezielt beenden.
Belege
Diese Seite ist gegen die folgenden Primärquellen geprüft – Hersteller, Standard oder Gesetzestext. Wer es nicht glaubt, muss es nicht: Da steht, wo es nachzulesen ist.
KDE Wallet verlangt bei jeder Anmeldung ein Passwort? So lässt du die Brieftasche über PAM automatisch mit dem Login entsperren – oder schaltest sie ab.