如何在 ldapsearch 和 Active Directory 的属性中使用通配符?

How do I use a wildcard in an attribute with ldapsearch and Active Directory?

我在 AD 中有 memberOf 属性的用户具有 cn=ad-users103,ou=hr,ou=groups,dc=mycorp,dc=comcn=ad-users203,ou=hr,ou=groups,dc=mycorp,dc=com。我想使用像 cn=ad-users* 这样的过滤器,但它没有返回结果。我在 Linux 中使用 ldapsearch 来测试我的过滤器。

我试过使用这样的过滤器,returns 用户信息:

ldapsearch -D "cn=admin..." -b "dc=mycorp,dc=com" -x -H ldaps://ldap.mycorp.com -w $PASS -E pr=100/noprompt "memberOf=cn=ad-users203,ou=hr,ou=groups,dc=mycorp,dc=com"

当我添加通配符时(以here为例),我没有得到任何结果:

ldapsearch -D "cn=admin..." -b "dc=mycorp,dc=com" -x -H ldaps://ldap.mycorp.com -w $PASS -E pr=100/noprompt "memberOf=cn=ad-users*"

我试过将 splat 移动到过滤器中的不同位置,但无济于事。搜索应该以这种方式工作还是我需要使用 (&(memberOf=cn=ad-users103...)(memberOf=cn=ad-users203...)) 之类的东西来代替?

memberOF 是一个专有名称属性值,专有名称不支持通配符,如下所示:

而且我认为您的 AND 搜索

(&(memberOf=cn=ad-users103...)(memberOf=cn=ad-users203...))

应该是和OR搜索:

(|(memberOf=cn=ad-users103...)(memberOf=cn=ad-users203...))