10.3. PAM と管理認証情報のキャッシング
GNOME の
control-center
など、Red Hat Enterprise Linux の多くのグラフィカル管理ツールは、pam_timestamp.so
モジュールを使用して最大 5 分間ユーザーに昇格された特権を提供します。このメカニズムの仕組みを理解することが重要です。これは、pam_timestamp.so
が有効であるときに端末から離れたユーザーが、コンソールに物理的にアクセスできるユーザーによってマシンを開いたままにするためです。
PAM タイムスタンプスキームでは、グラフィカル管理アプリケーションにより、起動時に root パスワードの入力が求められます。ユーザーが認証されると、
pam_timestamp.so
モジュールはタイムスタンプファイルを作成します。デフォルトでは、これは /var/run/sudo/
ディレクトリーに作成されます。タイムスタンプファイルがすでに存在する場合は、グラフィカル管理プログラムではパスワードの入力が求められません。代わりに、pam_timestamp.so
モジュールはタイムスタンプファイルを最新の状態にし、ユーザーの不完全な管理アクセスを 5 分追加で保持します。
/var/run/sudo/
ユーザー ディレクトリーのファイルを確認して、タイムスタンプファイルの実際の状態を確認できます。デスクトップでは、関連するファイルは unknown:root
です。これが存在し、タイムスタンプが 5 分未満の場合は、認証情報が有効です。
タイムスタンプファイルが存在すると、パネルの通知スペースに認証アイコンが表示されます。
図10.1 認証アイコン

[D]
10.3.1. 一般的な pam_timestamp ディレクティブ
pam_timestamp.so
モジュールは、以下の 2 つのインターフェイスを提供します。
- auth
- session
さらに、
pam_timestamp.so
では、以下のオプションを利用できます。
- timestamp_timeout: タイムスタンプファイルの有効期間(秒単位)を指定します。デフォルトは 300 (5 分)です。
- timestampdir: タイムスタンプファイルを保存するディレクトリーを指定します。デフォルトは /var/run/sudo/ です。
- 詳細メッセージには verbose または debug を使用することもできます。
以下に例を示します。
auth sufficient pam_timestamp.so timestamp_timeout=600 session optional pam_timestamp.so
PAM のディレクティブの使用および設定方法は、「PAM 設定ファイルについて」 を参照してください。
pam_timestamp (8)
man ページと pam.conf (5
)の man ページも参照してください。
10.3.2. タイムスタンプファイルの削除
PAM タイムスタンプがアクティブなコンソールを利用する前に、タイムスタンプファイルを破棄することが推奨されます。グラフィカル環境でこれを行うには、パネルの認証アイコンをクリックします。これにより、ダイアログボックスが開きます。
ボタンをクリックして、アクティブなタイムスタンプファイルを破棄します。
図10.2 認証ダイアログを閉じる

[D]
PAM タイムスタンプファイルには、以下の重要な特徴があります。
- ssh を使用してシステムにリモートでログインしている場合は、/sbin/pam_timestamp_check -k root コマンドを使用してタイムスタンプファイルを破棄します。
- 特権アプリケーションが起動されたものと同じターミナルウィンドウから /sbin/pam_timestamp_check -k root コマンドを実行します。
pam_timestamp.so
モジュールを最初に起動したログイン済みユーザーは、/sbin/pam_timestamp_check -k コマンドを実行するユーザーである必要があります。このコマンドは、root で実行しないでください。- アイコン上の /sbin/pam_timestamp_check コマンドを使用します。アクションを使用せずにデスクトップで認証情報を強制終了するには、
/sbin/pam_timestamp_check -k root </dev/null >/dev/null 2>/dev/null
他の方法は、コマンドが実行される PTY から認証情報を削除するだけです。
pam_timestamp_check
を使用してタイムスタンプファイルを破棄する方法は、pam_timestamp_check の man ページを参照してください。