In einer typischen Konfiguration ist der Befehl irrelevant. Sie müssen Ihr Passwort eingeben, wenn Sie sudo zum ersten Mal verwenden, und Sie benötigen Ihr Passwort für die nächsten 15 Minuten nicht in dieser bestimmten Shell.
Aus der Sicht des Computers gibt es keinen „Befehl, der Sudo benötigt“. Jeder Benutzer kann versuchen, einen beliebigen Befehl auszuführen. Das Ergebnis ist möglicherweise nur eine Fehlermeldung wie "Berechtigung verweigert" oder "Keine solche Datei oder kein solches Verzeichnis", aber es ist immer möglich, den Befehl auszuführen.
Wenn Sie beispielsweise du
in einem Verzeichnisbaum mit Inhalten ausgeführt werden, auf die Sie nicht zugreifen dürfen, werden Berechtigungsfehler angezeigt. Das ist es, was "Erlaubnis verweigert" bedeutet. Wenn Sie ausführen sudo du
, wird sudo du
als root ausgeführt, sodass Sie keine Berechtigungsfehler erhalten (das ist der Punkt des Root-Kontos: root¹ hat immer die Berechtigung). Wenn Sie ausgeführt werden sudo du
, wird es du
als root ausgeführt und sudo
ist nach dem du
Start überhaupt nicht beteiligt . Ob du auf Berechtigungsfehler stößt, ist für die Funktionsweise von sudo völlig irrelevant.
Es gibt Befehle, die sudo benötigen , um etwas Nützliches zu tun . Nützlichkeit ist ein menschliches Konzept. Sie müssen sudo (oder andere Methoden zum Ausführen des Befehls als root) verwenden, wenn der Befehl beim Ausführen als root etwas Nützliches tut, jedoch nicht, wenn er unter Ihrem Konto ausgeführt wird.
Ob sudo nach Ihrem Passwort fragt, hängt von zwei Dingen ab.
- Basierend auf der Konfiguration entscheidet sudo, ob Sie authentifiziert werden müssen. Standardmäßig benötigt sudo ein Passwort. Dies kann auf verschiedene Arten deaktiviert werden, einschließlich der Einstellung der
authenticate
Option auf false und der Verwendung einer anwendbaren Regel für das NOPASSWD
Tag.
- Wenn sudo Ihr Passwort benötigt, kann es zufrieden sein, einen zwischengespeicherten Wert zu verwenden. Das ist in Ordnung, weil der Grund, warum sudo Ihr Passwort benötigt, nicht darin besteht, zu authentifizieren, wer es anruft (sudo weiß, welcher Benutzer es aufgerufen hat), sondern zu bestätigen, dass Sie immer noch bei den Befehlen sind und nicht jemand, der die Kontrolle über Ihre Tastatur übernommen hat. Standardmäßig ist sudo bereit zu glauben, dass Sie immer noch bei den Befehlen sind, wenn Sie Ihr Passwort vor weniger als 15 Minuten eingegeben haben (dies kann mit der
timeout
Option geändert werden ). Sie müssen das Kennwort im selben Terminal eingegeben haben. Wenn Sie also an einem Terminal angemeldet bleiben, dieses Terminal unbeaufsichtigt lassen und dann ein anderes Terminal verwenden, kann jemand 'tty_tickets
¹ fast, aber das würde den Rahmen dieses Threads sprengen.