我在 Debian 7.1 (OpenLDAP 2.4.31) 上設定了 OpenLDAP,並且我正在嘗試設定 memberof 覆蓋層。我的配置就像我在互聯網上的許多網站上閱讀的那樣,但是,它仍然對我不起作用。
問題是實體的 memberOf 屬性僅在建立群組時更新,但在修改或刪除群組時不會更新。事實上,同樣的問題曾經在這裡被問過:如何在 openldap 伺服器上設定反向群組成員維護? (成員),但即使檢查為已回答,我也無法在答案中找到任何有用的信息。 (即使是原發文者也無法根據評論對答案做任何事情......)
我的配置是這樣的:cn=config/cn=module{0}.ldif
dn: cn=module{0}
objectClass: olcModuleList
cn: module{0}
olcModulePath: /usr/lib/ldap
olcModuleLoad: {0}back_hdb
olcModuleLoad: {1}memberof
structuralObjectClass: olcModuleList
對於模組:cn=config/olcDatabase={1}hdb/olcOverlay={0}memberof.ldif
dn: olcOverlay={0}memberof
objectClass: olcMemberOf
objectClass: olcOverlayConfig
olcOverlay: {0}memberof
structuralObjectClass: olcMemberOf
olcMemberOfGroupOC: groupOfNames
olcMemberOfMemberAD: member
olcMemberOfMemberOfAD: memberOf
olcMemberOfRefInt: TRUE
我新增的群組:
dn: cn=test,ou=services,dc=x,dc=y
cn: test
objectClass: groupOfNames
objectClass: top
description: test group
member: cn=Almafa Teszt,ou=users,dc=x,dc=y
我執行的查詢:
$ ldapsearch -LLL -h localhost -x -D cn=admin,dc=x,dc=y -b u=users,dc=x,dc=y -W '(memberOf=cn=test,ou=services,dc=x,dc=y)' memberOf
所以問題不在於如何查詢屬性,而是修改或刪除群組後,搜尋結果沒有改變...
更新:對於 Brian 的回答,我還設定了 refint 覆蓋,配置如下:
$ ldapsearch -LLL -b cn=module{0},cn=config
dn: cn=module{0},cn=config
objectClass: olcModuleList
cn: module{0}
olcModulePath: /usr/lib/ldap
olcModuleLoad: {0}back_hdb
olcModuleLoad: {1}memberof.la
olcModuleLoad: {2}refint
$ ldapsearch -LLL -b olcOverlay={1}refint,olcDatabase={1}hdb,cn=config
dn: olcOverlay={1}refint,olcDatabase={1}hdb,cn=config
objectClass: olcConfig
objectClass: olcOverlayConfig
objectClass: olcRefintConfig
objectClass: top
olcOverlay: {1}refint
olcRefintAttribute: memberof member manager owner
但它既沒有修復覆蓋層的成員,也沒有本身起作用。當我修改群組成員的名稱時,群組的成員屬性沒有更新。這兩個問題可能有關聯嗎?
答案1
聽起來您可能需要配置重新建置覆蓋,這有助於在您所描述的情況下維護目錄的參考完整性。有一個頁面位於http://www.zarafa.com/wiki/index.php/OpenLDAP_referential_integrity這可能有助於設定此覆蓋。
答案2
我們遇到了相同的問題(與您描述的症狀相同)。事實證明,我們在So add(例如)olcRootDN
中丟失了。dn: olcDatabase={1}hdb,cn=config
olcRootDN: cn=admin,cn=config