OpenLDAP: Índice para olcDatabase não respeitado

2

Estou criando bancos de dados como os seguintes (chamados de um aplicativo):

$ 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

O OpenLDAP responde com

adding new entry "olcDatabase={20}mdb,cn=config"

Mas o número do índice na frente de mdb não é respeitado. Na realidade, o banco de dados acaba em olcDatabase={2}mdb.ldif .

Isso também pode ser visto ao descarregar a configuração:

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

O índice é apenas incrementado toda vez que eu adiciono um novo banco de dados. O que faz sentido, mas eu preciso ser capaz de defini-lo explicitamente para que meu programa saiba onde seus dados estão armazenados.

O estranho é que tenho certeza que funcionou no começo. Eu tentei reinstalar (com --purge ) várias vezes sem sucesso.

Estou usando o Openldap 2.4.40 no 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

Em ldap.conf , estou definindo apenas TLS_CACERT .

    
por tiktuk 06.02.2017 / 15:48

1 resposta

1

Consulte cn=config para o olcSuffix apropriado e use o dn resultante, em vez de confiar no conhecimento externo do índice numérico.

    
por 08.02.2017 / 02:23