Linux

pam_env.so 到底是做什麼的?

  • August 5, 2020

具有以下行:

auth        required      pam_env.so

文件說:

第一個模組執行,*pam_env*可選地設置或清除在 中指定的環境變數/etc/security/pam_env.conf。該模組是必需的——它必須成功執行才能繼續進行身份驗證。

Practical UNIX and Internet Security,第 3 版 ,Simson Garfinkel、Gene Spafford、Alan Schwartz / Pluggable Authentication Modules (PAM)

偉大的!“成功執行”的真正含義是什麼?我知道它從中載入變數/etc/security/pam_env.conf (順便說一下,在 CentOS 和 Ubuntu 中,它的所有行都被註釋掉了)。請你能解釋一下這到底是什麼意思嗎?

這個模組怎麼會執行不成功?或者只是載入變數,這與身份驗證有什麼關係?

我已閱讀pam.conf手冊頁

必需的

這種 PAM 的失敗最終會導致 PAM-API 返回失敗,但只有在呼叫了剩餘的堆疊模組(針對此服務和 類型)之後。

也許,我錯過了一些東西,但它沒有說明這個話題。

總而言之,為什麼類型是 auth,而不是 session?

pam_env手冊頁說:

RETURN VALUES
  PAM_ABORT
      Not all relevant data or options could be gotten.

  PAM_BUF_ERR
      Memory buffer error.

  PAM_IGNORE
      No pam_env.conf and environment file was found.

  PAM_SUCCESS
      Environment variables were set.

此外,如果您的系統嚴重損壞,pam_env.so 本身可能無法執行(例如,文件系統損壞,或 32 位核心上的 64 位二進製文件),這將返回錯誤值。

它在auth堆棧中的原因是後續的 PAM 模組可能依賴於已設置的內容(這就是它的原因required)。

引用自:https://unix.stackexchange.com/questions/200580