Consulte cn=config
para o olcSuffix
apropriado e use o dn resultante, em vez de confiar no conhecimento externo do índice numérico.
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
.
Consulte cn=config
para o olcSuffix
apropriado e use o dn resultante, em vez de confiar no conhecimento externo do índice numérico.