![通过 LDAP 访问 AD 回收站](https://linux22.com/image/718971/%E9%80%9A%E8%BF%87%20LDAP%20%E8%AE%BF%E9%97%AE%20AD%20%E5%9B%9E%E6%94%B6%E7%AB%99.png)
使用 Windows 2016 服务器,如何通过 LDAP 查询其回收站?回收站处于活动状态,根据 AD 管理中心,目前包含我昨天删除的两个 OU。通过已知对象,AD 给出的箱子位置为cn=Deleted Objects,dc=example,dc=com
。
但是,当我查询该 DN 时objectClass=*
,没有返回任何条目:
# extended LDIF
#
# LDAPv3
# base <CN=Deleted Objects,DC=example,DC=com> with scope subtree
# filter: (objectClass=*)
# requesting: ALL
#
# search result
search: 5
result: 32 No such object
matchedDN: CN=Deleted Objects,DC=example,DC=com
text: 0000208D: NameErr: DSID-03100241, problem 2001 (NO_OBJECT), data 0, best
match of:
'CN=Deleted Objects,DC=example,DC=com'
# numResponses: 1
服务器实际上需要什么?
编辑:进一步研究该问题后,MS 似乎有一个特定的 LDAP 控件LDAP_SERVER_显示_DELETED_OID
正是针对此用例。但是我无法通过添加-e 1.2.840.113556.1.4.417
到
ldap搜索调用。
答案1
答案是 AD 对回收站应用了某种访问控制。有了管理员票证,它突然就起作用了:
$ kinit [email protected]
$ ldapsearch -v -R EXAMPLE.COM \
-H ldap://windowsbox.example.com:389 \
-b 'CN=Deleted Objects,DC=example,DC=com' \
-E '!1.2.840.113556.1.4.417' \
-s sub \
'(objectClass=*)' \
distinguishedName
# Deleted Objects, example.com
dn: CN=Deleted Objects,DC=example,DC=com
distinguishedName: CN=Deleted Objects,DC=example,DC=com
…
# Comnisca
DEL:97f85a86-f326-4df1-b747-4bc9002b28c2, Deleted Objects, example.com
dn: CN=Comnisca\0ADEL:97f85a86-f326-4df1-b747-4bc9002b28c2,CN=Deleted Objects,
DC=example,DC=com
distinguishedName: CN=Comnisca\0ADEL:97f85a86-f326-4df1-b747-4bc9002b28c2,CN=D
eleted Objects,DC=example,DC=com
…
只有 root 可以访问回收站,谁会想到呢?
本文档的“委派 Active Directory 回收站操作”部分记录了管理回收站各种访问方法的权限: https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/dd392260%28v%3dws.10%29