Tento excluir recursivamente nosso terceiro DIT de nosso DSE raiz ldap, pois ele não é mais necessário, mas recebo o seguinte erro no ambiente de nosso cliente:
host:~# ldapdelete -x -W -D cn=admin,cn=config -r -f /tmp/ldap-bck/delete.ldif
ldapdelete: -D previously specified
O mesmo comando está funcionando perfeitamente em meu testlab, em meu servidor Virtualbox Centos 7.5. Mas não no ambiente do cliente no RHEL 7.6. O número da versão do openldap é o mesmo, 2.4.44. Eu estava brincando com as opções, mudei a ordem das opções, mudei "" e '' para bindDN (-D) e DN, estava usando as opções -c e -v para ver mais...e não consigo resolver o emitir...
Primeiro tentei apenas excluir o DN:
host:~# ldapdelete -x -W -D cn=admin,cn=config 'dc=x,dc=y,dc=z,dc=zzz'
Então eu tentei usando a opção -f :
host:~# ldapdelete -x -W -D cn=admin,cn=config -r -f /tmp/ldap-bck/delete.ldif
Tentei dois bindDN-s (cn=admin,cn=config e o rootDN cn=admin,dc=x,dc=y,dc=z,dc=zzz também, este último tem que funcionar).
Tentei sem o parâmetro -D - então obtive:
host:~# ldapdelete -r -f /tmp/ldap-bck/delete.ldif
Enter LDAP Password:
ldap_delete: Insufficient access (50)
host:~# ldapdelete -r -c -f /tmp/ldap-bck/delete.ldif
Enter LDAP Password:
ldap_bind: Server is unwilling to perform (53)
additional info: unauthenticated bind (DN with no password) disallowed
host:~# ldapdelete -r -v -f /tmp/ldap-bck/delete.ldif
ldap_initialize( ldapi:///??base )
Enter LDAP Password:
ldap_bind: Server is unwilling to perform (53)
additional info: unauthenticated bind (DN with no password) disallowed
Suponho que porque o bindDN e a senha sejam necessários. (Eu tenho a senha correta, não há erro possível, pois a mesma senha é usada atualmente para todos os 3 DITs e o banco de dados de configuração.)
Eu tentei a autenticação -Y EXTERNAL mas não está funcionando:
host:~# ldapmodify -Y EXTERNAL -H ldapi:/// -f /tmp/ldap-bck/delete.ldif -n
ldapmodify: incompatible with authentication choice
Então eu tenho que usar autenticação simples. Mas assim que especifico a opção -D, recebo o mesmo erro. Tentei fazer o mesmo com o ldapmodify usando um arquivo ldif. O mesmo erro:
host:~# ldapmodify -D "cn=admin,cn=config" -x -W -f /tmp/ldap-bck/delete.ldif -n
host:~# ldapmodify -D "cn=admin,dc=x,dc=y,dc=z,dc=zzz" -x -W -f /tmp/ldap-bck/delete.ldif -n
Então tentei executar o ldapsearch para verificar a funcionalidade, mas o mesmo erro se eu especificar a opção -D.
host:~# ldapsearch -x -D "cn=admin,dc=x,dc=y,dc=z,dc=zzz" -W -b 'dc=x,dc=y,dc=z,dc=zzz' '(objectclass=*)' -c
ldapsearch: -D previously specified
E o mesmo erro aparece em 3 servidores RHEL (dev, test e prod), portanto não é apenas o comportamento estranho de um servidor.
Estou usando certificados SSL em ambos os "ambientes" - no meu testlab e no ambiente do cliente. A configuração do openldap do meu testlab e do ambiente do cliente é semelhante.
Responder1
Não encontrei nenhum binddn especificado nos arquivos mencionados. Mas encontramos um alias definido... Alguém definiu um alias para ldapadd, ldapdelete, etc. para um dos DITs com as opções -x -W -D -H. E então meus comandos para este DIT não estavam funcionando com a sintaxe padrão. E é claro que meus comandos também não estavam funcionando para os outros DITs... Obrigado mesmo assim