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.htm