openldap sizelimit. Can't receive more than 500 entries

I can't receive more than 500 entries, when I query my openldap-server.

Although I made the following changes:

slapd.conf

    # 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.conf

#
# 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

After restartin my machine, and query the following command:

ldapsearch -x -h localhost -b "dc=XXX,dc=XXX,dc=XXX"

I receive:

# search result
search: 2
result: 4 Size limit exceeded

# numResponses: 501
# numEntries: 500

Did I miss some necessary changes?


Solution 1:

OpenLDAP search limit can be set at server side or client side.

1. Server side in database section of slapd.conf (old style configuration deprecated but steel usable) or cn=config (recommended)

Globally by database:

slapd.conf

sizelimit <numberOfMaxResult>

cn=config

olcSizeLimit: <numberOfMaxResult>

This parameter is not mandatory, default is 500.

Per user:

slapd.conf

limits <Who> size=<numberOfMaxResult>

cn=config

olcLimits: <Who> size=<numberOfMaxResult>

In all cases

Who may be :

* : all

anonymous : not connected user

users : all connected users

dn.exact="cn=xxxx,ou=people... : one user

group/groupOfNames/member="cn=managers,ou=groups...: group of users

numberOfMaxResult may be:

unlimited : unlimited size, it's a very bad idea to use this configuration in production

number (like 300): number of max result records.

If both globally and per user limit size are done, per user limit is applied.

2. Client side

in ldap.conf client configuration file:

SIZELIMIT <numberOfMaxResult>

Request parameter

ldapsearch -z 10 ... limit result to 10

All client API should provide such parameter.

If both server side and client side limit size are done, The smallest number is applied.

This is a short summary, for further informations in this topic:

man slapd.conf
man slapd-config

Limits configuration in OpenLDAP Administrator's guide.