当我查询我的 openldap 服务器时,我无法收到超过 500 个条目。
尽管我做了以下更改:
slapd配置文件
# This is the main slapd configuration file. See slapd.conf(5) for more
# info on the configuration options.
#######################################################################
# Global Directives:
.....
# The maximum number of entries that is returned for a search operation
sizelimit 10000
ldap配置文件
#
# LDAP Defaults
#
# See ldap.conf(5) for details
# This file should be world readable but not world writable.
#BASE dc=example,dc=com
#URI ldap://ldap.example.com ldap://ldap-master.example.com:666
SIZELIMIT 10000
#TIMELIMIT 15
#DEREF never
# TLS certificates (needed for GnuTLS)
TLS_CACERT /etc/ssl/certs/ca-certificates.crt
重新启动我的机器后,查询以下命令:
ldapsearch -x -h localhost -b "dc=XXX,dc=XXX,dc=XXX"
我收到:
# search result
search: 2
result: 4 Size limit exceeded
# numResponses: 501
# numEntries: 500
我是否遗漏了一些必要的改变?
答案1
OpenLDAP 搜索限制可以在服务器端或客户端设置。
1. slapd.conf 的数据库部分中的服务器端(旧式配置已弃用,但仍可使用)或 cn=config(推荐)
按数据库全局划分:
slapd配置文件
sizelimit <numberOfMaxResult>
cn=配置
olcSizeLimit: <numberOfMaxResult>
此参数非强制,默认为500。
每用户:
slapd配置文件
limits <Who> size=<numberOfMaxResult>
cn=配置
olcLimits: <Who> size=<numberOfMaxResult>
在所有情况下
WHO或许 :
*
: 全部
anonymous
:未连接用户
users
:所有已连接的用户
dn.exact="cn=xxxx,ou=people...
:一位用户
group/groupOfNames/member="cn=managers,ou=groups...
:用户组
最大结果数或许:
unlimited
:无限大小,在生产中使用此配置是一个非常糟糕的主意
number (like 300)
:最大结果记录数。
如果全局和每个用户的大小都已限制,每个用户限制适用。
2. 客户端
在ldap.conf客户端配置文件中:
SIZELIMIT <numberOfMaxResult>
请求参数
ldapsearch -z 10 ...
将结果限制为 10
所有客户端 API 都应该提供这样的参数。
如果服务器端和客户端都限制大小,适用最小数字。
这是一个短的摘要,有关此主题的更多信息:
man slapd.conf
man slapd-config