24.6. 啟用其他應用程式的主控台存取

假如您想要讓主控台的使用者存取其他應用程式,您必須要做一些較複雜的動作。

首先,主控台存取 適用於位於 /sbin/usr/sbin 中的應用程式,所以您想要執行的應用程式必須在那裡。 在確認過後,請遵照以下步驟:

  1. 建立一個應用程式名稱的連結(例如我們的範例程式 foo)到 /usr/bin/consolehelper 應用程式:

    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 的輔助來認證使用者。 如要認證使用者,consolehelper 假如 /etc/pam.d/foo 檔案是 /etc/pam.d/halt 的複本,consolehelper 將會詢問使用者的密碼(否則它將會確實執行 /etc/pam.d/foo 檔案中所指定的事項),然後再以 root 的權限執行 /usr/sbin/foo

在 PAM 的設定檔案中,可以設定一個應用程式以使用 pam_timestamp 模組來記憶(快取)一個成功的認證過程。 當您啟動一個應用程式並且提供適當的認證資訊(root 密碼),將會建立一個時間戳檔案。 預設情況下,一次成功的認證將會快取五分鐘,在這個期間中,任何其他設定來使用 pam_timestamp 的應用程式,如在同一個作業階段執行將會自動地認證為這個使用者 — 這個使用不需要再次輸入 root 密碼。

這個模組收錄在 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 分鐘),該圖示便會消失。

使用者可以選擇要忘記快取的認證資訊,只要點選該圖示然後選擇要忘記認證資訊的選項。