ldapsearch - 在 dn 中过滤 ou
ldapsearch - filtering ou in dn
我知道你不能简单地过滤 dn
,但我有这样的东西:
dc=lvl3,dc=lvl2,dc=lvl1
,有人可能会有这样的 dn
:
CN=Last, First,OU=ou1,OU=retired,OU=ou1,DC=lvl3,DC=lvl2,DC=lvl1
.
有什么方法可以为那些没有 'retired' 的人过滤结果吗?
没有。不作为 LDAP 过滤器。
您当然可以进行搜索,然后在客户端进行排序。
一般来说,用户“特征”的组织应该使用属性而不是目录结构来完成。
类似于:
- 员工类型=在职
- 员工类型=退休
- 员工类型=等
避免这些情况。
可能,但这取决于服务器的 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) 或许检查全球“活跃员工”组或类似组的成员身份。
我知道你不能简单地过滤 dn
,但我有这样的东西:
dc=lvl3,dc=lvl2,dc=lvl1
,有人可能会有这样的 dn
:
CN=Last, First,OU=ou1,OU=retired,OU=ou1,DC=lvl3,DC=lvl2,DC=lvl1
.
有什么方法可以为那些没有 'retired' 的人过滤结果吗?
没有。不作为 LDAP 过滤器。
您当然可以进行搜索,然后在客户端进行排序。
一般来说,用户“特征”的组织应该使用属性而不是目录结构来完成。
类似于:
- 员工类型=在职
- 员工类型=退休
- 员工类型=等
避免这些情况。
可能,但这取决于服务器的 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) 或许检查全球“活跃员工”组或类似组的成员身份。