我目前正在通过命令行执行 openldap。我添加了用户 John 并添加了组 devgroup,并将 John 分配到 devgroup 组中。当我通过命令行删除用户(John)时
ldapdelete -Y EXTERNAL -H ldapi:/// -D "cn=admin,dc=example,dc=local"
"uid=john,dc=example,dc=local"
用户已离开,但不在先前分配的组成员 (devgroup) 中。
我注意到用户和组分配的用户没有联系。基本上我可以在组中添加任何不存在的用户。有没有办法可以将这两者联系起来?
谢谢!
我相信您只是使用该命令删除用户,而不是他们从 OU 中删除的所有条目。据我了解,LDAP 不会像您想的那样维护与不同对象的链接,而是希望您
ldapsearch
首先生成对象列表,然后使用ldapdelete
或对其进行操作ldapmodify
。我们通常会先将结果写入
ldapsearch
文件.ldif
,然后使用ldapmodify
or对它们进行操作ldapdelete
。但是,您可以解析输出ldapsearch
并将其传输ldapmodify
到此 U&L Q&A 中的示例所示,标题为:ldapdelete,想要删除人员 OU 的所有 UID,但保留 OU?.我相信您需要做类似的事情,找到用户所属的所有组
memberUid
,然后将该列表传递给ldapmodify
,然后在将ldapdelete
它们从所有组中删除后运行您的命令。顺便从组中删除用户:
关于
.ldif
文件,此页面上标题为:使用轻量级目录访问协议 (LDAP) 管理用户的示例非常出色。它们展示了如何使用片段来执行所有基本操作,.ldif
这些片段可以扩展为跨多个对象执行操作。正如您已经认识到的组条目及其成员条目就是这样:没有硬链接的单独条目。
你有两个选择: