Openldap

如何在 OpenLDAP 中設置 size.pr?

  • November 24, 2016

我認為我的一個 LDAP 客戶端在 OpenLDAP 中達到了分頁限制。客戶端看到的具體錯誤是以下 Java 事物:

REASON: Caught exception running LDAP sync. 
[LDAP: error code 2 - paged results cookie is invalid]; 
nested exception is javax.naming.CommunicationException: 
[LDAP: error code 2 - paged results cookie is invalid]; 
remaining name 'dc=example,dc=com'

Google搜尋該錯誤引發了對 LDAP 分頁和相關限制的討論。這份關於OpenLDAP 的文件限制提及olcSizeLimitsize.pr.

我能夠使用這個 ldif 將我的 olcSizeLimit 從 500 更改為 -1:

dn: cn=config
changetype: modify
replace: olcSizeLimit
olcSizeLimit: -1

不幸的是,我的客戶仍然看到它的分頁問題。

size.pr是一個 slapd.conf 設置,而我的 OpenLDAP 使用 slapd.d 代替。在 LDAP 模式中搜尋後,我發現olcDbClientPr它被描述為'PagedResults handling'. 此外,以下是OpenLDAP 原始碼中的描述方式:

{ "client-pr", "accept-unsolicited|disable|<size>", 2, 2, 0,
   ARG_MAGIC|LDAP_BACK_CFG_CLIENT_PR,
   meta_back_cf_gen, "( OLcfgDbAt:3.111 "
       "NAME 'olcDbClientPr' "
       "DESC 'PagedResults handling' "
       "SYNTAX OMsDirectoryString "
       "SINGLE-VALUE )",
   NULL, NULL },

假設 olcDbClientPr 與 size.pr 相同,我該如何設置呢?

我試過這個:

dn: cn=config
changetype: modify
replace: olcDbClientPr
olcDbClientPr: -1

它拋出這個錯誤:

modifying entry "cn=config"
ldap_modify: Object class violation (65)
   additional info: attribute 'olcDbClientPr' not allowed

如果它是相關的,這裡是我的cn=config目錄的內容:

# ls /etc/openldap/slapd.d/cn=config/
cn=module{0}.ldif  olcDatabase={0}config.ldif     olcDatabase={1}hdb.ldif
cn=schema          olcDatabase={-1}frontend.ldif  olcDatabase={1}monitor.ldif
cn=schema.ldif     olcDatabase={1}hdb

size.pr是每個數據庫(和 dn/group 範圍)的一個olcLimits選項。您可能還對全域olcSizeLimit選項感興趣。

來自slapd-config(5)

olcSizeLimit: 大小$$ .{soft|hard|unchecked} $$=$$ … $$

指定從搜尋操作返回的最大條目數。預設大小限制為 500。使用無限制指定無限制。第二種格式允許對尺寸限制進行細粒度設置。額外的參數可以添加到相同的值或附加值中。有關不同標誌的說明,請參見 olcLimits。


olcDbClientPr不一樣。_size.pr

引用自:https://serverfault.com/questions/816491