OpenLDAP: Индекс для olcDatabase не соблюдается

Я создаю следующие базы данных (вызываемые из приложения):

$ 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 .

2
задан 6 February 2017 в 16:48
1 ответ

Запросить cn = config для соответствующего olcSuffix и использовать полученный dn вместо того, чтобы полагаться на внешние данные о числовом индексе.

1
ответ дан 3 December 2019 в 12:37

Теги

Похожие вопросы