使用ldapModify删除LDAP条目中的objectClass

我需要从一堆LDAP条目中删除三个不同的objectClass。 这是我的ldif文件:

dn: uid=user,ou=People,dc=example,dc=net changetype: modify delete: objectClass objectClass: top - delete: objectClass objectClass: organizationalPerson - delete: objectClass objectClass: person 

当我运行ldapmodify命令时,我得到以下输出:

 ldap_initialize( ldap://server.net ) delete objectClass: top delete objectClass: organizationalPerson delete objectClass: person modifying entry "uid=user,ou=People,dc=example,dc=net" modify complete 

但是,当我对该用户执行ldapsearch时,所有的objectClasses仍然存在。 显然,它匹配的对象类名,否则会抱怨。

我怀疑你的input有属性,需要你试图删除的objectClasses。 在删除对象类之前,需要删除依赖于objectClasses的属性。

我不知道你正在使用哪个LDAP服务器,但我不得不删除条目来删除对象分类。 这是通过提取logging,删除原始logging,并添加对象类的修改列表logging来完成的。 如果保留新对象类层次结构不支持的属性,则添加将失败。

你想删除objectClasses还是目录条目?

我有种想法,你想删除整个条目(即logging的人)。 如果是的话,使用的工具是ldapdelete ,它通常与ldapmodify同时安装?

取决于它来自哪个工具套件(例如,专有的,OpenLDAP等),它通常几乎是你给它提供DN的相同语法广告。

例如ldapdelete -x -D uid=admin -w secret -H ldap://ldapserver.blah uid=user,ou=People,dc=example,dc=net

如果它真的是你想要使用的objectClasses,那么你可以打开详细(-v与opneldap工具)或debugging(-d与openldap工具),以更好地了解你的问题。

正如比尔·托尔(Bill Thor)所build议的,你可能有模式问题,你可能不得不按照原样对这些条目进行备份,然后重新添加它们,如果强制执行模式检查的话就可以这样做。

或者暂时closures模式检查做你的事情,并再次打开架构检查。