OpenLDAP:不尊重 olcDatabase 的索引

OpenLDAP:不尊重 olcDatabase 的索引

我正在创建如下数据库(从应用程序调用):

$ ldapadd -Q -Y EXTERNAL -H ldapi:/// <<EOF
dn:olcDatabase={20}mdb,cn=config
对象类:olcDatabaseConfig
对象类:olcMdbConfig
olc数据库:{20}mdb
olcDb目录:/var/lib/ldap/domain.tld
olcSuffix:dc=domain,dc=tld
olcAccess:{0}to attrs=userPassword,shadowLastChange 由自己写入 由匿名身份验证 由 * none
olcAccess:{1}至 dn.base="" 由 * 读取
olcAccess:{2}至 * 由 * 读取
olcRootDN:cn=用户,dc=域,dc=tld
olcRootPW: {SSHA}XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
olcDbCheckpoint:512 30
olcDbIndex:objectClass eq
olcDbIndex: cn,uid eq
olcDbIndex:uidNumber,gidNumber 等
olcDbIndex:成员,memberUid 等

末梢血

OpenLDAP 响应

adding new entry "olcDatabase={20}mdb,cn=config"

但是前面的索引号mdb没有被尊重。实际上,数据库最终以 结尾olcDatabase={2}mdb.ldif

转储配置时也可以看到这一点:

$ slapcat -b cn=配置

dn:olcDatabase={2}mdb,cn=config
对象类:olcDatabaseConfig
对象类:olcMdbConfig
olc数据库:{2}mdb
olcDb目录:/var/lib/ldap/domain.tld
olcSuffix:dc=domain,dc=tld
...

每次添加新数据库时,索引都会递增。这很合理,但我需要能够明确设置它,以便我的程序知道其数据存储在哪里。

奇怪的是,我很确定它一开始是有效的。我尝试过--purge多次重新安装(使用),但无济于事。

我在 Debian 上使用 Openldap 2.4.40:

Linux LINUX_LDAP_DEV 3.16.0-4-686-pae #1 SMP Debian 3.16.36-1+deb8u2 (2016-10-19) i686 GNU/Linux

ldap.conf我只是设置TLS_CACERT

答案1

查询cn=config适当的olcSuffix并使用结果的 dn,而不是依赖数字索引的外部知识。

相关内容