web-dev-qa-db-ja.com

Sudoは、すでにrootのパスワードを入力したことをどのように覚えていますか?

LinuxでSudoを使用すると、rootパスワードが要求されますが、初めて実行するときだけです。別のSudoコマンドを実行すると、以前にパスワードを入力したことがあり、パスワードを要求しません。

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)

須藤はそれをどのように行うのですか?この情報はどこに保存されますか?私の考えでは、(pts/1のような)端末IDを記憶していますが、これはどこに保存されますか?最初のSudoプロセスは、コマンドで完了すると終了しますよね?

Sudoはsetuidプログラムであることを知っているので、常にrootの特権を持っていますが、ユーザーがすでにパスワードを入力したという情報を保存するのに適した場所はまだありません。デーモンプロセスが関与していますか?

28
kuba

この情報はどこに保存されますか?

おそらく/var/db/Sudoまたは/var/run/Sudoそして、tty番号順に並べられたファイルを含むユーザー名のディレクトリが見つかるでしょう。

再度パスワードを入力する必要があるまでのセッションの持続時間を含め、実際に付与される特権は、sudoersのセットアップ方法によって異なります。多くの異なるものを許可/制限する設定がありますが、それらはタイムスタンプのみを保存するこれらのファイルには保存されません。セッションが続く時間、またはSudoがパスワードを再度要求する必要があるときは、現在の時間の差分とこのディレクトリのセッションタイムスタンプ、およびセッションが続くようにSudoがセットアップされる時間によって決まります。

17
Jon Lin

man Sudoを試して、FILESセクションを確認してください。

/ var/lib/Sudoタイムスタンプを含むディレクトリ

そしてSECURITY NOTES

Sudoは、タイムスタンプディレクトリ(デフォルトでは/ var/lib/Sudo)の所有権をチェックします[...]

(Debian 6.0.4のマニュアルページ)

11
Andreas Florath