ldapsearch - 在 dn 中过滤 ou

时间:2021-02-19 20:57:15

标签: ldap ldap-query

我知道你不能简单地过滤 dn,但我有这样的事情:

dc=lvl3,dc=lvl2,dc=lvl1,有人可能有这样的 dnCN=Last, First,OU=ou1,OU=retired,OU=ou1,DC=lvl3,DC=lvl2,DC=lvl1

有没有办法过滤那些没有“退休”的人的结果?

2 个答案:

答案 0 :(得分:2)

没有。不作为 LDAP 过滤器。

您当然可以进行搜索,然后在客户端进行排序。

通常应该使用属性而不是目录结构来组织用户的“特征”。

类似于:

  • employeeType=Active
  • employeeType=退休
  • employeeType=etc

为了避免这些情况。

答案 1 :(得分:1)

可能,但这取决于服务器的 LDAP 实现。

一个过滤器语法,它允许匹配 DN 属性(除了条目属性):

(ou:dn:=Retired)

(在 LDAP 规范中,这称为“dnAttributes”字段,是“extensibleMatch”过滤器类型的一部分。请参阅 RFC 4511 section 4.5.1.7.7

并非所有目录服务器都支持这一点。例如,OpenLDAP 可以正确处理它,但 Active Directory(MS AD 和 Samba)会忽略它,就像您使用 (ou=Retired) 一样。

如果您的服务器支持此功能,则只需像通常那样将过滤器包装在 (!(...)) 中即可完成否定匹配。

但是,在其他情况下,您应该 a) 使用自定义属性,或者 b) 可能检查全局“活跃员工”组或类似内容中的成员身份。

相关问题