ldapsearch Passwort-Dateiformat

18

Wie soll ich ein Passwort für die ldapsearchVerwendung der -y <password file>Option vergeben?
Wenn ich das Passwort in die Passwortdatei im Klartext schreibe, erhalte ich folgende Fehlermeldung:

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

Das gleiche passiert, wenn ich die -w <password>Option benutze .

BEARBEITEN :
Der Befehl, den ich ausführe, ist

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

Wo die Datei .pass.txtmein Passwort enthält, im Klartext. Sowohl der DN als auch das Passwort sind korrekt. Wenn ich den Befehl mit der -WOption ausführe und das Kennwort an der Eingabeaufforderung eingebe, wird der Befehl erfolgreich ausgeführt, aber ich möchte das Kennwort irgendwie speichern, um ein Skript zu erstellen.

Paolo Tedesco
quelle
Welche Art von "Passwortdatei" verwenden Sie? Sie können uns den vollständigen Befehl anzeigen, den Sie eingeben. Verwenden Sie die richtigen Bindeanmeldeinformationen?
Solefald

Antworten:

22

Beachten Sie, dass ldapsearch den gesamten Inhalt der Datei für das Kennwort verwendet. Dies bedeutet, dass ein eventuell vorhandenes Zeilenumbruchzeichen enthalten wird. Versuchen Sie, eine Datei ohne diese zu erstellen, um zu überprüfen, ob dies tatsächlich Ihr Problem ist:

echo -n ThisIsaBadPassword > .pass.txt

( UPDATE : Enthaltenes '-n')

sysadmin1138
quelle
1
Ich habe es gerade versucht, aber ich bekomme genau den gleichen Fehler ...
Paolo Tedesco
2
Nein, das wird es nicht. Sie brauchen echo -noder printfum den Zeilenumbruch zu vermeiden.
Grawity
Das Echo-n hat es geschafft! Vielen Dank für Ihre Hilfe.
Paolo Tedesco
Nach dem Kommentar von grawity funktioniert echo -n perfekt, zB: echo -n "secretpassword"> /etc/ldapscripts/ldapscripts.passwd
Ned W.
Ärgerliches Problem dadurch gelöst, danke. Ich habe nur seddas Ende einer vorhandenen Datei entfernt.
Wirefox
1

Angenommen, es handelt sich um die Neu- / Wagenrückführung, versuchen Sie Folgendes:

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

Verwenden Sie dann die .pass2.txt-Datei. Sie können immer mit nach neuen Zeilen und Zeilenumbrüchen suchen cat -vEund diese werden als $ bzw. ^ M angezeigt.

Sie könnten dies wahrscheinlich auch -y <(cat .pass.txt | tr -d '\n\r')direkt im Befehl ldapsearch tun .

Kyle Brandt
quelle
0

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

Möglicherweise müssen Sie 600 pass.txt chmod

hfranco
quelle
-2

Es ist nicht erforderlich, das Kennwort in eine tatsächliche Datei zu kopieren. Geben Sie es einfach mit dem Flag -n zurück, um die neue Zeile zu verhindern, und lesen Sie es dann wie folgt aus dem STDIN-Dateideskriptor (/ dev / fd / 0) ein:

echo -n 'mypassword' | ldapsearch -x -D <my dn> -y /dev/fd/0 -h server.x.x -b "dc=x,dc=y" "cn=*"
Brian Showalter
quelle
Das Problem bei diesem Ansatz ist, dass Sie dem Shell-Verlauf und der PS unterliegen, um Ihr Kennwort zu ermitteln.
cgseller
1
Punkt genommen. Es ist jetzt Mitte 2018. Ich habe aus meinen Fehlern gelernt. Nimm mein Geschwätz von 2014 nicht ernst. Vielen Dank. :)
Brian Showalter