コンソールユーザーがほかのアプリケーションにアクセスできるようにしたい場合は、少し余計に作業をするだけで可能です。
まず、コンソールアクセスは/sbinと/usr/sbinのいずれかに存在するアプリケーションに対してのみ有効なので、実行したいアプリケーションがそこになければいけません。それを確認した後、次のステップを実行します:
アプリケーションの名前から/usr/bin/consolehelperアプリケーションへのリンクを作成します(ここの例としてはfooプログラム):
cd /usr/bin ln -s consolehelper foo |
/etc/security/console.apps/fooファイルを作成します:
touch /etc/security/console.apps/foo |
/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分間)、アイコンは 無くなります。
ユーザーは、アイコンをクリックして、認証を無視するオプションを選択することにより キャッシュにある認証を無視できます。