OpenLDAP:已删除的用户仍列在组中

OpenLDAP:已删除的用户仍列在组中

我目前正在通过命令行执行 openldap 。我添加了用户 John 并添加了组 devgroup,并将 John 分配到了 devgroup 组。当我通过命令行删除用户(约翰)时

ldapdelete -Y EXTERNAL -H ldapi:/// -D "cn=admin,dc=example,dc=local" 
"uid=john,dc=example,dc=local"

用户已消失,但不在之前分配的组成员 (devgroup) 中。

我注意到用户和组分配的用户没有关联。基本上我可以添加组中任何不存在的用户。有什么方法可以关联这两个用户吗?

谢谢!

答案1

我相信您只是使用该命令删除用户,而不是删除 OU 中的所有条目。据我了解,LDAP 并不像您想象的那样维护与不同对象的链接,而是您应该首先生成对象列表,然后使用或ldapsearch对其进行操作。ldapdeleteldapmodify

我们通常会首先将结果写入ldapsearch文件.ldif,然后使用ldapmodify或对其进行操作ldapdelete。但是,您可以解析输出并将ldapsearch其通过管道传输到ldapmodify如标题为 U&L Q&A 的此示例所示:ldapdelete,想要删除人员 OU 的所有 UID,但保留 OU?

$ ldapsearch -ZZ -W -D 'cn=Manager,dc=site,dc=fake' \
   -b 'ou=people,dc=site,dc=fake' -s one  dn | \
   grep dn: | cut -b 5- | ldapdelete -ZZ -W -D 'cn=Manager,dc=site,dc=fake'

我相信您需要执行类似的操作,找到用户所属的所有组memberUid,然后将该列表传递给ldapmodify,然后ldapdelete在将它们从所有组中删除后运行您的命令。

顺便说一句,要从组中删除用户:

dn: cn=Manager,dc=site,dc=fake
changetype: modify
delete: memberuid
memberuid: john

关于.ldif文件,此页面上的示例标题为:使用轻量级目录访问协议 (LDAP) 管理用户都很棒。它们展示了如何使用片段执行所有基本操作,.ldif这些片段可以扩展以跨多个对象执行操作。

答案2

正如您已经认识到的组条目及其成员条目一样:没有硬链接的单独条目。

您有两个选择:

  1. 实现您自己的脚本以删除成员条目并从属性中删除其 DN成员在组条目中。
  2. 使用 OpenLDAP 覆盖斯拉波翻新使...能够斯拉普德如果删除成员条目,请从组条目中删除成员引用。

相关内容