Estou com problemas para modificar o esquema de uma instalação do OpenLDAP usando a configuração de tempo de execução (cn = config). O que estou tentando fazer é modificar os atributos existentes e adicionar novos a um esquema personalizado. O erro que estou recebendo ao tentar aplicar as alterações é "nenhum objeto desse tipo" ou "nenhum desses valores". Ao usar o navegador JXplorer, o erro é:
javax.naming.NameNotFoundException: [LDAP: error code 32 - No Such Object]; remaining name 'cn={15}mySchema,cn=schema,cn=config'
Usar ldapmodify em um arquivo ldif da linha de comando gera o mesmo erro:
ldapmodify -h ldap://localhost/cn=config -x -p 389 -D cn=admin,cn=config -W -f modify.ldif
modifying entry "cn={15}mySchema,cn=schema,cn=config"
ldap_modify: No such object (32)
O que é estranho, porém, é que, embora esse erro ocorra, as alterações são confirmadas para a instância atual do serviço slapd. Por exemplo, se eu adicionei novos atributos e modifiquei um objeto para incluir esses atributos, esses atributos estarão disponíveis nas entradas que usam esse objeto. Eu posso prosseguir como se as mudanças funcionassem. Se o serviço slapd for reiniciado, no entanto, as alterações serão revertidas.
Se eu remover o {15} inicial do DN no arquivo ldif ou o prefixo semelhante no valor do atributo, recebo o mesmo erro (embora provavelmente por um motivo diferente):
modifying entry "cn=mySchema,cn=schema,cn=config"
ldap_modify: No such object (32)
matched DN: cn=schema,cn=config
Além disso, posso modificar as outras entradas de cn = config (por exemplo, olcDatabase = {- 1} frontend, cn = config) sem problemas e as alterações persistem nas reinicializações de serviço. É somente quando tento modificar as entradas em cn = schema, cn = config que o erro ocorre.
O servidor está executando o CentOS 6.2, de 64 bits, usando o OpenLDAP 2.4.23, que foi instalado via yum. Eu tentei vários navegadores (JXplorer, Softerra LDAP Administrator), bem como a linha de comando, todos com os mesmos resultados. O proprietário / grupo do diretório slapd.d é ldap / ldap e não há alteração mesmo quando as permissões dos arquivos de esquema são modificadas para 777. O uso do TLS pela porta 636 (navegador ou linha de comandos) também não tem efeito.
Alguém pode lançar alguma luz sobre isso e explicar o que poderia estar me impedindo de modificar o esquema através de cn = config?
EDIT: Aqui está o conteúdo de modify.ldif:
dn: cn={15}mySchema,cn=schema,cn=config
changetype: modify
add: olcAttributeTypes
olcAttributeTypes: ( 1.3.6.1.4.00000.2.3.14 NAME 'myTest' DESC 'This is only a test' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} )
Estamos usando nossa empresa PEN no lugar de 00000, e nenhum outro atributo está usando esse OID. Descobri que adicionar um prefixo numérico ao valor do atributo não faz diferença, mas o prefixo é necessário para o DN; sem isso, o erro significa o que diz e o diretório não é modificado.