Wenn Sie sudo unter Linux verwenden, werden Sie aufgefordert, das root-Passwort einzugeben, jedoch nur beim ersten Start. Wenn Sie einen anderen sudo-Befehl ausführen, merkt er sich, dass Sie das Kennwort bereits eingegeben haben, und fragt nicht danach:
thomas@ubuntu:~$ sudo id
[sudo] password for thomas: ******
uid=0(root) gid=0(root) groups=0(root)
thomas@ubuntu:~$ sudo id
uid=0(root) gid=0(root) groups=0(root)
Wie macht sudo das? Wo werden diese Informationen gespeichert? Meine Idee ist, dass es sich die Terminal-ID merkt (wie pts / 1), aber wo ist diese gespeichert? Der erste Sudo-Prozess ist beendet, wenn der Befehl ausgeführt wurde, oder?
Ich weiß, dass sudo ein Setuid-Programm ist, daher hat es die ganze Zeit Root-Rechte, aber ich kann mir immer noch keinen guten Ort zum Speichern von Informationen vorstellen, für die ein Benutzer bereits ein Passwort eingegeben hat. Gibt es einen Daemon-Prozess?
Antworten:
Es ist wahrscheinlich unter
/var/db/sudo
oder/var/run/sudo
und Sie werden wahrscheinlich Verzeichnisse von Benutzernamen mit Dateien darunter finden, die nach der Tty-Nummer sortiert sind.Die tatsächlich gewährten Berechtigungen, einschließlich der Dauer der Sitzungen, bevor Sie Ihr Kennwort erneut eingeben müssen, hängen davon ab, wie sudoers eingerichtet ist. Es gibt Einstellungen, um viele verschiedene Dinge zu gewähren / einzuschränken, aber diese werden nicht in diesen Dateien gespeichert, die nur Zeitstempel speichern. Wie lange eine Sitzung dauert oder wann sudo erneut nach Ihrem Kennwort fragen muss, wird durch ein Delta der aktuellen Zeit und den Sitzungszeitstempel in diesem Verzeichnis bestimmt und wie lange sudo so eingerichtet ist, dass eine Sitzung dauert.
quelle
Probieren Sie
man sudo
den Abschnitt DATEIEN aus:Und im
SECURITY NOTES
(Manpages von Debian 6.0.4)
quelle