我正在创建如下数据库(从应用程序调用):
$ 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,而不是依赖数字索引的外部知识。