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


27

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
ここにsudoの仕組みの概要があります:aplawrence.com/Basics/sudo.htmlパスワードを記憶するsudoの動作を詳しく説明します(デフォルトのタイムアウトは5分です)が、sudoがパスワードを記憶する方法の詳細はカバーしていません。それでも面白い。

12
ただ、小さな補正、sudoはお願いします、あなたの rootのパスワードは、パスワードではありません

回答:


16

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

おそらく/var/db/sudoorの下にあり、/var/run/sudoおそらくtty番号順に並べられたファイルを持つユーザー名のディレクトリを見つけるでしょう。

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


2
どのくらいの時間については、ubuntu docsから:「sudoを使用する場合、パスワードはデフォルトで15分間保存されます。」

11

man sudoFILESセクションを試してみてください:

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

そして SECURITY NOTES

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.