当我尝试在 OpenLDAP 2.4.42 服务器上搜索 时(shadowExpire<=18074)
,没有得到任何结果。但是,搜索(shadowExpire=12671)
会得到几个结果。
我的最终目标是定期重新生成 Postfix 映射check_recipient_access
拒绝发送至已过期帐户的邮件。
查看服务器的/etc/ldap/schema/nis.schema
, 我懂了:
attributetype ( 1.3.6.1.1.1.1.10 NAME 'shadowExpire'
EQUALITY integerMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
这同意RFC 2307 第 3 部分,其中指定:
( nisSchema.1.10 NAME 'shadowExpire'
EQUALITY integerMatch
SYNTAX 'INTEGER' SINGLE-VALUE )
这两种情况都表明shadowExpire
仅支持平等搜索。
然而,RFC 2307bis有:
( 1.3.6.1.1.1.1.10 NAME 'shadowExpire'
EQUALITY integerMatch
ORDERING integerOrderingMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
SINGLE-VALUE )
… 使得ORDERING integerOrderingMatch
不等式搜索能够进行。
我可以破解我的服务器nis.schema
来包含ORDERING integerOrderingMatch
吗?底层表示仍然是INTEGER
,所以应该是无害的,对吧?(尽管OpenLDAP 管理员指南上面写着“您不应该修改所提供文件中定义的任何架构项。)
答案1
您正确分析了缺失的排序匹配规则。
但是,您不应更改 OpenLDAP 附带的架构文件,例如nis.schema
。但您可以使用其他架构文件rfc2307bis.schema
。一些 Linux 发行版已附带此文件。
nis.schema
请注意和的使用rfc2307bis.schema
是互相排斥的。