sudoは、ユーザーが入力したルートパスワードをどのように覚えていますか?

sudoは、ユーザーが入力したルートパスワードをどのように覚えていますか?

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)

sudoはどうすればいいですか?この情報はどこに保存されますか?私の考えでは端末ID(例:pts / 1)を覚えていますが、どこに保存されていますか?最初のsudoプロセスは、このコマンドを実行した後に終了します。そうですか?

sudoがsetuidプログラムであることを知っているので、常にroot権限を持っていますが、ユーザーがパスワードを入力した情報を保存するための適切な場所はまだ考えられていません。デーモンプロセスは関連していますか?

答え1

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

その下にあるファイルまたはtty番号でソートされたファイルを含む/var/db/sudoユーザー/var/run/sudo名ディレクトリを見つけることができます。

パスワードの再入力が必要になるまでセッションが持続する期間を含め、実際に付与される権限は、sudoer の設定方法によって異なります。さまざまな設定を許可/制限する設定がありますが、タイムスタンプのみを保存するファイルには保存されません。セッションが継続する期間、またはsudoがパスワードを再入力する必要がある時期は、現在の時間の増加、このディレクトリのセッションタイムスタンプ、およびセッションの継続を許可するようにsudoが設定されている期間によって決まります。

答え2

man sudoFILESセクションを見てください。

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

そしてSECURITY NOTES

sudoはタイムスタンプディレクトリの所有権を確認します(デフォルトは/var/lib/sudo)[...]

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

関連情報