Format pliku hasła ldapsearch


18

Jak mam przekazać hasło, aby ldapsearchskorzystać z -y <password file>opcji?
Jeśli zapiszę hasło w pliku hasła zwykłym tekstem, pojawia się następujący błąd:

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

To samo dzieje się, jeśli użyję -w <password>opcji.

EDYCJA :
Polecenie, które uruchamiam, to

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

Gdzie plik .pass.txtzawiera moje hasło, w postaci zwykłego tekstu. Zarówno nazwa wyróżniająca, jak i hasło są poprawne. Jeśli uruchomię polecenie z -Wopcją i wpiszę hasło w wierszu polecenia, polecenie uruchomi się pomyślnie, ale chciałbym jakoś zapisać hasło, aby utworzyć skrypt.


Jakiego rodzaju „pliku haseł” używasz? Możesz pokazać nam pełne wpisywane polecenie. Czy używasz poprawnych danych logowania?
solefald

Odpowiedzi:


22

Pamiętaj, że ldapsearch użyje całej zawartości pliku jako hasła - co oznacza, że ​​BĘDZIE on zawierał znak kończący znak nowej linii, jeśli taki istnieje. Aby sprawdzić, czy to w rzeczywistości problem, spróbuj utworzyć plik bez niego:

echo -n ThisIsaBadPassword > .pass.txt

( AKTUALIZACJA : Uwzględniono „-n”)


1
Właśnie próbowałem, ale dostaję dokładnie ten sam błąd ...
Paolo Tedesco

2
Nie zrobi tego. Potrzebujesz echo -nlub printfw celu uniknięcia nowej linii.
user1686

Echo -n załatwiło sprawę! Dziękuję wszystkim za pomoc.
Paolo Tedesco

W nawiązaniu do komentarza grawity echo -n działa idealnie, np .: echo -n "secretpassword"> /etc/ldapscripts/ldapscripts.passwd
Ned W.

Dzięki temu irytujący problem rozwiązany. sedJednak po prostu zwykłem usuwać koniec istniejącego pliku.
wirefox

1

Zakładając, że jest to ponowne wprowadzanie nowego wiersza / karetki, spróbuj wykonać następujące czynności:

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

Następnie użyj pliku .pass2.txt. Zawsze możesz sprawdzić nowe linie i zwroty karetki za pomocą, cat -vEa będą one wyświetlane odpowiednio jako $ i ^ M.

Prawdopodobnie możesz to zrobić -y <(cat .pass.txt | tr -d '\n\r')bezpośrednio w poleceniu ldapsearch.


0

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

Może być konieczne chmod 600 pass.txt


-2

Nie ma potrzeby zrzucania hasła do rzeczywistego pliku. Po prostu wywołaj echo flagą -n, aby zapobiec nowej linii, a następnie wczytaj ją z deskryptora pliku STDIN (/ dev / fd / 0) w następujący sposób:

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

Problem z tym podejściem polega na tym, że odkrywasz hasło w historii powłoki i PS.
cgseller

1
Punkt wzięty. Teraz jest połowa 2018 roku. Nauczyłem się na własnych błędach. Nie bierz poważnie mojego blaterowania w 2014 roku. Dziękuję Ci. :)
Brian Showalter
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.