Debian

具有固定預設屬性的 ldap-overlay

  • February 10, 2016

我有一個較大的使用者群(>>1000),應該能夠共同使用一些共享服務。

使用者群在緩慢但不斷地變化。

尤其是 我們對權限分離不感興趣(所有使用者都是平等的),因此他們可以從權限 pov 共享一個帳戶。但是,出於安全原因,我們不能使用共享憑據。幸運的是,所有使用者都可以通過 LDAP 獲得自己的使用者名/密碼。

所以我們實現了一個登錄伺服器(Debian 上的 ssh),人們通過 PAM 和 OpenLDAP 進行身份驗證。

現在 LDAP 伺服器沒有提供太多資訊,只提供使用者名和身份驗證功能。esp,它缺少 aobjectClass: posixAccount和伴隨的屬性

  • uidNumber
  • gidNumber
  • loginShell
  • homeDirectory

我對 LDAP 伺服器的訪問非常有限(尤其是,我不能要求添加這些或任何其他屬性),基本上它只允許我對使用者進行身份驗證。

現在好消息是,如果所有使用者對這些屬性具有相同的值,我並不十分在意。

所以我最終實現了一個使用translucent覆蓋來添加缺失屬性的代理 ldap 伺服器。覆蓋數據是通過一個腳本生成的,該腳本從上游 LDAP 數據創建一個精簡的 LDIF 文件,然後用於填充半透明數據庫。

這工作正常,但我不喜歡它的可維護性 POV:因為使用者群正在改變,我需要手動定期更新數據庫(它很少改變 - 每隔幾個月 - 所以它不是很多工作,但它也容易忘記)。

因為覆蓋數據是如此微不足道(所有對象的屬性/值都相同),我認為必須有更好的方法。理想情況下,我希望有一個疊加層,它將這些屬性添加到所有對象(匹配給定的搜尋項)。

為了使事情複雜一點,我們還針對另一個提供posixAccount-data 的 LDAP 伺服器對另一個使用者群進行身份驗證;這個組的使用者當然不應該受到其他組所需的所有疊加魔法的影響;我認為這排除了在 PAM 方面所做的任何魔術。

原建議:

我建議使用nss-pam-ldapd 包並使用nslcd 映射在沒有來自 ldap 的值時為使用者帳戶提供預設值。

根據 nslcd.conf 的文件,也可以導出 uid/gid:

passwd 和組映射中的 uidNumber 和 gidNumber 屬性可以映射到 objectSid 後跟域 SID,以從 SID 派生數字使用者和組 id(例如 objectSid:S-1-5-21-3623811015-3361044348-30300820) .

選項#2a:

因此,根據您提到的內容,您似乎需要保留目錄的鏡像。

您能否簡單地更新您擁有的腳本,使其以非破壞性方式工作(即只添加它在本地找不到的帳戶/屬性)並讓它每天通過 cron 執行一次?

選項#2b

如果您可以設置本機 1-way LDAP 複製(從上游目錄到本地目錄),然後使用覆蓋層或由事件觸發的腳本(反過來執行本地 ldapmodify)日誌,提供缺失的屬性?

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