Month: September 2006

A velünk élő történelem

Szükség van WINS szolgáltatásra az Exchange 2000/2003 működéséhez?
Igen.
Fog ezen változtatni az Exchange 2007?
Igen.
Szükség lesz WINS szolgáltatásra az Exchange2007 működéséhez?
Igen.

Azért ez már valami. Mit tudhat ez a masztodon, hogy ennyi évvel kitalálása után is még ilyen szívósan tartja magát?
Nos, azt tudja, hogy ismeri az emberi természetet. Tudja, hogy lusták vagyunk. Ha nem is mindannyian, de valaki valahol biztos lusta lesz begépelni azt, hogy ‘envagyok.a.falurossza.egyedul’, inkább megpróbálkozik az ‘envagyok’ címmel.
Emellett azt is tudja, hogy egy ekkora kódtömegben biztosan lesz valahol olyan eljárás, mely rövid név alapján fog keresni.
Ennyi már elég is a túléléshez.

Nézzük meg, milyen viszonyban is voltak egymással: WINS és Exchange 2000/2003 rendszerek.
A link szekcióban található egy KB cikk, abban bizony feketén-fehéren ott áll, hogy Exchange rendszerekben igen-igen erősen ajánlott WINS névfeloldás használata.
Miért is?
Például azért, mert

  • Az Exchange2003 kódjában több helyen is előfordul rövid név alapú DNS névfeloldási próbálkozás. Természetesen, ha jól vannak konfigurálva a DNS kliensek, akkor ez nem jelent gondot. De általában nem mindenki DHCP-s, különösen a szerverek nem – márpedig ha nincs jól beállítva a DNS suffix az Exchange szerveren, akkor bizony problémák lesznek.
  • Ennél sokkal csúnyább, hogy a kódban bizonyos helyeken – pl. setup – olyan esetek is előfordulnak, hogy szó sincs DNS névfeloldásról, a rutin egyből Netbios API-t használ névfeloldásra.
  • Végül a legszebb. Tudjuk, az Exchange az egyes szerverek konfigurációs adatait a címtár konfigurációs névterében tárolja. Ezt úgy kell elképzelni, mintha minden szervernek lenne egy foldere, amely alatt gyülekeznének az adatai. Mi is a folder neve? Bizony, az Exchange szerver gép Netbios, azaz rövid neve.
    Értelemszerűen következik, hogy óvakodni kell attól, hogy ne legyen két azonos Netbios nevű Exchange szerver az organizációban – hiszen akkor bizarr módon keverednének össze a konfigurációs beállításaik.
    Hogyan tudnám ezt garantálni? Azt tudjuk, hogy a konfigurációs névtér erdő szintű. Ebben az erdőben elméletileg számtalan site, számtalan subnet található, tetszőleges mennyiségű Exchange szerverrel. Viszont ha nem használok WINS-t, akkor az egyediség csak Netbios broadcast segítségével ellenőrizhető. Meddig terjed a Netbios broadcast határa? Amíg egy router azt nem mondja, hogy coki, eddig és ne tovább. Ergo kell az a fránya WINS, mert az egyből kiszűri, hogyha már létező Netbios nevet akarok még egyszer kiadni, abban a körben, ahol össze vannak löve a WINS szerverek.

Ezzel az első ‘igen’-t ki is tárgyaltuk.

Nézzük, milyen változások várhatóak az Exchange2007-ben. Jó hír, hogy a problémák kétharmad részét megszüntették. A kódból kivették mind a közvetlen Netbios API hívásokat, mind a rövid név alapján történő DNS névfeloldási kérelmeket.
De a harmadik esettel nem tudtak mit kezdeni. Ha kompatibilisek akartak maradni a korábbi Exchange2000/2003 rendszerekkel, akkor meg kellett hagyni a konfigurációs névtér Exchange alterének szervezeti felépítését. Innentől viszont szükség volt a rövid nevek egyediségére, organizáció szinten. Pont.
Ergo, igen, dolgoztak a problémán, nagy részét eliminálták. Ez volt a második ‘igen’.

A harmadik ‘igen’-t már gondolom, nem kell részleteznem. Ha bízom magamban és biztos vagyok benne, hogy nem adok azonos Netbios neveket az Exchange szervereimnek – sem én, sem a worldwide cég 235 másik adminisztrátora -, akkor szemétre a WINS szerverrel.
De ha megpróbálok racionálisan gondolkozni – néha érdemes, megéri -, akkor mondhatom azt, hogy a WINS szerver alkalmazás alig kér enni, békésen megfér bármelyik tartományvezérlőn: miért ne hagynám meg? Különösen, ha nem csak azt garantálja, hogy nem lesz két azonos nevű Exchange szerverem, hanem azt is, hogy egyáltalán nem lesz két azonos rövid nevű gépem az erdőben.

