Wenn Sie sudo
auf einen Befehl anwenden , der eigentlich nicht benötigt wird sudo
,
Manchmal werde ich nicht nach meinem Passwort gefragt. Zum Beispiel unter meinem
$HOME
,sudo ls
.Aber ich erinnere mich, dass es für einen anderen Befehl gilt, obwohl ich vergesse, welcher.
Also habe ich mich gefragt, wie ich sudo
entscheiden soll, ob ich nach einem Passwort fragen soll, wenn ich einen Befehl bekomme, der eigentlich nicht benötigt wird sudo
. Gibt es eine Regel, um das /etc/sudoers
anzugeben?
Mein eigentliches Problem ist, dass bei der Verwendung du
für einige Verzeichnisse manchmal "Berechtigung verweigert" angezeigt wird und manchmal nicht, wahrscheinlich, weil ich für einige Verzeichnisse keine Berechtigung habe. Ich bewerbe ich sudo
um du
unabhängig, und dachte , dass ich unabhängig nach einem Passwort gefragt werden würde, aber eigentlich nicht auf meinem eigenen Verzeichnis.
Antworten:
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ührensudo du
, wird sudodu
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 werdensudo du
, wird esdu
als root ausgeführt undsudo
ist nach demdu
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.
authenticate
Option auf false und der Verwendung einer anwendbaren Regel für dasNOPASSWD
Tag.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.
quelle
sudo
weiß nicht, ob der Befehl, den er ausführen soll, als ein anderer Benutzer (normalerweise root) ausgeführt werden muss. Er weiß nur, dass er konfiguriert ist. Dies bestimmt, welche Benutzer ausgeführt werden dürfensudo
, mit welchen Benutzern als "Ziele" und für welche Befehle. Außerdem wird festgelegt, ob und welches Kennwort benötigt wird und ob ein Authentifizierungstoken aufbewahrt werden soll.Wenn Sie die Standard-Debian-Konfiguration verwenden, handelt es sich höchstwahrscheinlich um letztere: Hier
sudo
werden Sie nach Ihrem Kennwort gefragt, wenn Sie es zum ersten Mal in einem bestimmten Terminal verwenden. Anschließend wird ein Authentifizierungstoken für einen bestimmten Zeitraum gespeichert. Wenn Siesudo
innerhalb dieses Zeitraums im selben Terminal wiederverwenden , werden Sie nicht zur Eingabe eines Kennworts aufgefordert.quelle
sudo du /path/to/some/dir
sollte entweder immer mein Passwort benötigen oder nie, unabhängig davon/path/to/some/dir
?/etc/sudoers
Befehle und deren Argumente angeben können. Wenn Sie jedoch nichts Ähnliches hinzugefügt habensudoers
(und wenn ja , sollte ich hoffen, dass Sie sich dessen bewusst sind), spielen die Argumente keine Rolle (und der Befehl auch nicht, wenn Sie allgemeinen Zugriff auf root via habensudo
).sudo
speichert Ihr Passwort nicht im Cache, sondern nur die Information, dass Ihre Identität bereits einmal mit einer Passwortprüfung überprüft wurde. Dasudo
es sich um ein Setuid-Root-Programm handelt, verfügt es bereits über alle erforderlichen Berechtigungen, um alles wie jeder andere auszuführen. Es wird jedoch davon ausgegangen, dass nur die Benutzer es genau wie in dersudoers
Datei angegeben verwenden und alle anderen Verwendungsversuche ablehnen können . Deshalb ist es wichtig, dasssudo
es sich um ein so kleines und sehr gut studiertes Programm handelt.Es ist nicht so, dass ein Befehl Sudo braucht oder nicht braucht . Wenn du rennst
Das System wird
command
als ausgeführtuser
.Ob der Aufruf erfolgreich ist oder nicht und ob ein Kennwort abgefragt wird oder nicht, hängt von der Sicherheitsrichtlinie ab
sudoers
(normalerweise konfiguriert in/etc/sudoers
).quelle