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.