formato de archivo de contraseña de ldapsearch

18

¿Cómo se supone que debo pasar una contraseña para ldapsearchusar la -y <password file>opción?
Si escribo la contraseña en el archivo de contraseña en texto plano, me sale este error:

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

Lo mismo sucede si uso la -w <password>opción.

EDITAR :
El comando que estoy ejecutando es

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

Donde el archivo .pass.txtcontiene mi contraseña, en texto plano. Tanto el DN como la contraseña son correctos. Si ejecuto el comando con la -Wopción y escribo la contraseña en el indicador, el comando se ejecuta correctamente, pero me gustaría almacenar la contraseña de alguna manera para crear un script.

Paolo Tedesco
fuente
¿Qué tipo de "archivo de contraseña" estás usando? Es posible que desee mostrarnos el comando completo que está escribiendo. ¿Está utilizando las credenciales de enlace correctas?
solefald

Respuestas:

22

Tenga en cuenta que ldapsearch usará todo el contenido del archivo para la contraseña, lo que significa que INCLUIRÁ un carácter de nueva línea de terminación si existe. Para verificar si este es realmente su problema, intente crear un archivo sin uno:

echo -n ThisIsaBadPassword > .pass.txt

( ACTUALIZACIÓN : Incluido '-n')

sysadmin1138
fuente
1
Acabo de intentar eso, pero me sale exactamente el mismo error ...
Paolo Tedesco
2
No, no lo hará. Necesita echo -no printfpara evitar la nueva línea.
user1686
El eco -n hizo el truco! Gracias por toda tu ayuda.
Paolo Tedesco
En seguimiento al comentario de Grawity, echo -n funciona perfectamente, por ejemplo: echo -n "contraseña secreta"> /etc/ldapscripts/ldapscripts.passwd
Ned W.
Problema molesto resuelto debido a esto, gracias. Sin sedembargo, solía quitar el final de un archivo existente.
wirefox
1

Suponiendo que es la nueva línea / reenvío del carro, intente lo siguiente:

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

Luego use el archivo .pass2.txt. Siempre puede verificar si hay nuevas líneas y retornos de carro con cat -vEy aparecerán como $ y ^ M respectivamente.

Probablemente también podría hacerlo -y <(cat .pass.txt | tr -d '\n\r')directamente en el comando ldapsearch.

Kyle Brandt
fuente
0

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

Puede que tenga que chmod 600 pass.txt

hfranco
fuente
-2

No es necesario volcar la contraseña en un archivo real. Simplemente repítalo con el indicador -n para evitar la nueva línea, luego léalo desde el descriptor de archivo STDIN (/ dev / fd / 0) de la siguiente manera:

echo -n 'mypassword' | ldapsearch -x -D <my dn> -y /dev/fd/0 -h server.x.x -b "dc=x,dc=y" "cn=*"
Brian Showalter
fuente
El problema con este enfoque es que lo deja sujeto al historial de shell y PS para descubrir su contraseña.
cgseller
1
Punto a favor. Es mediados de 2018 ahora. He aprendido de mis errores. No te tomes en serio mi parloteo de 2014. Gracias. :)
Brian Showalter