我尝试从 ldap 根 DSE 中递归删除第三个 DIT,因为不再需要它,但我在客户的环境中收到以下错误:
host:~# ldapdelete -x -W -D cn=admin,cn=config -r -f /tmp/ldap-bck/delete.ldif
ldapdelete: -D previously specified
同样的命令在我的 Virtualbox Centos 7.5 服务器上的测试实验室中运行得非常顺利。但在 RHEL 7.6 的客户环境中则不然。 openldap 版本号相同,2.4.44。我正在摆弄选项,更改了选项的顺序,更改了 bindDN (-D) 和 DN 的“”和 '',正在使用 -c 和 -v 选项查看更多...并且我无法解决问题...
首先我尝试删除 DN:
host:~# ldapdelete -x -W -D cn=admin,cn=config 'dc=x,dc=y,dc=z,dc=zzz'
然后我尝试使用选项 -f :
host:~# ldapdelete -x -W -D cn=admin,cn=config -r -f /tmp/ldap-bck/delete.ldif
已经尝试了两个bindDN-s(cn = admin,cn = config和rootDN cn = admin,dc = x,dc = y,dc = z,dc = zzz以及,最后一个必须工作)。
尝试过不使用 -D 参数 - 然后我得到:
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
我想因为bindDN 和密码,两者都是需要的。 (我有密码,正确的密码,不可能出现错误,因为当前所有 3 个 DIT 和配置数据库使用相同的密码。)
我已经尝试过 -Y EXTERNAL 身份验证,但这不起作用:
host:~# ldapmodify -Y EXTERNAL -H ldapi:/// -f /tmp/ldap-bck/delete.ldif -n
ldapmodify: incompatible with authentication choice
所以我必须使用简单身份验证。但是,一旦我指定 -D 选项,就会出现相同的错误。我尝试使用 ldif 文件对 ldapmodify 执行相同操作。相同的错误:
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
然后我尝试运行 ldapsearch 来检查功能,但如果指定 -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
同样的错误出现在 3 台 RHEL 服务器(开发、测试和生产)上,因此这不仅仅是一台服务器的奇怪行为。
我在“环境”中使用 SSL 证书 - 因此在我的测试实验室和客户环境中。我的测试实验室和客户环境的 openldap 配置类似。
答案1
我在上述文件中没有找到任何指定的binddn。但我们发现定义了别名...有人使用选项 -x -W -D -H 为其中一个 DIT 设置了 ldapadd、ldapdelete 等别名。所以我的这个 DIT 命令不能使用标准语法。当然,我的命令对其他 DIT 也不起作用......无论如何还是谢谢你