Linux

管理 LDAP 登錄到沒有 pam_groupdn 的機器:允許多個組

  • August 29, 2015

我相信你們中的一些人已經處理過同樣的問題。我希望有人有比我現在做的更好的答案。

因此,您在 LDAP 目錄中有一些使用者,有一天您說“嘿!我可以針對這個東西進行 SSH 身份驗證!” 這很好。

然後有一天你意識到你只希望某些使用者能夠進入一台機器。比如說,開發人員應該只能進入開發框,而不是產品。你做一些Google搜尋並找到pam_groupdn你的 LDAP 配置(/etc/ldap.conf)中的內容,如下所示:

pam_groupdn CN=developers,OU=groups,DC=yourcompany

而且,這很好。你為產品創建另一個小組,另一個為 QA 等。也許有一天你有第二個產品開發小組,所以他們有自己的小組。任何。

然後有一天,您擁有一台伺服器,開發人員和 QA 都需要能夠登錄到該伺服器。呃……事實證明,pam_groupdn它不需要多個值。你做什麼工作?好吧,如果你沒有想太多,你會說“哦,我會組建一個開發人員和 QA 小組!”。

pam_groupdn CN=developers-and-QA,OU=groups,DC=yourcompany

這……不好,但沒關係,對吧?

然後有一天你找到了另一個開發人員,你意識到你需要將他們添加到 15 個組中,因為有、developers-and-QA等等。廢話。product1-and-product2``developers-who-have-access-to-prod

必須有更好的方法來做到這一點,對吧?我給 的開發人員發了電子郵件pam_ldap,他們說不幸的是,沒有辦法pam_groupdn獲取多個值(無需修改程式碼)。

任何人都想分享他們如何在不借助複製/粘貼的情況下管理 LDAP 中的組?

如果您使用的是 NSS,您可以AllowGroups/etc/ssh/sshd_config. 如果沒有,您應該查看動態列表

dn: cn=devandqa,ou=groups,dc=company,dc=com
cn: devandqa
objectClass: groupOfNames
labeledURI: ldap:///ou=groups,dc=company,dc=com?memberUid?one?(|(cn=developers)(cn=qa))

類似的東西。您還需要包含架構並包含覆蓋等……所以這是一個開始。

一個可行的解決方案是應用 apam_filter而不是pam_groupdnin /etc/ldap.conf

# Filter to AND with uid=%s
pam_filter |(member=CN=developers,OU=groups,DC=yourcompany)(member=CN=QA,OU=groups,DC=yourcompany)

“Filter to AND with uid=%s”表示發送到 LDAP 伺服器的過濾器將如下所示:&(uid=<your username>)(<your pam_filter>)

使用者必須是developersor的成員QA。如果他不是這些組之一的成員,則 LDAP 伺服器的響應中會出現錯誤消息,並且密碼甚至不會發送到 LDAP 伺服器。

適用於我的 RHEL 5.8 環境。

對於不同的過濾器變體,請檢查Google的“ldap過濾器語法”……

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