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 でもコマンドは機能しませんでした... とにかく、ありがとうございました