A replicação do Open Directory poderá não funcionar e a mensagem "Size Limite exceeded" (Foi excedido o limite de tamanho) é apresentada em slapd.log

A replicação do Open Directory poderá não funcionar. Quando tal acontecer, aparecerão entradas como as seguintes em /var/log/slapd.log

slapd[209]: do_syncrep2: rid=001 LDAP_RES_SEARCH_RESULT (4) Size limit exceeded slapd[209]: do_syncrep2: rid=001 (4) Size limit exceeded

Tal pode ocorrer se um servidor do Open Directory estiver inativo durante um longo período ou se for criada uma réplica quando existirem mais de 11.000 objetos no armazenamento de dados LDAP. 11.000 é, por predefinição, o número máximo de objetos que podem ser devolvidos numa pesquisa.

Permita que o utilizador _ldap_replicator substitua o limite de pesquisas. Para tal, é necessário alterar a configuração do servidor LDAP em todos os servidores do Open Directory. Este processo implica a autenticação como administrador do diretório e a execução de alguns comandos de modificação LDAP no Terminal. Também deverá estar familiarizado com a base de pesquisa (também conhecida como contexto de nomenclatura) do servidor LDAP.

Pode seguir estes passos para este efeito.

Encontrar a base de pesquisa do servidor LDAP

Encontre a base de pesquisa do servidor LDAP. Normalmente, esta consiste no nome de domínio completamente qualificado do servidor com o prefixo dc= anexado a cada etiqueta e com os pontos finais substituídos por vírgulas.

Por exemplo, um servidor com nome de host server.example.com teria uma base de pesquisa predefinida de "dc=server,dc=example,dc=com". Para confirmar a base de pesquisa, consulte o próprio servidor LDAP com o seguinte comando do Terminal:

ldapsearch -x -LLL -b “” -s base namingContexts

Procure a linha com namingContext e a base de pesquisa será indicada após os dois pontos, tal como no resultado de exemplo abaixo.

dn: namingContexts: dc=server,dc=example,dc=com

Obter as credenciais do kerberos para o administrador do diretório

O nome predefinido deste utilizador é diradmin, mas o nome poderá ter sido alterado aquando da criação do Open Directory principal. Para tal, utilize o comando kinit no Terminal. Execute o seguinte comando, substituindo diradmin pelo nome correto do administrador do diretório, se necessário, e introduza a palavra-passe quando esta lhe for solicitada. Não existem resultados.

kinit diradmin

Em seguida, utilize ldapmodify em modo interativo no Terminal para efetuar estas alterações. Basta executar o seguinte comando no Terminal:

ldapmodify

Nota: esta ação irá produzir algumas mensagens SASL e aguardar a entrada. Se tiver sucesso, o resultado de SASL deverá ter este aspeto:

SASL/GSSAPI authentication started SASL username: diradmin@REALM SASL SSF: 56 SASL data security layer installed.

Modificar a configuração

Por último, faça modificações à configuração. Para tal, é necessário introduzir todo o texto abaixo na janela do Terminal como entrada no comando ldapmodify. O elemento [search base] abaixo tem de ser substituído pela base de pesquisa. Os parênteses têm igualmente de ser removidos.

dn: olcDatabase={1}bdb,cn=config changetype: modify add: olcLimits olcLimits: dn.exact="uid=_ldap_replicator,cn=users,[search base]" time.soft=unlimited time.hard=unlimited size.soft=unlimited size.hard=unlimited dn: olcDatabase={2}bdb,cn=config changetype: modify add: olcLimits olcLimits: dn.exact="uid=_ldap_replicator,cn=users,[search base]" time.soft=unlimited time.hard=unlimited size.soft=unlimited size.hard=unlimited

Em seguida, prima Controlo+D.

Se todos os passos forem executados com sucesso, serão apresentadas mensagens como a seguinte.

modifying entry "olcDatabase={1}bdb,cn=config" modifying entry "olcDatabase={2}bdb,cn=config"

Mais informações

Alternativa de script da shell

Abaixo encontra-se o texto de um script da shell que pode utilizar para automatizar este processo. Coloque o administrador do diretório no comando kinit (como mostrado acima) e execute este script. Consulte este artigo para obter sugestões de editores de texto.

#!/bin/sh nc=`ldapsearch -x -LLL -b "" -s base namingContexts | awk '/namingContexts/ {print $2}'` ldapmodify <

Este documento será actualizado há medida que mais informação se tornar disponível.

Data de publicação: