4

我有一个带有嵌套组的活动目录 (AD) 测试实例:员工(父)和两个子组:主管和工程师。

Tree:
  Employees
  |
  -Executives
  |   |
  |   -Mister Executive
  |
  -Engineers
      |
      -Joe Engineer

我看到 AD 扩展 LDAP_MATCHING_RULE_IN_CHAIN 将搜索子树;我可以使用以下查询搜索所有员工用户:

query:
( & (objectClass=person)   (memberOf:1.2.840.113556.1.4.1941:=CN=Employees,CN=Users,DC=cloud,DC=com))

问题:递归搜索,但没有递归结果

但是,我找不到获取“子树搜索结果”的方法,即查询返回“Mister Executive”作为“Employee”,“memberOf”属性只列出“Executives”,即他直接所属的组. 我检查了所有其他属性,没有看到任何“员工”

回顾

因此,最后澄清一下:AD 是否允许以任何方式检索“subtree memberOf”结果以及“subtree”LDAP_MATCHING_RULE_IN_CHAIN ("memberOf:1.2.840.113556.1.4.1941:=") 搜索

提前致谢,

4

3 回答 3

9

我认为您在组和节点之间感到困惑。

目录树

目录是树,其中每个对象都是一个节点。Active-Directory 有点特殊,因为只有少数对象如organizationalUnits(OU),Domains或者Containers可以是包含用户对象的节点。

所以目录搜索包括:

  1. 搜索开始的节点由专有名称 (DN) 标识
  2. 你想被带回来的属性
  3. 搜索深度(基础、一级、子树)
  4. 过滤器。

目录中的每个对象都包含属性、名称和语法。对于某些属性,如member, memberOf, manager, managedBy,Microsoft 提供了一种特殊的语法,称为uniqueName. 此语法用于专有名称,但目录为这些属性提供了一种关系完整性。这意味着,例如,如果您移动目录中的对象,则此属性内的 DN 将保留其值。如果您移动一个用户,member它所属的组中的属性会自动调整。

现在LDAP_MATCHING_RULE_IN_CHAIN

当用户 X 是组 A 的成员时,用户 X DN 在 A 组的 member 属性中,A 组 DN 在用户 X 的 memberOf 属性中。如果组 A 是组 B 的成员,则用户 X 属于到组 B 但 B 组 DN 不在用户 X 的 memberOf 属性中。在这里您可以使用LDAP_MATCHING_RULE_IN_CHAIN查找属于组的递归。这是一个特殊的扩展匹配运算符,它将对象中的祖先链一直遍历到根,直到找到匹配项。

这种查询的 Microsoft 示例旨在检查用户“user1”是否是组“group1”的成员。您可以将 base 设置为用户 DN (cn=user1, cn=users, dc=x) 并将范围设置为 base,然后使用以下查询。

(memberOf:1.2.840.113556.1.4.1941:=cn=Group1,OU=groupsOU,DC=x)

同样,要查找“user1”所属的所有组,请将 base 设置为组容器 DN;例如 (OU=groupsOU, dc=x) 和子树的范围,并使用以下过滤器。

(member:1.2.840.113556.1.4.1941:=cn=user1,cn=users,DC=x)

所以LDAP_MATCHING_RULE_IN_CHAIN与目录树节点无关。

于 2012-03-31T05:19:24.970 回答
2

我已经编辑了这个,因为列表是不必要的......

将过滤器更改为:

(&(objectClass=user)(memberof:1.2.840.113556.1.4.1941:=CN=Employees,CN=Users,DC=cloud,DC=com))
于 2012-03-30T17:05:29.070 回答
0

如果您要解决的问题是:

我有一个用户 DN,我想找到他/她所属的所有组

您要使用的是tokenGroups计算属性,其中包含考虑继承的所有用户计算组的 SID。这就是目录服务集成工具为实现最大可靠性所做的工作。

(另请参阅 tokenGroupsGlobalAndUniversal 根据您的需要)

