24.6. ほかのアプリケーションに対するコンソールアクセスの有効化

コンソールユーザーがほかのアプリケーションにアクセスできるようにしたい場合は、少し余計に作業をするだけで可能です。

まず、コンソールアクセスは/sbin/usr/sbinのいずれかに存在するアプリケーションに対してのみ有効なので、実行したいアプリケーションがそこになければいけません。それを確認した後、次のステップを実行します:

  1. アプリケーションの名前から/usr/bin/consolehelperアプリケーションへのリンクを作成します(ここの例としてはfooプログラム):

    cd /usr/bin
    ln -s consolehelper foo
  2. /etc/security/console.apps/fooファイルを作成します:

    touch /etc/security/console.apps/foo
  3. /etc/pam.d/内にfooサービスのためのPAM設定ファイルを作成します。これを行う簡単な方法として、まずhaltサービスのPAM設定ファイルをコピーし、その後、その動作を変更したい場合はファイルを変更します。

    cp /etc/pam.d/halt /etc/pam.d/foo

これで、/usr/bin/fooを実行すると、consolehelperが呼び出されます。このコマンドは、/usr/sbin/userhelperを利用してユーザーを認証します。ユーザーを認証するために、/etc/pam.d/foo/etc/pam.d/haltのコピーであれば、consolehelperはユーザーのパスワードを要求し(それ以外は/etc/pam.d/fooで指定されている内容を正確に実行します)、次にroot権限で/usr/sbin/fooを実行します。

PAM設定ファイルの中で、アプリケーションは成功した認証要請を記憶(キャッシュに入れる)する為に pam_timestampモジュールを使用する設定が出来ます。アプリケーションが スタートして正式な認証(ルートのパスワード)が用意された時に、時間スタンプが生成されます。 ディフォルトでは、成功した認証はキャッシュに5分間だけ記憶されます。この5分間は pam_timestampを使用して、同じセッションから実行するように設定 されている他のアプリケーションはどれもそのユーザーの為に自動的に認証されます。 —ユーザーは再度ルートパスワードを入力する必要がありません。

このモジュールはpamパッケージの中に含まれています。 この機能を有効にするにはetc/pam.d/の中のPAM設定ファイルが 以下の行を含む必要があります。

auth sufficient /lib/security/pam_timestamp.so
session optional /lib/security/pam_timestamp.so

authで始まる最初の行は、他のauth sufficientの行の後に来るようにし、sessionで 始まる行は、他のsession optional行の後に来るように しなければなりません。

pam_timestampを使用するように設定されている アプリケーションがメインメニューボタン (パネル上)から認証されると、GNOMEデスクトップ環境を使用している場合、 パネル部分の通知区域にアイコン が 表示されます。認証が時間切れになると(ディフォルトでは5分間)、アイコンは 無くなります。

ユーザーは、アイコンをクリックして、認証を無視するオプションを選択することにより キャッシュにある認証を無視できます。