ldapsearch 排序顺序如何工作?
How does ldapsearch sortorder work?
OpenDJ 2.6.0 使用 ldapsearch 想要得到排序的数据。
我做了几次尝试,但结果总是排序如此相同
简单的升序排序
./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
按 OID 升序排序
./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
按 OID desc 排序
./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
按名称 desc 排序
./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?
提前谢谢你。
使用 -S 选项时,控件未标记为关键。
如果服务器认为不允许使用或不合适,它将忽略控制并继续搜索(如 LDAP RFC 中所述)。我猜这就是你正在试验的。
至少有两个原因可以忽略该控件。
用户没有使用该控件的权限。在 OpenDJ 中,服务器端控件只能由经过身份验证的用户使用,而不是匿名用户。
要排序的条目太多(我认为默认设置为 4000)。
-S 'cn' 和 -S '-cn' 在我的测试 OpenDJ 服务器上按预期工作,有 200 个条目,作为用户或目录管理员进行身份验证。
OpenDJ 2.6.0 使用 ldapsearch 想要得到排序的数据。 我做了几次尝试,但结果总是排序如此相同
简单的升序排序
./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
按 OID 升序排序
./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
按 OID desc 排序
./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
按名称 desc 排序
./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? 提前谢谢你。
使用 -S 选项时,控件未标记为关键。 如果服务器认为不允许使用或不合适,它将忽略控制并继续搜索(如 LDAP RFC 中所述)。我猜这就是你正在试验的。 至少有两个原因可以忽略该控件。 用户没有使用该控件的权限。在 OpenDJ 中,服务器端控件只能由经过身份验证的用户使用,而不是匿名用户。 要排序的条目太多(我认为默认设置为 4000)。
-S 'cn' 和 -S '-cn' 在我的测试 OpenDJ 服务器上按预期工作,有 200 个条目,作为用户或目录管理员进行身份验证。