openldap 2.4.44。エラー「-D が以前に指定されました」

openldap 2.4.44。エラー「-D が以前に指定されました」

3 番目の DIT は不要になったため、LDAP ルート DSE から再帰的に削除しようとしましたが、顧客の環境で次のエラーが発生します。

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

2 つの bindDN (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 サーバー (dev、test、prod) に表示されるため、これは 1 台のサーバーだけの異常な動作ではありません。

私は両方の「環境」、つまりテストラボと顧客環境で SSL 証明書を使用しています。テストラボと顧客環境の openldap 構成は似ています。

答え1

前述のファイルには、指定された binddn は見つかりませんでした。ただし、定義されたエイリアスは見つかりました... 誰かが、オプション -x -W -D -H を使用して、DIT の 1 つに ldapadd、ldapdelete などのエイリアスを設定しました。そのため、この DIT のコマンドは標準構文では機能しませんでした。もちろん、他の DIT でもコマンドは機能しませんでした... とにかく、ありがとうございました

関連情報