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
...

Другие вопросы по тегам