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 duin 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 duals 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 duals root ausgeführt und sudoist nach dem duStart ü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
authenticateOption auf false und der Verwendung einer anwendbaren Regel für das NOPASSWDTag.
- 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
timeoutOption 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.