我正在创build如下所示的数据库(从应用程序调用):
$ ldapadd -Q -Y EXTERNAL -H ldapi:/// << EOF dn:olcDatabase = {20} mdb,cn = config objectClass:olcDatabaseConfig objectClass:olcMdbConfig olcDatabase:{20} mdb olcDbDirectory:/var/lib/ldap/domain.tld olcSuffix:dc = domain,dc = tld olcAccess:{0}到attrs = userPassword,shadowLastChange通过匿名身份validation通过* none olcAccess:{1}到dn.base =“”通过* read olcAccess:{2}通过*阅读 olcRootDN:cn = user,dc = domain,dc = tld olcRootPW:{SSHA} XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX olcDbCheckpoint:512 30 olcDbIndex:objectClass eq olcDbIndex:cn,uid eq olcDbIndex:uidNumber,gidNumber eq olcDbIndex:member,memberUid eq EOF
OpenLDAP响应
adding new entry "olcDatabase={20}mdb,cn=config"
但是mdb前面的索引号是不被尊重的。 实际上,数据库在olcDatabase={2}mdb.ldif 。
这在转储configuration时也可以看到:
$ slapcat -b cn = config
dn:olcDatabase = {2} mdb,cn = config
objectClass:olcDatabaseConfig
objectClass:olcMdbConfig
olcDatabase:{2} mdb
olcDbDirectory:/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 。
查询cn=config以获得适当的olcSuffix并使用生成的dn,而不是依赖数字索引的外部知识。