format de fichier de mot de passe ldapsearch


18

Comment dois-je transmettre un mot de passe pour ldapsearchutiliser l' -y <password file>option?
Si j'écris le mot de passe dans le fichier de mots de passe en texte brut, j'obtiens cette erreur:

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

La même chose se produit si j'utilise l' -w <password>option.

EDIT :
La commande que j'exécute est

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

Où le fichier .pass.txtcontient mon mot de passe, en texte brut. Le DN et le mot de passe sont corrects. Si j'exécute la commande avec l' -Woption et que je tape le mot de passe à l'invite, la commande s'exécute avec succès, mais je voudrais en quelque sorte stocker le mot de passe pour créer un script.


Quel type de "fichier de mot de passe" utilisez-vous? Vous voudrez peut-être nous montrer la commande complète que vous tapez. Utilisez-vous des informations d'identification de liaison correctes?
solefald

Réponses:


22

Gardez à l'esprit que ldapsearch utilisera l'intégralité du contenu du fichier pour le mot de passe - ce qui signifie qu'il inclura un caractère de fin de ligne s'il en existe un. Pour vérifier s'il s'agit bien de votre problème, essayez de créer un fichier sans celui-ci:

echo -n ThisIsaBadPassword > .pass.txt

( MISE À JOUR : '-n' inclus)


1
Je viens d'essayer ça, mais j'obtiens exactement la même erreur ...
Paolo Tedesco

2
Non, ce ne sera pas le cas. Vous avez besoin echo -nou printfpour éviter la nouvelle ligne.
user1686

L'écho -n a fait l'affaire! Merci à tous pour votre aide.
Paolo Tedesco

Dans le prolongement du commentaire de grawity, echo -n fonctionne parfaitement, par exemple: echo -n "secretpassword"> /etc/ldapscripts/ldapscripts.passwd
Ned W.

Problème gênant résolu à cause de cela, merci. sedCependant, je viens de supprimer la fin d'un fichier existant.
wirefox

1

En supposant qu'il s'agit du retour à la ligne / chariot, essayez ce qui suit:

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

Utilisez ensuite le fichier .pass2.txt. Vous pouvez toujours vérifier les nouvelles lignes et les retours chariot avec cat -vEet ils apparaîtront respectivement comme $ et ^ M.

Vous pouvez aussi probablement le faire -y <(cat .pass.txt | tr -d '\n\r')directement dans la commande ldapsearch.


0

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

Vous devrez peut-être chmod 600 pass.txt


-2

Il n'est pas nécessaire de sauvegarder le mot de passe dans un fichier réel. Faites-le simplement écho avec l'indicateur -n pour empêcher la nouvelle ligne, puis lisez-le dans le descripteur de fichier STDIN (/ dev / fd / 0) comme suit:

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

le problème avec cette approche est qu'elle vous laisse soumis à l'historique du shell et PS pour découvrir votre mot de passe.
cgseller

1
Point pris. C'est la mi-2018 maintenant. J'ai appris de mes erreurs. Ne prenez pas au sérieux mes bavures de 2014. Je vous remercie. :)
Brian Showalter
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.