Link szekció:

  1. Windows 2000 Server Windows Internet Naming Service (WINS) Overview
  2. Windows Server 2003 Windows Internet Name Service (WINS)
  3. DNS, DHCP, WINS – WINS
  4. Exchange Server 2003 and Exchange 2000 Server require NetBIOS name resolution for full functionality
  5. David Lemson írása a blogjában

AD gyötrések II.

Nem bírunk nyugton ülni a fenekünkön, még mindig felhasználói adatokat akarunk módosítani az Active Directoryban. Csakhogy mostanra begörcsölt a jobb csuklónk, így szomorúan lökjük félre az egeret. Innentől csak a billentyűzetre fogunk támaszkodni.
Lássuk a parancssoros AD editáló segédprogramokat.

5. DS parancsok
A Windows szerverek esetén maga az operációs rendszer is tartalmaz egy csomó címtárpiszkálgatásra alkalmas segédprogramot. Ilyenek például a Windows2003 szerverben megtalálható DS* kezdetű parancsok.

  • DSAdd
    Segítségével különböző típusú objektumokat (computer, contact, group, ou, user, quota) adhatunk a címtárhoz.
    Részletes ismertetése megtalálható itt.

    Példa:
    Új felhasználó hozzáadása a címtárhoz:
    dsadd user „cn=Vaszilij Kubaszov, cn=users, dc=test, dc=net”

  • DSGet
    Segítségével különböző típusú objektumok (computer, contact, group, ou, user, quota, server, subnet, site, partition) egyes tulajdonságait tudjuk lekérdezni.
    Részletes ismertetése megtalálható itt.
    Elég sűrűn szokták a DSQuery parancs kiegészítéseként használni. (Lásd később.)

    Példa:
    Egy felhasználó csoporttagságainak kilistázása, beleértve az egymásbaágyazott csoportokat is:
    dsget user „CN=Magyari Béla,CN=Users,DC=test,DC=net” -memberof -expand

  • DSMod
    Segítségével különböző típusú objektumok (computer, contact, group, ou, server, user, quota, partition) egyes tulajdonságait tudjuk módosítani.
    Részletes ismertetése megtalálható itt.

    Példa:
    Felhasználó jelszavának megváltoztatása, belépéskor jelszóváltás kikényszerítése.
    dsmod user „CN=Farkas Bertalan,CN=Users,DC=test,DC=net” -pwd ujjelszo -mustchpwd yes

  • DSMove
    Egy objektum átmozgatására, illetve átnevezésére szolgál.
    Részletes ismertetése megtalálható itt.

    Példa:
    Felhasználó átrakása egy másik OU-ba.
    dsmove „CN=Valerij Kubaszov,CN=Users,DC=test,DC=net” -newparent OU=CCCP,CN=Users,DC=test,DC=net

  • DSQuery
    A megadott feltételek segítségével lekérdezi a címtárat. Lehet szűkíteni egyes objektumokra (computer, contact, group, ou, site, server, user, quota, partition), de lehet szűkítés nélkül (dsquery *) is használni.
    Részletes ismertetése megtalálható itt.

    Példa:
    Lekérjük az összes olyan felhasználót, akinek az előneve a ‘Farkas’ szóval kezdődik, plusz lekérdezzük hozzá a felhasználó néhány adatát (dn, description) is.
    dsquery user -name Farkas* | dsget user -dn -desc

  • DSRm
    Objektum törlése a címtárból.
    Részletes ismertetése megtalálható itt.

    Példa:
    Egy OU és összes elemének törlése.
    dsrm -subtree -noprompt -c OU=CCCP,CN=Users,DC=test,DC=net

Link szekció:

6. ADFind, ADMod

Joe Richards mindig reszelget valamit a műhelyében. Joe – aki egyébként Directory MVP – nem csak a neve miatt szimpatikus, hanem azért is, mert a segédprogramjait ingyen bocsátja a nagyérdemű részére. Mindegyik program kizárólag csak parancssori verzióban létezik. Joe szemmel láthatóan nem kedveli a GUI-kat.

