OpenLDAP 管理限制已超出

OpenLDAP 管理限制已超出

我知道 LDAP 查询有限制,因此我设置了一个没有限制的用户。但即便如此,我还是遇到了“超出管理限制”的错误。

下面我摘录了数据库配置。我使用的用户是 cn=checkrepl,cn=users,dc=domain,dc=es。

esauro@ubuntu:~$ ldapsearch -x -W -D 'cn=admin,cn=config' -b 'cn=config' -h openldap1 'olcDatabase={1}hdb'
Enter LDAP Password: 
# extended LDIF
#
# LDAPv3
# base <cn=config> with scope subtree
# filter: olcDatabase={1}hdb
# requesting: ALL
#

# {1}hdb, config
dn: olcDatabase={1}hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {1}hdb
olcDbDirectory: /var/lib/ldap
olcSuffix: dc=domain,dc=es
olcAccess: {0}to attrs=userPassword,shadowLastChange by self write by anonymou
 s auth by dn="cn=admin,dc=domain,dc=es" write by dn.subtree="cn=Managers,dc=domain,
 dc=es" read by * none
olcAccess: {2}to dn.base="" by * read
olcAccess: {3}to * by self write by dn="cn=admin,dc=domain,dc=es" write by * read
olcLastMod: TRUE
olcLimits: {2}dn="cn=checkrepl,cn=Users,dc=domain,dc=es" time.soft=unlimited time
 .hard=unlimited size.soft=unlimited size.hard=unlimited
olcSizeLimit: size=100000 size.unchecked=100000
olcMirrorMode: TRUE
olcMonitoring: TRUE
olcDbCacheSize: 200000
olcDbCheckpoint: 512 30
olcDbConfig: {0}set_cachesize 0 536870912 0
olcDbConfig: {1}set_lk_max_objects 1500
olcDbConfig: {2}set_lk_max_locks 1500

但是,每当我查询目录时,如果结果很大,我就会收到错误,无论我是否包含标志来限制查询的时间和大小。

esauro@ubuntu:~$ ldapsearch -z 40 -l 1000 -x -W -D 'cn=checkrepl,cn=users,dc=domain,dc=es' -b 'dc=domain,dc=es' -h openldap1 'uid=al*' dn
Enter LDAP Password: 
# extended LDIF
#
# LDAPv3
# base <dc=domain,dc=es> with scope subtree
# filter: uid=al*
# requesting: dn 
#

# search result
search: 2
result: 11 Administrative limit exceeded

# numResponses: 1

我使用 ldap-utils(版本 2.4.23 和 2.4.28)作为客户端,使用 openldap(2.4.23)作为服务器

编辑:配置中的另一个摘录包括索引:

olcDbIndex: objectClass eq
olcDbIndex: uid eq,pres,sub
olcDbIndex: memberUid,uniqueMember eq
olcDbIndex: uidNumber,gidNumber eq,pres
olcDbIndex: sambaSID,sambaPrimaryGroupSID eq
olcDbIndex: sambaGroupType,sambaSIDList eq
olcDbIndex: entryCSN,entryUUID eq
olcDbIndex: ou,cn eq
olcDbIndex: mail,maildrop eq

编辑2:此精确配置(复制和粘贴)在使用较新版本的 LDAP 的另一个 LDAP 中完美运行。

答案1

您有olcDbCacheSize: 200000(和 512MB 缓存),这表明您可能有大量目录条目。

size.unchecked=100000对没有索引的属性的查询施加了限制。

您的配置[摘录]中没有olcDbIndex属性,因此 可能没有可供搜索的索引。

如果条目数超过 100,000 个,则搜索将需要进行完整目录扫描,并且会超出其默认size.unchecked限制,无论实际匹配的条目数有多少uid=al*

真的需要索引。尝试使用 运行olcLoglevel: stats index,并检查您的 syslog 配置以确保该设施(local4 是默认值)位于有用的地方。添加索引,包括至少您的常见查询、uid 的子(字符串)索引以及运行slapindex -v更新slapd不应该在索引生成期间运行。

http://www.openldap.org/doc/admin24/tuning.html

相关内容