Layer 8Ehrlicher Tech-Support
BetriebssystemSchweregrad: Lästig

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. 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:

    sudo grep -rn timestamp_ /etc/sudoers /etc/sudoers.d/
    
  2. 2.

    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. 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. 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. 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. 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. 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.

  1. [1]
    sudoers(5) – Linux manual page (man7.org)

    man7.org · abgerufen am

  2. [2]
    sudo(8) – Linux manual page (man7.org)

    man7.org · abgerufen am

  3. [3]
    visudo(8) – Linux manual page (man7.org)

    man7.org · abgerufen am

Zuletzt geprüft am . Dokumentation altert – ein Datum daneben ist der einzige ehrliche Umgang damit.

Verwandte Fehler

OSLästiguser is not in the sudoers file

user is not in the sudoers file

sudo verweigert den Dienst: Der Benutzer steht nicht in der sudoers-Datei. Ohne Mitgliedschaft in der richtigen Gruppe gibt es keine Root-Rechte.

OSLästigOperation not permitted

Operation not permitted am Mac trotz sudo

Der Mac verweigert eine Änderung im Systemordner, auch als Administrator? Das ist der Systemintegritätsschutz — und er lässt sich nicht wegtricksen.