A sok közül kettőt emelnék most ki. Ennek a kettőnek története van. Korábban Joe elég sokat macerálta az Active Directoryt, hol ldapsearch-csel, hol egy bizonyos search.vbs szkripttel, illetve ha ezekkel megakadt, akkor nekiállt saját visual basic szkripteket írni. Tudjuk, hogy vbsciptben nem lehet minden AD műveletet végrehajtani, vannak olyan értékek, főleg a binárisok, melyek elég nehezen adják meg magukat. Aztán amikor már teljesen elege lett ebből a kínlódásból, Joe megírta az ADFind segédprogramot. C++-ban.
Nem sokkal később a Microsoft is kijött a DS* családdal, de Joe állítja, hogy az ő programjai sokkal flexibilisek, léteznek hozzá add-on-ok (pl. egy perl szkript, mely a végeredményt csv formátumba konvertálja) – és nem utolsó sorban, működnek Windows 2000 szervereken is.

  • ADFind
    Ez egy query segédprogram, az AD-n belül hajt végre megadott lekérdezéseket. Ahogy Joe fogalmazott: ez egyfajta speciális keveréke az ldapsearch, search.vbs, ldp, dsquery, dsget programoknak, egyéb dögös opciókkal feltupírozva.
    A program részletes leírása itt található, maga a program is innen tölthető le.

    Példák:
    Egy felhasználó objektum összes értékkel bíró tulajdonságának és azok értékeinek kilistázása, úgy, hogy az idő jellegű adatok emberi módon jelennek meg:
    adfind -b dc=test,dc=net -f name=”Farkas Bertalan” -tdc

    Kitiltott felhasználók kilistázása az egész AD erdőből:
    adfind -gc -b -bit -f „&(objectcategory=person)(samaccountname=*)(useraccountcontrol:AND:=2)” -dn

    Séma dump:
    adfind -sc sdump

  • ADMod
    Ez a program már egyértelműen a DS* programok megjelenése után íródott. Joe-nak ugyanis azokból is elege lett: a dsmod, dsmove, dsrm programok nem igazán akartak úgy működni, ahogy ő szerette volna, pontosabban nem igazán akartak úgy működni, ahogy az expert adminok szerették volna – ezért írt egy olyan segédprogramot, mely az ő ízlése szerint viselkedik. Elméletileg ugyanazokat a dolgokat tudja, mint a fenti hármas, csak máshogy – kiegészítve azzal, hogy van benne undelete funkció, igaz ez csak Windows 2003 szerveren működik. (Az összes többi funkció elérhető Windows 2000 szervereken is.)
    A program részletes leírása itt található, maga a program is innen tölthető le.

    Példák:
    Egy felhasználói tulajdonság értékének módosítása:
    admod -b „CN=Valerij Kubaszov,OU=CCCP,CN=User,DC=test,DC=net” „ipPhone::bal3″

    Felhasználó létrehozása:
    admod -b ou=CCCP,cn=users,dc=test,dc=net objectclass::user samaccountname::leonyidb -add

    Módosítja az összes beépített adminisztrátor leírás mezőjének az értékét. (Nagyon szép összecsövezése az adfind és admod programoknak.)
    adfind -gc -b -f „&(objectcategory=person)(objectclass=user)(name=administrator)” -dsq |admod „description::Rendszergarázda”

Link szekció:

7. Ldifde, csvde
A Windows szerverekben megtalálható másik kupac címtárkezelő parancs a *DE végű parancsokból áll. (DE: Directory Export) Ezek a programok azon filozófia mentén működnek, hogy képesek fájlba exportálni a címtár részeit, illetve képesek fájlból adatokat importálni a címtárba. (A DS* parancsoktól eltérően mindkettő létezik már Windows2000 szerveren is.)
A csvde inkább nagytömegű módosításokra alkalmas, az ldifde viszont a fifikásabb változtatások lezongorázására.

  • CSVDE Mint a nevéből is kikövetkeztethető, az átmeneti tárolóként használt fájl jelen esetben csv típusú – azaz akár szövegszerkesztőből, akár Excelből remekül szerkeszthető.
    Tipikus menet, hogy a címtár egy részét kiexportáljuk, akármilyen módszerrel módosítjuk a csv fájlt, majd a fájlt tartalmát visszaimportáljuk. Szintén tipikus, hogy ez elsőre nem szokott sikerülni. A full export során ugyanis a bináris értékek (SID, GUID és egyéb blobok) is kikerülnek a fájlokba, ezeket viszont nem lehet importálni. Persze a világ nem dől össze, exportálás során egyszerűen meg kell adni a -m -n kapcsolókat és ekkor binárisék békén maradnak.
    A parancs részletes leírása itt található.
  • LDIFDE
    Ennek a nevéből már közvetlenül nem következik a fájl típusa. Márcsak azért sem, mivel ez egy kevert fájlból dolgozik. Kevert, mert a fájlban – szabvány szerinti szintaxisban (LDIF) – egyaránt megtalálhatók az adatok és a parancsok is. Értelemszerűen használatához ismerni kell ezt a szintaxist – és emellett magát az LDAP protokollt is. Nem egyszerű, de megéri elmélyedni benne. Aki Active Directory hegesztésekkel foglalkozik, annak meg úgyis kötelező, mivel a szintaxis elemei vissza-visszaköszönnek a mindennapi munka területein. (Az LDIF egyáltalán nem mellesleg az AD replikáció nyelve.)
    Apró nehezítés, hogy magának a parancsnak is van néhány kapcsolója. A részletes leírást itt találhatjuk. Röviden az LDIF fájl felépítéséről:

    dn: ldap útvonal
    changetype: parancs
    adatok
    >üres sor<
    dn: ldap útvonal
    changetype: parancs
    adatok
    >üres sor<
    … stb …

    A changetype után a következő parancsok állhatnak: add, delete, modify [, modrdn, moddn]. (A kapcsos zárójelben szereplő parancsok – rdn/dn módosítása – részei az LDIF RFC-nek, de tudtommal a Windows LDIFDE nem ismeri ezeket. Kipróbálni még nem próbáltam.)
    Amennyiben az adatok több adatblokkot is tartalmaznak, a blokkokat a ‘-’ karakterrel választjuk el.

    Példák.
    A szöveges fájl beimportálása mindegyik esetben így fog kinézni: ldifde -i -f puffer.txt

    OU létrehozása
    puffer.txt tartalma:
    dn: ou=CCCP,cn=Users,DC=test,DC=net
    changetype: add
    objectclass: organizationalUnit
    ou: CCCP

    Adminisztrátor leírás mezőjének módosítása
    puffer.txt tartalma:
    dn: cn=Administrator,cn=Users,DC=test,DC=net
    changetype: modify
    replace: description
    description: Rendszergarázda

    Ámokfutás – módosítjuk egy felhasználó leírás mezőjét, értéket adunk az IP telefon tulajdonságának és töröljük a munkahelyi azonosítóját.
    puffer.txt tartalma:
    dn: cn=Valerij Kubaszov,ou=CCCP,cn=Users,DC=test,DC=net
    changetype: modify
    replace: description
    description: Beépített ember

    add: ipPhone
    ipPhone: bal3

    delete: employeeID

