Można lubieć AD, można go nie lubieć… Ale jak już się ma to warto czasem zintegrować go z tym… i tamtym… Od strony Linuksa najwygodniej można to osiągnąć przez LDAP. A żeby to dobrze zrobić trzeba najpierw przetestować czy aby wszystko działa jak byśmy sobie tego życzyli. I tutaj bardzo przydatne jest narzędzie ldapsearch.

Do odpytywania LDAP’a potrzebujemy jeden pakiecik, który zawiera kilka narzędzi do jego obsługi:

apt-get install ldap-utils

Teraz możemy próbować przeszukiwać katalog np. tak:

ldapsearch -L -x -b "DC=nazwadomeny,DC=local" -D "CN=jakies_konto_w_ad,OU=System Accounts,DC=nazwadomeny,DC=local" -h kontroler.nazwadomeny.local -p 389 -W

Polecenie to odpyta kontroler o adresie kontroler.nazwadomeny.local (oczywiście możemy użyć też adresu IP) o wszystkie elementy w domenie. Port 389 na kontrolerze domeny musi być otwarty na zaporze - można też wykorzystać 3268 (o ile jest otwarty).

Parametr -b określa początkową gałąź wyszukiwania - możemy tu dodać konkretne OU itd.. by zmniejszyć liczbę elementów.

-D to użytkownik na którego się logujemy by uzyskać dostęp do katalogu.

-W zapyta nas o hasło dla tego użytkownika.

Oczywiście możemy nie potrzebować wszystkich obiektów z katalogu a tylko np. loginy kont użytkowników (ale już nie kont maszyn) - do tego celu możemy użyć filtrów, np. tak:

ldapsearch -x -b "DC=nazwadomeny,DC=local" -D "CN=jakies_konto_w_ad,OU=System Accounts,DC=nazwadomeny,DC=local" -h kontroler.nazwadomeny.local -p 3268 -w 'haslo czystym tekstem' '(&(objectClass=person)(!(objectClass=computer)))' sAMAccountName

No i dostajemy listę loginów żywych użytkowników. Użycie opcji -w może wydawać się nieco kontrowersyjne ale z drugiej strony jest bardzo wygodne gdy chcemy dane wyjściowe wykorzystać w skrypcie. Przykładowo możemy wynik tego polecenie puścić przez awk by otrzymać same loginy i dodatkowo wszystkie małymi/dużymi literami:

poprzednie_polecenie | awk '/sAMAccountName/ {print tolower($2);}'

W podobny sposób możemy wyciągnąć wszystkie emaile osób z pewnej grupy itd, itp….

Tutaj można znaleźć podstawowe info o regułach tworzenia filtrów: http://www.ldapexplorer.com/en/manual/109010000-ldap-filter-syntax.htmexternal link