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の特権を持っていますが、ユーザーがすでにパスワードを入力したという情報を保存するのに適した場所はまだありません。デーモンプロセスが関与していますか?
この情報はどこに保存されますか?
おそらく/var/db/Sudo
または/var/run/Sudo
そして、tty番号順に並べられたファイルを含むユーザー名のディレクトリが見つかるでしょう。
再度パスワードを入力する必要があるまでのセッションの持続時間を含め、実際に付与される特権は、sudoersのセットアップ方法によって異なります。多くの異なるものを許可/制限する設定がありますが、それらはタイムスタンプのみを保存するこれらのファイルには保存されません。セッションが続く時間、またはSudoがパスワードを再度要求する必要があるときは、現在の時間の差分とこのディレクトリのセッションタイムスタンプ、およびセッションが続くようにSudoがセットアップされる時間によって決まります。
man Sudo
を試して、FILESセクションを確認してください。
/ var/lib/Sudoタイムスタンプを含むディレクトリ
そしてSECURITY NOTES
Sudoは、タイムスタンプディレクトリ(デフォルトでは/ var/lib/Sudo)の所有権をチェックします[...]
(Debian 6.0.4のマニュアルページ)