ldapsearch密码文件格式


18

我应该如何通过密码才能ldapsearch使用该-y <password file>选项?
如果我以纯文本形式在密码文件中写入密码,则会出现此错误:

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选项的命令并在提示符下键入密码,则该命令将成功运行,但是我想以某种方式存储密码以创建脚本。


您正在使用哪种“密码文件”?您可能想向我们展示您正在键入的完整命令。您是否使用正确的绑定凭证?
solefald

Answers:


22

请记住,ldapsearch将使用文件的全部内容作为密码,这意味着它将包含一个终止的换行符(如果存在)。要验证这实际上是否是您的问题,请尝试创建一个没有文件的文件:

echo -n ThisIsaBadPassword > .pass.txt

更新:包含'-n')


1
我只是尝试过,但是却得到了完全一样的错误……
Paolo Tedesco 2010年

2
不,不会。您需要echo -nprintf为了避免换行。
user1686'5

echo -n起到了作用!谢谢大家的帮助。
Paolo Tedesco,2010年

在对grawity的评论进行后续处理时,echo -n可以正常工作,例如:echo -n“ secretpassword”> /etc/ldapscripts/ldapscripts.passwd
Ned W.

由此解决了烦人的问题,谢谢。不过,我以前只是sed剥离现有文件的末尾。
–wirefox

1

假设是换行符/回车符,请尝试以下操作:

cat .pass.txt | tr -d '\n\r' > .pass2.txt

然后使用.pass2.txt文件。您始终可以使用来检查新行和回车cat -vE,它们将分别显示为$和^ M。

您也可以-y <(cat .pass.txt | tr -d '\n\r')直接在ldapsearch命令中执行操作。


0

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


-2

无需将密码转储到实际文件中。只需用-n标志回显它以防止换行,然后按如下所示从STDIN文件描述符(/ dev / fd / 0)中读取它:

echo -n 'mypassword' | ldapsearch -x -D <my dn> -y /dev/fd/0 -h server.x.x -b "dc=x,dc=y" "cn=*"

这种方法的问题在于,它使您受制于shell历史记录和PS来发现密码。
csseller

1
点了。现在是2018年中。我从错误中学到了东西。不要认真对待我的2014年吹牛。谢谢。:)
Brian Showalter
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.