Я создаю следующие базы данных (вызываемые из приложения):
$ 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 вместо того, чтобы полагаться на внешние данные о числовом индексе.