Authentication

對 PAM 使用更複雜的 AND/OR 結構

  • March 7, 2015

PAM 允許使用sufficentrequired一些邏輯,比如

auth sufficient pam_a.so
auth required pam_b.so
auth required pam_c.so

這意味著“要麼 a 為真,要麼 b 必須為真,然後 c 必須為真”。

是否可以進行更複雜的操作?像“(a或b)和(c或d)”或“(a和b)或(c和d)”?可能還有更多層次的括號。

是的,可以跳過任意數量的行是有邏輯的。沒有“分組括號”或類似的東西,但是如果您將剛才提到的邏輯與跳過行的能力結合起來,您可以有選擇地排除行為。

這是我個人伺服器的一個例子:

# Skip Google authenticator check if they're coming from a local IP.
auth    [success=1 default=ignore] pam_access.so accessfile=/etc/security/access/nogoogle.conf noaudit
auth    required        pam_google_authenticator.so nullok

如果源 IP 來自我的本地網路,我真的不需要雙重身份驗證,所以我使用pam_access.so檢查的結果來跳過成功的一行。如果檢查失敗,則不會發生任何事情並檢查下一行。

pam.conf您可以在手冊頁中找到有關此內容的更多資訊。搜尋“值 1”。本節開始如下:

  For the more complicated syntax valid control values have the following form:

            [value1=action1 value2=action2 ...]

  Where valueN corresponds to the return code from the function invoked in the
  module for which the line is defined.
  ...

請記住,此邏輯要復雜得多,如果人們編輯您的 PAM 配置而沒有註意到存在跳行,他們可能會在錯誤的位置添加或刪除行,從而導致各種混亂。

引用自:https://serverfault.com/questions/673784