Unix
pam_ldap.so 在 pam_unix.so 之前?有可能嗎?
我們有幾台帶有 PAM+LDAP 的伺服器。
配置是標準的(參見http://arthurdejong.org/nss-pam-ldapd/setup>或<http://wiki.debian.org/LDAP/PAM)。例如,/etc/pam.d/common-auth 包含:
auth sufficient pam_unix.so nullok_secure auth requisite pam_succeed_if.so uid >= 1000 quiet auth sufficient pam_ldap.so use_first_pass auth required pam_deny.so
當然,它適用於 ldap 和本地使用者。但是每次登錄都首先進入 pam_unix.so,失敗,然後才成功嘗試 pam_ldap.so。結果,對於每個 ldap 使用者登錄,我們都有一個眾所周知的失敗消息:
pam_unix(<some_service>:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=<some_host> user=<some_user>
我每天有多達 60000 條這樣的日誌消息,我想更改配置,以便 PAM 將首先嘗試 ldap 身份驗證,並且只有在失敗時 - 嘗試 pam_unix.so(我認為它可以提高 i/o 性能伺服器)。但是,如果我將 common-auth 更改為以下內容:
auth sufficient pam_ldap.so use_first_pass auth sufficient pam_unix.so nullok_secure auth required pam_deny.so
然後我根本無法使用本地(非 ldap)使用者(例如,通過 ssh)登錄。
有人知道正確的配置嗎?為什麼 Debian 和 nss-pam-ldapd 一開始預設有 pam_unix.so?真的沒有辦法改變嗎?
先感謝您。
PS 我不想禁用日誌,但想首先設置 ldap 身份驗證。
hayalci 在評論中回答:
auth sufficient pam_ldap.so auth sufficient pam_unix.so nullok_secure try_first_pass auth required pam_deny.so
如果本地使用者和網路使用者在不同的 uid 範圍內(這是個好主意),您可以添加這樣一行(假設本地使用者在 0-4999 範圍內):
auth [success=1 default=ignore] pam_succeed_if.so uid >= 5000 quiet
行前
pam_unix.so
。如果 uid >= 4999,它將通過 1 行。它將直接轉到 pam_ldap.so。如果您之前沒有要求輸入密碼的線路,則必須更改
pam_ldap.so use_first_pass
為。pam_ldap.so``pam_ldap.so try_first_pass``pam_ldap.so
我會測試:
auth [success=1 default=ignore] pam_succeed_if.so uid >= 4999 quiet auth sufficient pam_unix.so nullok_secure auth requisite pam_succeed_if.so uid >= 4999 quiet auth sufficient pam_ldap.so auth required pam_deny.so