○ → ldapsearch -o ldif-wrap=no -LLL -Y GSSAPI -H ldap://ad1.mdmarra.local -b 'CN=Michael Brown,OU=Employees,DC=mdmarra,DC=local' -s base memberOf tokenGroups
dn: CN=Michael Brown,OU=Employees,DC=mdmarra,DC=local
memberOf: CN=Staff,OU=Security Groups,DC=mdmarra,DC=local
memberOf: CN=cloud_users,OU=Security Groups,DC=mdmarra,DC=local
memberOf: CN=TACACS-NOC-Customer,OU=Security Groups,DC=mdmarra,DC=local
memberOf: CN=TACACS-NOC,OU=Security Groups,DC=mdmarra,DC=local
memberOf: CN=PRTG-Admins,CN=Users,DC=mdmarra,DC=local
tokenGroups:: AQIAAAAAAAUgAAAAIQIAAA==
tokenGroups:: AQUAAAAAAAUVAAAA2TH4QrS3zSIH5TsreSgAAA==
tokenGroups:: AQUAAAAAAAUVAAAA2TH4QrS3zSIH5TsrQCgAAA==
tokenGroups:: AQUAAAAAAAUVAAAA2TH4QrS3zSIH5Tsr7xkAAA==
tokenGroups:: AQUAAAAAAAUVAAAA2TH4QrS3zSIH5Tsr+xkAAA==
tokenGroups:: AQUAAAAAAAUVAAAA2TH4QrS3zSIH5TsrAQIAAA==
tokenGroups:: AQUAAAAAAAUVAAAA2TH4QrS3zSIH5TsrcRIAAA==
tokenGroups:: AQUAAAAAAAUVAAAA2TH4QrS3zSIH5Tsr7ScAAA==
tokenGroups:: AQUAAAAAAAUVAAAA2TH4QrS3zSIH5Tsr8BkAAA==
tokenGroups:: AQUAAAAAAAUVAAAA2TH4QrS3zSIH5Tsr8RkAAA==
tokenGroups:: AQUAAAAAAAUVAAAA2TH4QrS3zSIH5Tsr9hkAAA==
tokenGroups:: AQUAAAAAAAUVAAAA2TH4QrS3zSIH5TsrWigAAA==
tokenGroups:: AQUAAAAAAAUVAAAA2TH4QrS3zSIH5TsrWygAAA==
tokenGroups:: AQUAAAAAAAUVAAAA2TH4QrS3zSIH5Tsr7hkAAA==
tokenGroups:: AQUAAAAAAAUVAAAA2TH4QrS3zSIH5Tsr+RkAAA==

○ → ldbsearch -k yes -H ldap://ad1.mdmarra.local -b 'CN=Michael Brown,OU=Employees,DC=mdmarra,DC=local' -s base memberOf tokenGroups
…
memberOf: CN=PRTG-Admins,CN=Users,DC=mdmarra,DC=local
tokenGroups: S-1-5-32-545
tokenGroups: S-1-5-21-1123561945-583907252-725345543-10361
tokenGroups: S-1-5-21-1123561945-583907252-725345543-10304
tokenGroups: S-1-5-21-1123561945-583907252-725345543-6639
tokenGroups: S-1-5-21-1123561945-583907252-725345543-6651
tokenGroups: S-1-5-21-1123561945-583907252-725345543-513
tokenGroups: S-1-5-21-1123561945-583907252-725345543-4721
tokenGroups: S-1-5-21-1123561945-583907252-725345543-10221
tokenGroups: S-1-5-21-1123561945-583907252-725345543-6640
tokenGroups: S-1-5-21-1123561945-583907252-725345543-6641
tokenGroups: S-1-5-21-1123561945-583907252-725345543-6646
tokenGroups: S-1-5-21-1123561945-583907252-725345543-10330
tokenGroups: S-1-5-21-1123561945-583907252-725345543-10331
tokenGroups: S-1-5-21-1123561945-583907252-725345543-6638
tokenGroups: S-1-5-21-1123561945-583907252-725345543-6649
于 2017-06-27T16:56:17.237 回答