Jak mam przekazać hasło, aby ldapsearch
skorzystać 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.txt
zawiera 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 -W
opcją i wpiszę hasło w wierszu polecenia, polecenie uruchomi się pomyślnie, ale chciałbym jakoś zapisać hasło, aby utworzyć skrypt.
Odpowiedzi:
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:
( AKTUALIZACJA : Uwzględniono „-n”)
źródło
echo -n
lubprintf
w celu uniknięcia nowej linii.sed
Jednak po prostu zwykłem usuwać koniec istniejącego pliku.Zakładając, że jest to ponowne wprowadzanie nowego wiersza / karetki, spróbuj wykonać następujące czynności:
Następnie użyj pliku .pass2.txt. Zawsze możesz sprawdzić nowe linie i zwroty karetki za pomocą,
cat -vE
a 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.źródło
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
źródło
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:
źródło