Erzwingen, dass sudo nach einem Passwort fragt

26

Wenn ich folgendes mache:

sudo su -
//enter password
exit
exit
//login again straight away
sudo su -

Der zweite Aufruf von sudo fordert kein Passwort an, da ich mich trotz erneuter Abmeldung immer noch innerhalb einer bestimmten Frist befinde und nicht erneut zur Eingabe meines Passworts aufgefordert werden muss.

Da ich einige neue Privs ausprobiere, um sicherzustellen, dass sie funktionieren, verlangsamt mich das wirklich, während ich auf das Timeout warte.

Gibt es einen Befehl, den ich ausführen kann, um das Timeout zurückzusetzen?

Ich möchte das Timeout übrigens nicht ändern oder andere Benutzer beeinflussen!

Reich
quelle
Wenn Sie sudo immer noch nicht zur Eingabe eines Kennworts zwingen können, müssen Sie möglicherweise auch Benutzerregeln mit dem Vermerk "NOPASSWD" kommentieren, wenn diese im /etc/sudoers.d/Verzeichnis vorhanden sind. Ich habe die Zeile #includedir /etc/sudoers.din /etc/sudoersund zwar, dass die Zeile durch einen Kommentar deaktiviert ist, aber es sieht so aus, als ob die #vorher includedirnicht als Kommentar gelesen wird!
Taufe

Antworten:

40

sudo -kBricht den Timeout-Zeitstempel ab. Sie können den Befehl auch nachträglich eingeben, zsudo -k test_my_privileges.sh

Von man sudo:

-K Die Option -K (sure kill) entspricht der Option -k, mit der Ausnahme, dass der Zeitstempel des Benutzers vollständig entfernt und möglicherweise nicht in Verbindung mit einem Befehl oder einer anderen Option verwendet wird. Diese Option erfordert kein Passwort.

-k Wenn die Option -k (kill) für sich genommen verwendet wird, macht sie den Zeitstempel des Benutzers ungültig, indem die Zeit auf die Epoche gesetzt wird. Beim nächsten Start von sudo wird ein Passwort benötigt. Diese Option erfordert kein Kennwort und wurde hinzugefügt, um einem Benutzer das Widerrufen von sudo-Berechtigungen aus einer .logout-Datei zu ermöglichen.

Sie können es auch dauerhaft ändern. Von man sudoers:

timestamp_timeout

Die Anzahl der Minuten, die vergehen können, bevor sudo erneut nach einem Passwort fragt. Das Timeout kann eine Teilkomponente enthalten, wenn die winzige Körnigkeit nicht ausreicht, beispielsweise 2,5. Der Standardwert ist 5. Setzen Sie diesen Wert auf 0, um immer zur Eingabe eines Kennworts aufzufordern. Bei einem Wert unter 0 läuft der Zeitstempel des Benutzers niemals ab. Dies kann verwendet werden, um Benutzern das Erstellen oder Löschen eigener Zeitstempel über sudo -v bzw. sudo -k zu ermöglichen.

Shawn J. Goff
quelle
2
Achten Sie darauf , sudo -k commandwird nicht die Anmeldeinformationen entfernen. Die aktuellen Anmeldeinformationen werden einfach ignoriert und nicht gespeichert.
user1346466
Nur um das zu ergänzen. Wenn Sie das Zeitstempel-Zeitlimit ändern möchten, müssen Sie die sudoersDatei mit bearbeiten sudo visudo. Dann fügen Sie die Zeile Defaults timestamp_timeout = 0am Ende der Liste der anderen Defaultsin der Datei hinzu. Nehmen Sie die Linie wieder heraus, um zum "normalen" Timeout zurückzukehren.
Floris
Meine Folgefrage
UlfR
5

Shawns Antwort ist großartig, aber es gibt eine zusätzliche Konfigurationsoption, die in dieser Situation nützlich sein könnte.

Von man sudoers:

tty_tickets

Wenn dies festgelegt ist, müssen sich Benutzer auf einer ständigen Basis authentifizieren. Wenn dieses Flag aktiviert ist, verwendet sudo eine Datei mit dem Namen des Zeitpunkts, an dem der Benutzer angemeldet ist, im Zeitstempelverzeichnis des Benutzers. Wenn deaktiviert, wird stattdessen der Zeitstempel des Verzeichnisses verwendet.

Dieses Flag ist standardmäßig aktiviert.

Von man sudo:

Wenn die Option tty_tickets in sudoers aktiviert ist, hat der Zeitstempel eine pro-tige Granularität, überlebt jedoch möglicherweise die Sitzung des Benutzers. Auf Linux-Systemen, auf denen das devpts-Dateisystem verwendet wird, auf Solaris-Systemen mit dem Gerätedateisystem sowie auf anderen Systemen, die ein devfs-Dateisystem verwenden, das die Inode-Anzahl der erstellten Geräte monoton erhöht (z. B. Mac OS X), ist sudo in der Lage um festzustellen, wann eine tty-basierte Zeitstempeldatei veraltet ist und diese ignoriert. Administratoren sollten sich nicht auf diese Funktion verlassen, da sie nicht allgemein verfügbar ist.

Ich finde es relativ neu. Wenn Ihr System dies unterstützt, fordert sudo beim Abmelden und erneuten Anmelden Ihr Kennwort an. (Ich habe sudo -Kin meinen Shells auch ein Abmeldeskript.)

Pfeilmeister
quelle