Link szekció:

8. Excel

Végére hagytam a kedvencemet. Én gyakorlatilag csak ezt használom a tömeges AD módosítások lezongorázására.
Nem, nem zakkantam meg. Legalábbis nem teljesen.
Tudjuk, hogy az Active Directory-t ADSI-n keresztül különböző módokon érhetjük el: .net/vbs/jscript… és egyebek. Az Excel makrók pedig akárhogy is nézzük, teljesen szabályos vbscript-ből állnak, kiegészítve Excel specifikus parancsokkal, változókkal.
Ideális.
Eleinte mondjuk kicsit macerás, de ahogy elkészülnek a tipikus részfeladatok építőkövei, onnan már csak sima falazás az egész. (Építőkockákat a netről is letölthetünk, sőt…)
Első pillantásra jogos lehet a kérdés, hogy miben különbözik ez a módszer a CSVDE használatától. Mindkettőben ki lehet exportálni bizonyos tulajdonságokat egy Excel kompatibilis táblázatba, lehet kézzel módosítani, majd vissza lehet tölteni azokat a címtárba.
A nagy különbség az on-fly vbscript használati lehetőség. Ha valaki látta már, hogyan néz CSVDE esetében a proxaddresses multivalue változó, akkor sejtheti, hogy miről beszélek. Ember legyen a talpán, aki ezt – akár Excelben is – könnyedén szerkesztgeti. Ellenben a makró futása során már a szépen szétválogatott címek kerülnek ki táblázat mezőibe. Ha nem is egyszerűen, de lehetőségünk van lekezelni a bináris mezőket.
Ugyanez a röptében feldolgozás teszi lehetővé, hogy bizonyos feltételektől függően formázhassam a kiírást (szöveg kövérítés, szöveg/háttérszín változtatás), kontrollértékek kiírásával nyomon követhessem a folyamatot. Nem elhanyagolható például, hogy egyszerre több worksheet-et tudok kezelni (mondjuk egyikben tárolva a folyamatban érintett OU-k nevét; így csak azok az OU-k kerülnek feldolgozásra, amelyekkel foglalkozni akarok) – és természetesen rendelkezésre állnak az Excel függvényei a különböző feldolgozásokhoz.

A nagy ujjongásban meg kell említenem a módszer legnagyobb hátrányát is: csak akkor működik, ha van a közelben Excel. Ez a szerverszobákban, a szervereken nem igazán szokott lenni. Akkor értelemszerűen marad a többi megoldás – de ha kényelmesen, usermódban is ráérünk megoldani egy feladatot, akkor a munkaállomásunkról már simán használhatjuk az Excel makrókat.

Végül két építőkocka:

Felhasználó információk legyűjtése:

Sub Macro1()
Attribute Macro1.VB_Description = „Macro recorded 2006.09.03 by JoeP”
Attribute Macro1.VB_ProcData.VB_Invoke_Func = „a\n14″

‘ Macro1 Macro
‘ Macro recorded 2006.09.03 by JoeP

‘ Keyboard Shortcut: Ctrl+a

‘ Adatok lekérdezése a címtárból

‘——————————————————————–
‘ Deklarációk

