如何删除ldap3中的用户属性?

How to delete attribute of user in ldap3?

我知道如何修改属性。

c.modify('cn=user1,ou=users,o=company',
         {'userWorkstations': [(MODIFY_REPLACE, ['Win-7'])]})

link 展示了如何删除条目。

但是如何在 ldap 中删除用户的属性(例如:'userWorkstations')?

一个 LDAP 修改请求有多个可以执行的“Modification Types”。

您可以 "ADD" 属性值。 您可以 "DELETE" 属性值。 您可以 "REPLACE" 属性值。 您可以 "INCREMENT" 属性值。 (仅限整数类型)

如果修改类型是“delete”并且有一个没有任何值的属性描述,那么指定属性的所有值将从条目中删除。在正常情况下,修改操作不能与 delete 修改类型一起使用以删除尚不存在的属性(尽管可以使用 "replace" 修改类型来完成此操作)。

精确的编程语言可能 API 简化了这些修改类型。

正如 Giovanni 在评论中所说:

in ldap3: c.modify('cn=user1,ou=users,o=company', {'userWorkstations': [(MODIFY_DELETE, ['Win-7'])]}) – cannatag Jul 3 '16 at 15:22

我只想指出,在 ldap3 中也有与 LDAP 的 ORM 样式交互,看起来会略有不同:

UserObj.userWorkstations -= 'Win-7'

或者删除该属性,无论它可能具有什么值:

UserObj.userWorkstations.remove()

并在更改后将其提交回 LDAP: UserObj.entry_commit_changes()

将 UserObj 创建为适合进行这些调用的 Writer 对象留作练习。