我的主要目标是能够在现有的“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”非常典型,但不能保证与您的设置相匹配.一定要检查一下.