我正在尝试使用这个为我的 ldap 启用 memberof 覆盖文章。唯一的区别是,我使用的是自定义架构objectClass
。所以我的 ldif 如下所示
dn: cn=module,cn=config
cn: module
objectClass: olcModuleList
olcModuleLoad: memberof
olcModulePath: /usr/lib/ldap
dn: olcOverlay={0}memberof,olcDatabase={1}hdb,cn=config
objectClass: olcConfig
objectClass: olcMemberOf
objectClass: olcOverlayConfig
objectClass: top
olcOverlay: memberof
olcMemberOfDangling: ignore
olcMemberOfRefInt: TRUE
olcMemberOfGroupOC: customGroup
olcMemberOfMemberAD: member
olcMemberOfMemberOfAD: memberOf
当我使用这些命令添加 ldif 文件时(第二和第三条来自文章)
sudo ldapadd -Q -Y EXTERNAL -H ldapi:/// -f memberof_config.ldif
sudo ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f /tmp/refint1.ldif
sudo ldapadd -Q -Y EXTERNAL -H ldapi:/// -f /tmp/refint2.ldif
所有内容都在我的配置中创建。但是 memberof 覆盖始终为空。以 开头的字段没有值olcMemberOf...
。当我使用 ldap 浏览器手动填充这些字段时,一切正常。但我需要它们由我的 ldif 文件填充。
我到底做错了什么?有什么想法吗?
答案1
LDIF 格式规定每个记录以空行分隔。 https://en.wikipedia.org/wiki/LDAP_Data_Interchange_Format#Content_Record_Format
olcOverlay: memberof
和之间有一个空行,这olcMemberOfDangling: ignore
意味着dn: olcOverlay={0}memberof,olcDatabase={1}hdb,cn=config
以行结尾olcOverlay: memberof
尝试抑制此行并重新导入。