0

我已经在网上搜索了很多页面,但还没有找到答案。我需要使用 ldapsearch 查询 MS Windows AD 服务器以获取特定组的用户/帐户。因此我尝试使用与此类似的过滤器字符串:

(memberOf=CN=App-User,ou=Org Staff,dc=organization,dc=local)

在 base-DN 中,Org 和 Staff 之间的空格没有问题,但在过滤器字符串中。我尝试了许多逃离空间的组合,但没有成功。有人知道如何让它与 OU 中的空间一起工作,还是我们必须更改 AD 服务器上的 OU?非常感谢,尼科

4

1 回答 1

0

可能您想使用任何 AD 浏览器(例如 NetTools )检查OU是否真的在memberOf中。通常,您至少可以通过三种方式达到所需的结果:

通过将过滤器放在单引号或双引号中并按原样保留带有空格的部分

角 <...> 括号是您的值的模板

“Администраторы домена”是西里尔字母,意思是“域管理员”

前任。

ldapsearch -H ldap://<server>:<port> -D '<distinguishedName>' -w <password> -b "DC=avt,DC=local" "(memberOf=CN=Администраторы домена,CN=Users,DC=avt,DC=local)"

...

# search result
# numEntries: 11

通过将过滤器放在引号和带有双引号中的空格的值中

前任。(为简洁而减少)

ldapsearch ... -b "..." '(memberOf=CN="Администраторы домена",CN=Users,DC=avt,DC=local)'

...

# search result
# numEntries: 11

通过将过滤器放在双引号中并屏蔽任何嵌套的双引号

ldapsearch ... -b "..." "(memberOf=CN=\"Администраторы домена\",CN=Users,DC=avt,DC=local)"

...

# search result
# numEntries: 11

这些都行不通。下面的例子是故意错误的

  • 双引号内的单引号
ldapsearch ... -b "..." "(memberOf=CN='Администраторы домена',CN=Users,DC=avt,DC=local)"

...

# search result

ldapsearch 响应没有帐户并且答案缺少 numEntries

  • 双引号内的双引号
ldapsearch ... -b "..." "(memberOf=CN="Администраторы домена",CN=Users,DC=avt,DC=local)"

...

ldap_search_ext: Bad search filter (-7)
  • 没有引号
ldapsearch ... -b "..." (memberOf=CN="Администраторы домена",CN=Users,DC=avt,DC=local)
bash: syntax error near unexpected token `('
于 2021-12-24T07:44:16.677 回答