Dim oActUsers
Dim child, sor
‘——————————————–
‘ Inicializálás

On Error Resume Next

Worksheets(”Munka”).Activate
Cells.Select
Selection.Clear
Range(”A1″).Select

Cells(1, 1).Value = „Username”
Cells(1, 2).Value = „Employee ID”
Cells(1, 3).Value = „Display name”
Cells(1, 4).Value = „Description”
Cells(1, 5).Value = „Phone”
Cells(1, 6).Value = „Mobile”
Cells(1, 7).Value = „Office”
Cells(1, 8).Value = „Title”
Cells(1, 9).Value = „Department”
Cells(1, 10).Value = „Object”
sor = 3
‘——————————————–
‘ Bind

Set oActUsers = GetObject(”LDAP://cn=users, dc=test, dc=net”)
oActUsers.Filter = Array(”user”)
‘——————————————-
‘ Legyüjtés indul

For Each child In oActUsers
Cells(sor, 1).Value = child.samaccountname
Cells(sor, 2).Value = child.employeeid
Cells(sor, 3).Value = child.displayname
Cells(sor, 4).Value = child.Description
Cells(sor, 5).Value = child.telephonenumber
Cells(sor, 6).Value = child.mobile
Cells(sor, 7).Value = child.physicaldeliveryofficename
Cells(sor, 8).Value = child.Title
Cells(sor, 9).Value = child.department
Cells(sor, 10).Value = child.distinguishedname
sor = sor + 1
Next
‘———————————–
‘ Dekoráció
‘ Itt lehet cifrázni a táblázatot

Range(”C1″).Select

End Sub

——————————————————————————

Módosított információk visszaírása:

Sub Macro2()
Attribute Macro2.VB_Description = „Macro recorded 2006.09.03 by JoeP”
Attribute Macro2.VB_ProcData.VB_Invoke_Func = „b\n14″

‘ Macro2 Macro
‘ Macro recorded 2006.09.03 by JoeP

‘ Keyboard Shortcut: Ctrl+b

‘ Adatok visszaírása a címtárba

Dim sor, eszterlanc, oActUser

On Error Resume Next

sor = 3

Do While Cells(sor, 1).Value <> „”
eszterlanc = „LDAP://” & Trim(Cells(sor, 10).Value)
Set oActUser = GetObject(eszterlanc)

If Not IsEmpty(Cells(sor, 2).Value) Then
oActUser.putex 2, „employeeid”, Array(Trim(CStr(Cells(sor, 2).Value)))
Else
oActUser.putex 1, „employeeid”, „”
End If
oActUser.setinfo
Err.Clear

If Not IsEmpty(Cells(sor, 3).Value) Then
oActUser.putex 2, „displayname”, Array(Trim(CStr(Cells(sor, 3).Value)))
Else
oActUser.putex 1, „displayname”, „”
End If
oActUser.setinfo
Err.Clear

If Not IsEmpty(Cells(sor, 4).Value) Then
oActUser.putex 2, „description”, Array(Trim(CStr(Cells(sor, 4).Value)))
Else
oActUser.putex 1, „description”, „”
End If
oActUser.setinfo
Err.Clear

If Not IsEmpty(Cells(sor, 5).Value) Then
oActUser.putex 2, „telephonenumber”, Array(Trim(CStr(Cells(sor, 5).Value)))
Else
oActUser.putex 1, „telephonenumber”, „”
End If
oActUser.setinfo
Err.Clear

If Not IsEmpty(Cells(sor, 6).Value) Then
oActUser.putex 2, „mobile”, Array(Trim(CStr(Cells(sor, 6).Value)))
Else
oActUser.putex 1, „mobile”, „”
End If
oActUser.setinfo
Err.Clear

If Not IsEmpty(Cells(sor, 7).Value) Then
oActUser.putex 2, „physicaldeliveryofficename”, Array(Trim(CStr(Cells(sor, 7).Value)))
Else
oActUser.putex 1, „physicaldeliveryofficename”, „”
End If
oActUser.setinfo
Err.Clear

If Not IsEmpty(Cells(sor, 8).Value) Then
oActUser.putex 2, „title”, Array(Trim(CStr(Cells(sor, 8).Value)))
Else
oActUser.putex 1, „title”, „”
End If
oActUser.setinfo
Err.Clear

Set oActUser = GetObject(eszterlanc)
If Not IsEmpty(Cells(sor, 9).Value) Then
oActUser.putex 2, „department”, Array(Trim(CStr(Cells(sor, 9).Value)))
Else
oActUser.putex 2, „department”, „n/a”
End If
oActUser.setinfo
Err.Clear

sor = sor + 1
Loop

End Sub

AD gyötrések I.

Módosítani kellene felhasználói adatokat az Active Directoryban. Ez még nem nagy ügy, előkapjuk az Active Directory Users & Computers snap-int és átírjuk, amit akarunk.
Csakhogy ez nem mindig elegendő. Illetve, van, amikor elegendő, de kényelmetlen. Azután van, amikor elegendő ugyan, de nem szeretnénk annyit dolgozni.
Szerencsére rengeteg segédprogram létezik erre a feladatra. Jelen cikkben a grafikus felülettel rendelkezők kerülnek bemutatásra, a következőben pedig a parancssorosak lépnek porondra.

1. ADModify.net

Nagyon hasznos kis program. Valamikor az Exchange csapat írta saját használatára, de annyira jó lett, hogy felturbózták és most általános címtármódosító program lett belőle. Egyik előnye, hogy nagy tételben (bulk) lehet segítségével a címtár adatait módosítani. A másik, hogy bármely adat értékét módosíthatjuk vele – feltéve, hogy megvannak hozzá a jogosultságaink.

Már rögtön az induló képernyőn felvillant valamit az erejéből:

Nagyítás

  • 1.1 Modify AttributesItt léphetünk be az adatmódosító menübe. Persze nem egyből, először ki kell jelölnünk a módosítandó adatok körét. Ez lehet egy felhasználó, több felhasználó (lsd a képen), illetve extrém esetben a konfigurációs névtér egy eleme. Amikor több felhasználóról van szó, kijelölhetjük őket egyesével, de használhatunk saját magunk által összerakott LDAP lekérdezést is.

    Nagyítás

    A lényeg, hogy a jobb oldali oszlopban legyen valamilyen objektum – ekkor mehetünk tovább.
    A következő képernyőn egy százfülű ablakot találunk, mely első ránézésre meglehetősen hasonlít az ADUC felhasználói adatokat módosító ablakára. De csak első ránézésre.
    Az ördög ugye szokás szerint megint a részletekben…

    Például nézzük meg alaposan a fenti ablakot. Látható, hogy az előzőleg kijelölt felhasználói csokor számára egységesen tudunk új smtp címet generálni, sőt, akár elsődlegessé is tehetjük azt. Ha belegondolunk, hogy ugyanez Recipient Policy segítségével mennyire körülményes (LDAP szűrő, Recipient Update Service rugdosása…), akkor hamar megszerethetjük ezt a fület – pedig a legérdekesebb opcióról nem is beszéltem. Gondolom, nem árulok el újdonságot, ha megemlítem, hogy a Recipient Policy segítségével kiszórt emailcímek a policy törlése után nem törlődnek maguktól. Annál azért jobban kapaszkodnak. Egyfelől ezeket el lehet távolítani úgy, hogy felbérelünk tizenegy norvég hálóstoppoló öregasszonyt akik egyenként kitörlik a megfelelő címeket – másfelől megcsinálhatjuk azt, hogy a megszűnt házirend LDAP-szűrő ablakából kimásoljuk az LDAP feltételt, azzal berontunk az ADModify.net segédprogramba, majd miután lejött az érintett felhasználók listája, mindegyiket kijelöljük és a fenti képen látható ‘Remove email address’ opcióval eltávolítjuk a feleslegessé vált címeket.
    Végülis, ízlés kérdése.
    (Megjegyzem, azért ez a lehetőség nem helyettesíti teljeskörűen a Recipient Policy-t – a felhasználók létrehozását, mozgatását kísérő automatizmus hiányzik belőle.)

    Csemegézzünk még a fülek között. Van egy másik remek tab, úgy hívják, hogy custom. Amennyiben ismerjük a módosítandó tulajdonság nevét, akkor itt simán átírhatjuk az értékét.
    Konkrét példa. Nagyon sok helyen létezik a felhasználóknak egy, a HR által generált azonosítója. A címtárban létezik az employeeID nevű tulajdonság, direkt erre a feladatra felingerelve. Nagyon fontos egy tulajdonság lenne, hiszen ezáltal lenne összeköthető a HR adatbázis és az Active Directory. Mégse használja senki, mert az ADUC-ban nincs kivezetve a felületre az értéke. Amennyiben használják, akkor vagy megvásárolják a Hyena segédprogramot, vagy az adminnak kell összedobnia egy webfelületű szkriptet a tulajdonság kezelése céljából – vagy egy másik tulajdonságot oroznak el erre a célra.
    Nos, az ADModify.net ebben is segít. Az alábbi képen éppen Farkas Berci munkahelyi azonosítókódját módosítom. (Sajnálatosan a probléma ettől teljesen nem oldódik meg, a kód értékét kiolvasni ebből a programból sem tudjuk. Erre lesznek jók a később bemutatott parancssoros segédprogramok.)

    Itt kell megemlíteni még egy lehetőséget. Amikor kijelöljük, kiknek az adatait akarjuk piszkálni, kiválaszthatjuk a konfigurációs névteret is, illetve ezen belül tetszőleges objektumot. Az más kérdés, hogy elég furán fog kinézni utána a felhasználói adatok módosítására kitalált képernyő – mondjuk egy Exchange Store objektumnál. De még így sem értelmetlen a módszer, ugyanis a custom fül alatt módosíthatunk olyan tulajdonságot, amely ennél a – nem egészen idevaló – objektumnál található. (Szvsz. ez persze igazából csak agytorna, az ilyen tulajdonságok kezelésére ezerszer jobb segédprogram az ADSIEdit.)

  • 1.2 Undo ChangesMinden módosításról log készül xml formátumban, tehát simán vissza is tudjuk vonni az eddigieket.
    Magát a logot az alábbi ábra mutatja, az alatta lévő pedig a visszatöltő ablakot.
    Nem egy pilótavizsgás funkció, de roppant hasznos.

  • 1.3 Import Mailbox rightsExchange postafiókok jogosultságait importálhatjuk be xml fájlból.
    Maga a fájl az első menüpontban állítható elő, mint az ábrán is látható.

    Mielőtt továbbrohannánk, időzzünk el egy kicsit az ablaknál. Ugye mindenkinek feltűnt, hogy a program segítségével felhasználók egy tetszőleges csoportjánál tehetünk rá valakit megfelelő jogosultággal az illetők postafiókjára, illetve pont fordítva, vehetünk el jogosultságokat a postafiókoktól?
    Ha igen, akkor tényleg mehetünk tovább.
    A jogosultság export után egy xml fájl keletkezik.

    Nagyítás

    Szép. És ami fájl, az természetesen módosítható is. Más kérdés, hogy értelme nem sok van – jogosultság visszatöltést célszerűen backup/restore céllal érdemes használni, ugyanis jelen menüpontban nincs undo. Ha módosítani akarunk, akkor használjuk csak a korábbi ‘Mailbox Rights’ fület.

    És akkor a visszatöltés nem túl szofisztikált ablaka:

    Itt azt kell észrevenni, hogy a jogosultságok lehetnek additívak, illetve agyonvágóak.

A programcsomaggal nemcsak GUI jön, létezik a program parancssoros változatban is. A szintaxist és a kapcsolókat most nem elemzgetném, az ‘admodcmd -? > admodcmdhlp.txt’ parancsot ajánlom mindenki szíves figyelmébe, illetve a keletkező fájl kinyomtatását. Nagyon sok oldal lesz, de ebből lehet majd kibogarászgatni, hogy bármit, amit a grafikus felületen meg lehetett csinálni, hogyan lehet parancssorból is véghezvinni. Példák természetesen vannak.

Az írás végére még néhány link:

2. GALMod

A program becsületes neve: Global Address List Modify tool.
Nem egy mai gyerekről van szó, anno az Exchange5.5-höz készült – ennek ellenére remekül elboldogul az újabb Exchange verziókkal is, hiszen a szerverek szó nélkül tovább passzolják a címtárnak a módosítási igényeket. A program először az Exchange 5.5 Resource Kit-nek volt része, majd rákerült a későbbi verziókhoz tartozó RK cédékre is.
A használata egyszerű, mint a faék. Első induláskor legyárt egy MAPI profilt (ha addig nem volt), majd feljön egy háromfülű ablak, amelyikben a profilhoz tartozó postafiók azon adatait lehet módosítani, melyek a címlistákban is megjelennek.

Nagyítás
2.1 MAPI profil kiválasztása

Nagyítás
2.2 Első fül

Nagyítás
2.3 Második fül

Hogy annyira azért ne legyen egyszerű az élet, szerveroldalon Windows2003 szerver kell hozzá, futó ASP.NET szolgáltatással. (A régebbi verziók esetén szükség lesz egy kis hegesztésre is, ezekről részletesen itt vagy itt lehet olvasni.)

A képeken látható, hogy bizonyos mezők szürkék – ezek nem módosíthatók. A többi viszont igen.

Link szekció:

3. Directory Update
Jim McBee egyébként is egy jónevű fickó. Directory MVP, aki egész érdekes írásokat szokott publikálni a blogján. Régebben használta néha a GALMOD programot és érzékelte annak hiányosságait. Szerencsére nem csak érzékelte, hanem írt is egy másikat, melyet Directory Update-nek nevezett. (Nem, nem Norbi.)

Miben is különbözik ez a GALMOD-tól?
Sok mindenben:

  • Semmit nem kell kliensoldalon telepíteni.
  • Egyenként lehet szabályozni, hogy a GAL-ban szereplő tulajdonságok közül melyek látszódjanak és ezek közül melyek legyenek módosíthatók.
  • Bővebb a módosítható tulajdonságok köre.
  • Minden tulajdonsághoz szabadon konfigurálható drop-down lista rendelhető.
  • A képernyő testreszabható.
  • A kommunikáció egyszerűen titkosítható.

Ennyi plusz funkció láttán Jim úgy döntött, hogy ez nem ingyenes program lesz, inkább megpróbálja eladni azt. Jelenleg 250$/domain áron forgalmazza. Nem kevés… de ha belegondolunk, hogy mivel a felhasználók saját böngészőjükből képesek módosítani az adataikat, így az eredmény egy mindig aktuális címtár lesz, … lehet, hogy mégis megéri. (Természetesen ahol szigorú előírások, ISOxxxx és change management szabályozza a változtatásokat, ott a program számára nem sok babér terem. De kisebb/közepes cégeknél el lehet rajta gondolkodni.)
A webről 10 napos próbaverziót lehet letölteni.

Pár szó a működésről.
Ahhoz, hogy egyáltalán telepíteni lehessen, egy Windows2003 DC vagy member szerverre lesz szükség, melyen fut az IIS és az ASP.NET szolgáltatás. Maga a telepítés nem különösebben bonyolult, majdhogynem next-next-finish. A végén létrejön egy DirectoryUpdate virtuális könyvtár. Opcionálisan erre lehet rávarázsolni az SSL elérést.

Első lépésben a szerveroldal kész is. Kliens oldalon be kell írni a böngészőbe, hogy ‘http://webszerver/DirectoryUpdate/default.aspx’ – és máris Bob a bácsikánk.

A sikeres bejelentkezés után kapjuk meg az adatmódosító ablakot.
Már ez sem rossz, de testreszabás nélkül ez az ablak egy félkarú óriás. (Gyönyörű:)
A virtuális könyvtár alatt találni fogunk két xml és egy css fájlt. Ezeken keresztül lehet majd az alkalmazást konfigurálgatni. A css fájl értelemszerűen a kinézet – betűk, színek – állítgatására jó, az xml fájlok közül az egyik az alapbeállítások biztonsági tartaléka. A másik, az appsettings.xml tartalmazza a program működését befolyásoló paramétereket. A felépítése értelmes, logikus, nem hiszem, hogy túlságosan el kellene mélyülnöm a magyarázatában.
Minden értékhez tartozik egy type, egy editable és egy visible változó. Az utóbbi kettő yes/no értékkel bírhat, a type pedig lehet text v. dropdown. Ezekkel lehet beállítani, hogy egy tulajdonság egyáltalán látható legyen-e, ha igen, akkor az értéke szerkeszthető legyen-e és ha igen, akkor szabadon lehessen módosítani vagy csak egy legördülő listáról. Magukat a listaelemeket value tag-ek közé kell beírni.

Először töltsük fel a listaelemeket.

Nagyítás

Majd tiltsuk le az IP telefon értékének a módosítását.

Nagyítás

És itt is a kívánt végeredmény.

Nagyítás

Végül a link szekció:

4. ADSIEdit, LDP
Segédprogramok nem csak lelkes emberek műhelyeiben teremnek, akadnak az operációs rendszerben is rendesen. A Windows server telepítő cédé Support Tools csomagjában (telepíteni kötelező!) található többek között a címsorban található két segédprogram. Mindkettő grafikus felületű – és mindkettőről elmondható, hogy mindent, hangsúlyozom, mindent módosíthatunk segítségükkel a címtárban. (Feltéve, hogy van hozzá jogosultságunk.) Emiatt kéretik igen óvatosan bánni velük.
Az ADSIEdit egy MMC snap-in, célszerű felvenni a mindennapos custom MMC konzolunkra.

Nagyítás

A használata igen egyszerű. (A W2K és a W2K3 alatti verziók eltérnek egy cseppet, de nem vészesen. A cikkben a W2K3 verziót használtam.)
Kikeressük a megfelelő tulajdonságot (ehhez persze ismerni kell az AD névtereit és azokon belül a struktúrákat), majd nemes egyszerűséggel átírjuk azt. A lenti példában például törlöm Farkas Berci egyik emailcímét.

Nagyítás

Az LDP programnak kicsit más a filozófiája. Elsősorban gyors nézegetéshez ajánlott, a tulajdonság értékek átírása kicsit körülményes benne. Nagy előny, hogy az egyes objektumokra kattintva csak az értékkel rendelkező tulajdonságokat listázza ki, így gyorsan áttekinthetjük egy objektum összes létező értékét. (Tudjuk ugye, hogy ha egy tulajdonságnak nincs értéke, akkor az nem létezik.)
A lenti képernyőkép szerintem magáért beszél.

Nagyítás

Ahhoz, hogy idáig eljussunk, három lépést kell megtennünk.

– Connection/Connect

Nagyítás

– Connection/Bind

Nagyítás

– View/Tree

Nagyítás

Értéket módosítani pedig az alábbi módon lehet.

Nagyítás

Link szekció: