如何使用搜索过滤器显示特定群组的用户?
我尝试了以下内容:
(&
(objectCategory=user)
(memberOf=MyCustomGroup)
)
和此:
(&
(objectCategory=user)
(memberOf=cn=SingleSignOn,ou=Groups,dc=tis,dc=eg,dc=ddd,DC=com)
)
但不会显示特定群组的用户。
答案 0 :(得分:73)
memberOf(在AD中)存储为distinguishedNames列表。您的过滤器必须类似于:
(&(objectCategory=user)(memberOf=cn=MyCustomGroup,ou=ouOfGroup,dc=subdomain,dc=domain,dc=com))
如果您还没有专有名称,可以使用以下方法搜索:
(&(objectCategory=group)(cn=myCustomGroup))
并返回属性distinguishedName
。案件可能很重要。
答案 1 :(得分:10)
对于Active Directory用户,另一种方法是 - 假设您的所有群组都存储在OU=Groups,DC=CorpDir,DC=QA,DC=CorpName
中 - 使用查询(&(objectCategory=group)(CN=GroupCN))
。这适用于所有成员少于1500人的团体。如果要列出大型AD组的所有成员,则同一查询将起作用,但您必须使用ranged retrieval一次获取所有成员,1500条记录。
执行范围检索的关键是使用以下语法指定属性中的范围: attribute; range = low-high 。因此,要获取具有3000个成员的AD组的所有成员,请首先运行上述查询,要求返回member;range=0-1499
属性,然后返回member;range=1500-2999
属性。
答案 2 :(得分:0)
如果DC为Win2k3 SP2或更高版本,则可以使用类似的命令:
(&(objectCategory=user)(memberOf:1.2.840.113556.1.4.1941:=CN=GroupOne,OU=Security Groups,OU=Groups,DC=example,DC=com))
获取嵌套的组成员身份。
来源:https://ldapwiki.com/wiki/Active%20Directory%20Group%20Related%20Searches
答案 3 :(得分:0)
如果您需要在多个组中进行搜索,那么更复杂的查询:
(&(objectCategory=user)(|(memberOf=CN=GroupOne,OU=Security Groups,OU=Groups,DC=example,DC=com)(memberOf=CN=GroupTwo,OU=Security Groups,OU=Groups,DC=example,DC=com)(memberOf=CN=GroupThree,OU=Security Groups,OU=Groups,DC=example,DC=com)))
相同的递归示例:
(&(objectCategory=user)(|(memberOf:1.2.840.113556.1.4.1941:=CN=GroupOne,OU=Security Groups,OU=Groups,DC=example,DC=com)(memberOf:1.2.840.113556.1.4.1941:=CN=GroupTwo,OU=Security Groups,OU=Groups,DC=example,DC=com)(memberOf:1.2.840.113556.1.4.1941:=CN=GroupThree,OU=Security Groups,OU=Groups,DC=example,DC=com)))