openldap sizelimit. Не могу получить более 500 записей

Я не могу получить более 500 записей, когда запрашиваю свой openldap-сервер.

Хотя я внес следующие изменения:

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

После перезапустите мой компьютер и запросите следующую команду:

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

Я получаю:

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

# numResponses: 501
# numEntries: 500

Я пропустил некоторые необходимые изменения?

3
задан 9 February 2017 в 14:03
2 ответа

Ограничение поиска OpenLDAP может быть установлено на стороне сервера или клиента.

1. На стороне сервера в разделе базы данных slapd.conf (старый стиль конфигурация устарела, но можно использовать сталь) или cn = config (рекомендуется)

Глобально по базе данных:

slapd.conf

sizelimit <numberOfMaxResult>

cn = config

olcSizeLimit: <numberOfMaxResult>

Этот параметр не является обязательным, по умолчанию 500 .

На пользователя:

slapd.conf

limits <Who> size=<numberOfMaxResult>

cn = config

olcLimits: <Who> size=<numberOfMaxResult>

Во всех случаях

Кто может быть:

* : все

анонимные : неподключенный пользователь

пользователи : все подключенные пользователи

dn.exact = "cn = xxxx, ou = people ... : один пользователь

group / groupOfNames / member =" cn = manager, ou = groups ... : группа пользователей

numberOfMaxResult может быть:

неограниченным : неограниченным размером, очень плохая идея использовать эту конфигурацию в производстве

число (например, 300) : максимальное количество записей результатов.

Если заданы ограничения как глобально, так и на пользователя, применяется ограничение на пользователя .

2. Сторона клиента

в файле конфигурации клиента ldap.conf:

SIZELIMIT <numberOfMaxResult>

Параметр запроса

ldapsearch -z 10 ... ограничить результат до 10

Все клиентские API должны предоставлять такой параметр.

Если заданы ограничения на размер как на стороне сервера, так и на стороне клиента, применяется наименьшее число .

Это краткое резюме, для получения дополнительной информации в этом разделе:

man slapd.conf
man slapd-config

Конфигурация ограничений в руководстве администратора OpenLDAP .

7
ответ дан 3 December 2019 в 05:11

Если вы запросите большой набор результатов в Active Directory (AD), вы получите сообщение об ошибке «Превышен предел размера»: поиск в Active Directory, выполняемый без разбиения на страницы, ограничивается возвратом максимум первые 1000 записей.

Способ обойти этот предел размера поиска - получить "страницы" результатов, также через ldapsearch.

Ldapsearch предоставляет опцию '-E', которая позволяет выполнять поиск по страницам.

Мы можем запросить все элементы большого набора результатов, просто указав правильную политику разбиения на страницы.

Например, мы можем использовать -E и указать значение pr = 1000 / noprompt, чтобы вернуть все страницы, с 1000 элементов результатов на страницу, без дальнейшего взаимодействия с пользователем (без подсказки).

ldapsearch -E pr=1000/noprompt -x
          -h adhost.domain.com
          -p 389
          -D  cn=administrator,cn=users,dc=domain,dc=com
          -w password
          -s sub -b  "OU=Users,DC=domain,DC=com"
          "(objectClass=user)" dn
0
ответ дан 3 December 2019 в 05:11

Теги

Похожие вопросы