我的主要目标是能够在现有的“groupOfNames”条目中添加“member”属性,并将匹配的“memberOf”属性添加到我提供的DN中.
到目前为止我成功实现的目标:
我仍然是LDAP管理的新手,但基于我在openldap管理员指南中找到的内容,它看起来像Reverse Group Membership Maintence又称“覆盖成员”将达到我正在寻找的效果.
我的服务器当前正在运行openldap 2.4.15的软件包安装(ubuntu上的slapd),它使用“cn = config”样式运行时配置.我发现的大多数示例仍然引用了较旧的“slapd.conf”静态配置方法,我已尽力使配置适应新的基于目录的模型.
我添加了以下条目以启用overlayof成员模块:
使用olcModuleLoad启用模块
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.la structuralObjectClass: olcModuleList entryUUID: a410ce98-3fdf-102e-82cf-59ccb6b4d60d creatorsName: cn=config createTimestamp: 20090927183056Z entryCSN: 20091009174548.503911Z#000000#000#000000 modifiersName: cn=admin,cn=config modifyTimestamp: 20091009174548Z
启用数据库的叠加并允许它使用它的默认设置(groupOfNames,member,memberOf等)
cn=config/olcDatabase={1}hdb/olcOverlay\=\{0\}memberof dn: olcOverlay={0}memberof objectClass: olcMemberOf objectClass: olcOverlayConfig objectClass: olcConfig objectClass: top olcOverlay: {0}memberof structuralObjectClass: olcMemberOf entryUUID: 6d599084-490c-102e-80f6-f1a5d50be388 creatorsName: cn=admin,cn=config createTimestamp: 20091009104412Z olcMemberOfRefInt: TRUE entryCSN: 20091009173500.139380Z#000000#000#000000 modifiersName: cn=admin,cn=config modifyTimestamp: 20091009173500Z
我目前的结果:
通过使用上面的配置,我可以添加一个包含任意数量“member”条目的NEW“groupOfNames”,并使用“memberOf”属性更新所有涉及的DN.这是我期望的行为的一部分.虽然我认为应该用覆盖成员完成以下操作,但我仍然不知道如何做以下操作,我很乐意欢迎任何建议:
>将“member”属性添加到EXISTING“groupOfNames”,并自动创建相应的“memberOf”属性.
>删除“member”属性并自动删除相应的“memberOf”属性.
dn: cn=module,cn=config objectClass: olcModuleList cn: module olcModulePath: /usr/lib/ldap olcModuleLoad: memberof
第二个LDIF文件:
dn: olcOverlay=memberof,olcDatabase={1}hdb,cn=config objectClass: olcMemberOf objectClass: olcOverlayConfig objectClass: olcConfig objectClass: top olcOverlay: memberof olcMemberOfDangling: ignore olcMemberOfRefInt: TRUE olcMemberOfGroupOC: groupOfNames olcMemberOfMemberAD: member olcMemberOfMemberOfAD: memberOf
使用ldapadd将它们添加到配置数据库中(与普通配置相同).
它不会自动更新数据库中的现有数据,因此我需要使用slapcat将所有内容复制到临时文件中,并访问每个组,删除该组并再次添加相同的组(强制memberOf属性更新)正确).如果您从空数据库开始,那么它将在添加对象时正确更新属性.
另请注意,“olcDatabase = {1} hdb”非常典型,但不能保证与您的设置相匹配.一定要检查一下.