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.

Paolo Tedesco
la source
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)

sysadmin1138
la source
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.

Kyle Brandt
la source
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

hfranco
la source
-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=*"
Brian Showalter
la source
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