formato de arquivo de senha do ldapsearch

18

Como devo passar uma senha para ldapsearchusar a -y <password file>opção?
Se eu escrever a senha no arquivo de senha em texto sem formatação, recebo este erro:

ldap_bind: Invalid credentials (49)
    additional info: 80090308: LdapErr: DSID-0C0903AA, comment: AcceptSecurityContext error, data 52e, v1772

O mesmo acontece se eu usar a -w <password>opção

EDIT :
O comando que estou executando é

ldapsearch -x -D <my dn> -y .pass.txt -h server.x.x -b "dc=x,dc=y" "cn=*"

Onde o arquivo .pass.txtcontém minha senha, em texto simples. O DN e a senha estão corretos. Se eu executar o comando com a -Wopção e digitar a senha no prompt, o comando será executado com êxito, mas eu gostaria de armazenar a senha de alguma forma para criar um script.

Paolo Tedesco
fonte
Que tipo de "arquivo de senha" você está usando? Você pode nos mostrar o comando completo que está digitando. Você está usando credenciais de ligação corretas?
Solefald

Respostas:

22

Lembre-se de que o ldapsearch usará todo o conteúdo do arquivo para a senha - o que significa que incluirá um caractere de nova linha final, se houver. Para verificar se esse é realmente o seu problema, tente criar um arquivo sem um:

echo -n ThisIsaBadPassword > .pass.txt

( ATUALIZAÇÃO : Incluído '-n')

sysadmin1138
fonte
11
Eu apenas tentei isso, mas eu obter exatamente o mesmo erro ...
Paolo Tedesco
2
Não, não vai. Você precisa echo -nou printfpara evitar a nova linha.
User1686 11/11/10
O eco -n fez o truque! Obrigado a todos por sua ajuda.
Paolo Tedesco
Em seguimento ao comentário de grawity, echo -n funciona perfeitamente, por exemplo: echo -n "secretpassword"> /etc/ldapscripts/ldapscripts.passwd
Ned W.
Problema irritante resolvido devido a isso, obrigado. Eu só costumava sedretirar o final de um arquivo existente.
Wirefox 04/04/19
1

Supondo que seja a nova linha / retorno de carro, tente o seguinte:

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

Em seguida, use o arquivo .pass2.txt. Você sempre pode verificar se há novas linhas e retornos de carro cat -vEe eles aparecerão como $ e ^ M, respectivamente.

Você provavelmente também poderia fazer isso -y <(cat .pass.txt | tr -d '\n\r')diretamente no comando ldapsearch.

Kyle Brandt
fonte
0

ldapsearch -x -D cn=Manager,dc=domain,dc=com -y pass.txt -H ldap://ldap.domain.com -b dc=domain,dc=com

Você pode ter que chmod 600 pass.txt

hfranco
fonte
-2

Não é necessário despejar a senha em um arquivo real. Apenas faça eco com o sinalizador -n para impedir a nova linha e, em seguida, leia-a no descritor de arquivo STDIN (/ dev / fd / 0) da seguinte maneira:

echo -n 'mypassword' | ldapsearch -x -D <my dn> -y /dev/fd/0 -h server.x.x -b "dc=x,dc=y" "cn=*"
Brian Showalter
fonte
o problema dessa abordagem é que você fica sujeito ao histórico do shell e ao PS para descobrir sua senha.
cgseller
11
Ponto tomado. É meados de 2018 agora. Eu aprendi com meus erros. Não leve a sério o meu discurso de 2014. Obrigado. :)
Brian Showalter