Windows - Keresés az Active Directory-ban parancssorból

4. rész

Befejező részéhez érkezett a .NET kiszolgálók címtárában történő konfigurálási lehetőségeket bemutató sorozatunk. Ebben a részben nem is annyira a konfigurálásról, mint inkább listák készítéséről lesz szó. Konkrét példákon keresztül bemutatjuk, hogy lehet különböző feltételek szerint lekérni a felhasználókról, számítógépekről, csoportokról és kapcsolattartókról listákat.
Cikkünk készítésének idején a Windows .NET Server család operációs rendszerei Béta3 állapotban voltak, ezért a végleges verzióban lehetnek a leírtakhoz képest eltérések.
Hetilapunkban már több módszert bemutattunk az Active Directory objektumainak elérésére. Szkriptekkel, segédprogramokkal és különböző parancssori megvalósításokkal készítettünk lekérdezéseket, kereséseket. A .NET kiszolgálókban található parancssori alkalmazások segítségével több eszközt is kapunk a kezünkbe. Mindegyik a saját hatókörének megfelelő funkciókat tudja végrehajtani. Nézzük melyek ezek:
Felhasználói fiókok lekérdezése
Listázzuk ki a "Microsoft.com" tartomány "Users" tárolójában található összes felhasználói fiókot a képernyőre. Az alkalmazandó parancs neve: "dsquery user". Akik figyelemmel kísérték cikksorozatunkat, már talán sejtik, hogy LDAP protokollt használó parancsról van szó és ennek megfelelően kell az objektumok szintaxisát megadni.
dsquery user CN=Users,DC=Microsoft,DC=com
A kapott lista a képernyőn jelenik meg. Ha az eredmény sok sorból áll, akkor ez nem biztos, hogy a legszerencsésebb megoldás. Ezért irányítsuk át a kimenetet egy "Users.txt" nevű szövegfájlba, amit később szövegszerkesztővel vagy táblázatkezelővel is feldolgozhatunk.
dsquery user CN=Users,DC=Microsoft,DC=com > Users.txt
A megjelenítésnél maradva későbbi feldolgozás szempontjából előnyös, hogy meg lehet változtatni a kimeneti formátumot. Ehhez a "-o" kapcsolót kell alkalmazni, utána a "dn", "rdn" "upn" "samid" másodkapcsolókat megadva. Ahol
  • "dn" = Distinguished Name
  • "rdn" = Relative Distinguished Name
  • "upn" = User Principal Name
  • "samid" = SAM Account Name
Ha még így is túl sok rekordból áll a kapott lista, akkor maximalizáljuk a sorok számát 50-ben.
dsquery user DC=Users,DC=Microsoft,DC=com -limit 50
Alapértelmezésben 100 sor jelenik meg.
Az sem mindegy, hogy a keresés hol zajlik. Bonyolult szervezeti egység hierarchia mellett, ahol mindegyik tárolóban több felhasználói fiók is található szabályozni kell a keresés hatókörét. A "-scope" kapcsoló hivatott ezt elvégezni, meghatározva a hatókört:
  • "subtree" = Kiindulási ponttól lefelé az összes tárolóban keres.
  • "onelevel" = Közvetlenül a kiindulási pont alatti tárolóban keres.
  • "base" = Csak a kiindulási pontban meghatározott tárolóban keres.
Például az "Informatika" szervezeti egységben és a farendszer ez alatti összes többi szervezeti egységében és egyéb tárolójában keressük meg és írassuk ki az összes felhasználói fiókot.
dsquery user OU=Informatika,DC=Microsoft,DC=com -scope subtree
Eddig minden alkalommal az összes fiókról volt szó és egyszer sem adtunk meg konkrét keresési feltételeket. Pótoljuk és listázzuk ki az összes "gu"-val kezdődő nevű felhasználót.
dsquery user DC=Users,DC=Microsoft,DC=com -name "gu*"
Látható a "*" helyettesítési karakter használható a feltétel megadásánál.
Keressünk a megjegyzés (description) mezőben is. Például az összes "Informatikai osztály" kezdetű megjegyzéssel ellátott felhasználó eléréséhez a következő parancsot kell kiadni.
dsquery user DC=Users,DC=Microsoft,DC=com -desc "Informatikai osztály*"
A letiltott fiókok pedig így jeleníthetők meg.
dsquery user DC=Users,DC=Microsoft,DC=com -disabled
A felhasználói jelszavak folyamatos cserélődése növeli a hálózat biztonságát. A "dsquery user" parancs lehetőséget nyújt a cserék ellenőrzésére. Például megjeleníti azokat a felhasználókat, akik nem változtatták meg a jelszavukat az elmúlt 3 hétben.
dsquery user DC=Users,DC=Microsoft,DC=com -stalepwd 3
Az időszakot mindig a megadott számú hétre kell érteni.
Ehhez hasonlóan azok is kilistázhatók, akik az elmúlt X hétben nem jelentkeztek be a címtárba.
dsquery user DC=Users,DC=Microsoft,DC=com -inactive 1
Példánkban az elmúlt egy héten be nem jelentkezett felhasználókat jelenítjük meg.
Minden fenti művelet a parancsot futtató felhasználó jogosultságaival működik. Ha ez nem nyújt megfelelő jogkört, de birtokában vagyunk egy másiknak, akkor a "-u" kapcsoló után megadható a felhasználói név és a "-p" után pedig a jelszó. Figyelem! Batch fájlban vagy szkriptekben alkalmazva a parancsot vigyázzunk, mert a jelszó titkosítás nélkül tárolódik. Például:
dsquery user DC=Users,DC=Microsoft,DC=com -u administrator -p 123456
Egyéb objektumok lekérdezése
Nem csak felhasználói fiókot, hanem más Active Directory objektumokat is kereshetünk a fenti szintaxis alkalmazásával. A változás csak annyi, hogy a "dsquery user" helyett csoportokban történő keresés helyett a "dsquery group", számítógépek között történő keresésnél a "dsquery computer" és kapcsolattartók közötti kereséshez a "dsquery contact" parancsot kell használni. Utóbbi esetben tekintve, hogy nem biztonsági objektumról van szó (nem kaphat jogokat az erőforrások eléréséhez) néhány kapcsoló nem használható.

Active Directory felhasználók cikksorozat