Indexando sua árvore OpenLDAP

Se o seu log está se entupindo de mensagens como esta abaixo, então esta dica vai te cair como uma luva. O procedimento foi realizado em um sistema Debian com LDAP 2.4, mas com alguns pequenos ajustes você poderá executá-lo em qualquer distribuição

Feb 14 12:30:59 ldapserver slapd[9274]: <= bdb_equality_candidates: (uid) not indexed 
Feb 14 12:10:19 ldapserver slapd[9274]: <= bdb_equality_candidates: (mail) not indexed │

Estas mensagens são registradas quando alguma aplicação tenta fazer uma consulta a sua árvore LDAP mas o atributo que está sendo usado como critério não está indexado, nos casos acima uid e mail.

Para reindexar é rápido, mas a configuração, embora simples não é nada amigável, envolvendo inclusive uma parada no serviço slap.d. Segue então o procedimento.

Parar o serviço de diretórios:

# service slapd stop

Editar o arquivo de configuração, onde adicionaremos os índices:

# vim /etc/ldap/slapd.d/cn\=config/olcDatabase\=\{1\}hdb.ldif

Com este arquivo aberto em seu editor de textos, procure pela linha similar a seguinte:

olcDbIndex: objectClass eq

Logo abaixo dela adicione uma linha igual a esta para cada um dos atributos que seu sistema está reclamando. No meu caso eu adicionaria as duas linhas a seguir:

olcDbIndex: uid eq
olcDbIndex: mail eq

ATENÇÃO! Alterar este arquivo pode danificar integralmente o seu LDAP então certifique-se de não ter alterado nenhuma outra linha além destas que você quer incluir. Se estiver tudo OK salve o arquivo.

Agora vamos refazer todos índices:

# slapindex -F /etc/ldap/slapd.d/

O comando acima não deveria ser executado como root e por isso, você deverá receber uma mensagem de alerta sobre a possibilidade de que o slapd poderá não subir. Para evitar surpresas vamos corrigir a posse dos arquivos novamente:

# chown -R openldap:openldap /var/lib/ldap

E agora sim poderemos iniciar o serviço de diretórios novamente:

# service slapd start

Seu sistema deverá estar no ar novamente e as mensagens de atributo não indexados não deverão mais existir para estes atributos.

DICA DE SEGURANÇA

Como dito antes este procedimento pode ser arriscado e danificar sua base, então antes de fazê-lo verifique se o seu backup está em dia.

Um “backup quente” da base é suficiente para te salvar de qualquer problema, então se não tiver um, após parar o serviço execute os seguintes comandos para conseguir um backup funcional que poderá te salvar de muitas dores de cabeça:

service slapd stop ; 
cd / ; 
tar czf ldap-beforeindex.tgz /var/lib/ldap /etc/ldap ;
service slapd start ;

Com esta cópia você poderá seguir adiante. Caso algo dê errado, apague as pastas /var/lib/ldap e /etc/ldap restaure o seu backup antes de subir o slapd novamente:

service slapd stop ;
cd / ; 
rm /var/lib/ldap/*
rm -rf /etc/ldap/*
tar xzf ldap-beforeindex.tgz
service slapd start ;

2 comentários em “Indexando sua árvore OpenLDAP”

    1. E por que não? Ele funciona nos principais sistemas de inicialização usados pelas distros atuais e mesmo algumas mais “antiguinhas” (talvez nem todas, claro) ! 😀

      Mas, sim, você pode usar o systemctl se sentir-se mais confortável. Só esteja atento que a sintaxe do systemctl e do service, são invertidas.

      Os comandos systemctl start slapd e systemctl stop slapd fazem o mesmo efeito, respectivamente, que service slapd start e service slapd stop.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.