-y <password file>
オプションを使用してldapsearch
にパスワードを渡すにはどうすればよいですか?
パスワードをパスワードファイルにプレーンテキストで書き込むと、次のエラーが発生します。
ldap_bind: Invalid credentials (49)
additional info: 80090308: LdapErr: DSID-0C0903AA, comment: AcceptSecurityContext error, data 52e, v1772
-w <password>
オプションを使用した場合も同様です。
[〜#〜]編集[〜#〜]:
私が実行しているコマンドは
ldapsearch -x -D <my dn> -y .pass.txt -h server.x.x -b "dc=x,dc=y" "cn=*"
ファイル.pass.txt
には、パスワードがプレーンテキストで含まれています。 DNとパスワードの両方が正しい。 -W
オプションを指定してコマンドを実行し、プロンプトにパスワードを入力すると、コマンドは正常に実行されますが、スクリプトを作成するために何らかの方法でパスワードを保存します。
Ldapsearchはパスワードのファイルの内容全体を使用することに注意してください。つまり、改行文字が存在する場合は、それに改行文字が含まれます。これが実際に問題であるかどうかを確認するには、ファイルなしでファイルを作成してみます。
echo -n ThisIsaBadPassword > .pass.txt
([〜#〜] update [〜#〜]:含まれる '-n')
改行/改行であると想定して、次のことを試してください。
_cat .pass.txt | tr -d '\n\r' > .pass2.txt
_
次に、.pass2.txtファイルを使用します。 _cat -vE
_を使用すると、常に改行と改行を確認でき、それぞれ$および^ Mとして表示されます。
Ldapsearchコマンドで直接-y <(cat .pass.txt | tr -d '\n\r')
を実行することもできます。
ldapsearch -x -D cn=Manager,dc=domain,dc=com -y pass.txt -H ldap://ldap.domain.com -b dc=domain,dc=com
Chmod 600 pass.txtが必要になる場合があります