LDAP-запрос для удаленных пользователей
Обычный способ запроса каталога для пользователей (&(objectClass=user)(objectCategory=person))
, Обычный способ запроса удаленных объектов - добавить (isDeleted=TRUE)
,
Тем не менее objectCategory
атрибут не существует на надгробных объектах, поэтому запрос для (&(objectClass=user)(objectCategory=person)(isDeleted=TRUE))
ничего не получишь.
Если вы удалите (objectCategory=person)
часть, вы также получите компьютеры, так как они наследуются от пользователя.
Можно ли восстановить только удаленных пользователей?
Если нет, можно ли по возвращенному объекту-надгробию сказать, пользователь это или нет?
1 ответ
Попробуйте фильтр LDAP как:
(&(isDeleted=TRUE)(userAccountControl:1.2.840.113556.1.4.803:=512))
Это должно восстановить большинство удаленных записей типа пользователя.
Код 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
...