已删除用户的 LDAP 查询
Posted
技术标签:
【中文标题】已删除用户的 LDAP 查询【英文标题】:LDAP query for deleted users 【发布时间】:2017-09-22 09:00:31 【问题描述】:查询用户目录的正常方法是(&(objectClass=user)(objectCategory=person))
。查询已删除对象的常规方法是添加(isDeleted=TRUE)
。
但是,objectCategory
属性不存在于墓碑对象上,因此查询(&(objectClass=user)(objectCategory=person)(isDeleted=TRUE))
将一无所获。
如果您删除 (objectCategory=person)
部分,您还将获得计算机,因为它们继承自用户。
是否可以只检索已删除的用户?
如果不是,是否可以从返回的 tombstone 对象中判断它是否是用户?
【问题讨论】:
【参考方案1】:尝试 LDAP 过滤器,例如:
(&(isDeleted=TRUE)(userAccountControl:1.2.840.113556.1.4.803:=512))
这应该检索大多数已删除的用户类型条目。
【讨论】:
你有 php 或 Python 的例子吗?它不仅适用于 linux 上的过滤器查询【参考方案2】:python3 代码
import ldap
from ldap.controls.simple import ValueLessRequestControl
...
base =
scope = ldap.SCOPE_SUBTREE
filterstr = '(&(objectClass=user)(isDeleted=TRUE))'
attrlist =
result_set = []
ct = ldap.controls.simple.ValueLessRequestControl('1.2.840.113556.1.4.417', True)
result_id = l.search_ext(base, scope, filterstr, attrlist, serverctrls=[ct, ])
for i in range(0, 100):
result_type, result_data = l.result(result_id, 0)
if result_type == ldap.RES_SEARCH_ENTRY:
result_set.append(result_data)
else:
break
...
【讨论】:
以上是关于已删除用户的 LDAP 查询的主要内容,如果未能解决你的问题,请参考以下文章