Я создаю следующие базы данных (вызываемые из приложения):
$ 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}to attrs=userPassword,shadowLastChange by self write by anonymous auth by * none olcAccess: {1}to dn.base="" by * read olcAccess: {2}to * by * read 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
.
Это также можно увидеть при сбросе конфигурации:
$ 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
) несколько раз, но безрезультатно.
Я использую Openldap 2.4.40 в Debian:
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 вместо того, чтобы полагаться на внешние данные о числовом индексе.