使用ldapsearch的OpenDJ 2.6.0想要获取排序数据。 我做了几次尝试,但结果始终排序如此相同
./ldapsearch -b 'ou=people,dc=example,dc=com' -S '+cn' -s sub "objectclass=*" cn
dn: ou=people,dc=example,dc=com
dn: cn=1000000,ou=people,dc=example,dc=com
cn: 1000000
dn: cn=1000000000001,ou=people,dc=example,dc=com
cn: 1000000000001
./ldapsearch -b 'ou=people,dc=example,dc=com' -S '-cn' -s sub "objectclass=*" cn
dn: ou=people,dc=example,dc=com
dn: cn=1000000,ou=people,dc=example,dc=com
cn: 1000000
dn: cn=1000000000001,ou=people,dc=example,dc=com
cn: 1000000000001
./ldapsearch -b 'ou=people,dc=example,dc=com' -S '+cn:2.5.13.15' -s sub "objectclass=*"
dn: ou=people,dc=example,dc=com
dn: cn=1000000,ou=people,dc=example,dc=com
cn: 1000000
dn: cn=1000000000001,ou=people,dc=example,dc=com
cn: 1000000000001
./ldapsearch -b 'ou=people,dc=example,dc=com' -S '-cn:2.5.13.15' -s sub "objectclass=*"
dn: ou=people,dc=example,dc=com
dn: cn=1000000,ou=people,dc=example,dc=com
cn: 1000000
dn: cn=1000000000001,ou=people,dc=example,dc=com
cn: 1000000000001
./ldapsearch -b 'ou=people,dc=example,dc=com' -S '+cn:integerOrderingMatch' -s sub "objectclass=*" cn
dn: ou=people,dc=example,dc=com
dn: cn=1000000,ou=people,dc=example,dc=com
cn: 1000000
dn: cn=1000000000001,ou=people,dc=example,dc=com
cn: 1000000000001
./ldapsearch -b 'ou=people,dc=example,dc=com' -S '-cn:integerOrderingMatch' -s sub "objectclass=*" cn
dn: ou=people,dc=example,dc=com
dn: cn=1000000,ou=people,dc=example,dc=com
cn: 1000000
dn: cn=1000000000001,ou=people,dc=example,dc=com
cn: 1000000000001
我做错了还是这个错误ldapsearch / openDJ? 提前谢谢。
答案 0 :(得分:2)
使用-S选项时,控件未标记为关键。 如果服务器认为不允许使用或不合适,它将忽略该控件并继续搜索(如LDAP RFC中所述)。我猜这就是你在试验的东西。 忽略控制可能至少有两个原因。 用户无权使用该控件。在OpenDJ中,服务器端控件只能由经过身份验证的用户使用,而不是匿名用户。 要排序的条目太多(默认情况下我认为设置为4000)。
-S'cn'和-S'-cn'在我的测试OpenDJ服务器上按预期工作,有200个条目,经过身份验证的用户或目录管理器。