Crearea Si Gestionarea Conturilor de Utilizator cu Vbs
CUPRINS
Introducere
CAPITOLUL I. Windows Server 2003
I.1. Scurt istoric
I.2. Privire de ansamblu asupra familiei Windows 2003 Server
I.3. Medii de rețea ale sistemului de operare Windows 2003.
I.4. Noțiuni și caracteristici ale componentei Active Directory
CAPITOLUL II. Active Directory
II.1. Architectura Active Directory.
II.2. Organizarea logică a Active Directory
II.3. Obiectele Active Directory
II.4. Schema Active Directory.
II.5. Componentele Active Directory.
II.6. Administrarea flexibilă
II.7. Modelul de date standardizat
II.8. Modelul de securitate detaliat
II.9. Facilitățile directorului activ
II.10. Integrarea în DNS (Domain Name Service)
II.11. Scalabilitatea
II.12. Catalogul global
II.13. Replicarea multimaster
II.14. Compatibilitatea cu standardele uzuale
II.15. Securitatea
II.16. Configurația serviciului Active Directory
II.17. Modelarea unei ierarhii de container pentru organizație
II.18. Folosirea instrumentelor din Active Directory
CAPITOLUL III. Crearea și gestionarea conturilor de utilizator
III.1. Conturile de utilizator
III.2. Crearea grupurilor
CAPITOLUL IV. Folosirea limbajului VBScript
IV.1. Ce este VBScript?
IV.2. Pentru ce este bun VBScript?
IV.3. VBScript și Visual Basic
IV.4. Platforme VBScript
CAPITOLUL V. VBScript și paginile dumneavoastră HTML
V.1. Eticheta <SCRIPT>
V.2. Ascunderea scripturilor de partea clientului de browserele incompatibile
V.3. Plasarea scriptului dumneavoastră în codul HTML
V.4. Rularea scripturilor dumneavoastră de partea clientului
V.5. Modelul de obiect pentru scriptare Internet Explorer
CAPITOLUL VI. Prezentarea Probei Practice
VI.1. Prezentarea pagini HTML
VI.2. Prima parte a pagini este formata dintr-un tabel
VI.2.1. Prezentarea scriptului:
VI.3. Cea de-a doua parte a pagini
VI.3.1.Prezentarea codului de mapare
VI.3.2. Descrierea scripturilor:
VI.4. Cea de-a treia parte a formularului
VI.5. In ultima parte a pagini noastre
Concluzii
Bibliografie:
Anexe
Introducere
Această lucrare dorește a arăta cum anume se poate configura și utiliza Active Directory-ul în Windows Server 2003, folosindu-ne de scripturi scrise în limbajul VisualBasicScript sau VBS, și implementate într-o interfață prietenoasă scrisă în HTML.
Această aplicație constă într-o pagină web, portabilă și compatibilă cu orice versiune de Internet Explorer, sau orice alt browser.
La dezvoltarea acestei aplicații s-a folosit pentru crearea scripturilor un editor într-o ediție Demo ce poartă numele de "Primal Script", iar pentru generarea paginei HTML în care sunt implementate aceste scripturi de InfoPath 2003, soft dezvoltat de Microsoft în cadrul pachetului Office 2003.
Pentru a înțelege această aplicație trebuie să se facă referiri și la Windows Server 2003, înțelegerea serviciului Active Directory, și nu în ultimul rând câteva descrieri a limbajelor folosite.
CAPITOLUL I.
Windows 2003 Server
I.1. Scurt istoric
Pentru a înțelege corect ce reprezintă programul Windows 2003 Server este obligatorie cunoașterea istoricului său și a forțelor care au stat la baza dezvoltării sale. Cunoscând aceste aspecte, veți putea înțelege de ce firma Microsoft a alocat atâția ani de muncă dezvoltării unui sistem de operare care are peste 40 de milioane de linii de cod. Chiar dacă nu apare în denumirea sa, Windows Server 2003 este noua versiune a sistemului Microsoft Windows 2000. De ce nu mai apare mențiunea „NT"? Din rațiuni de marketing. Cineva de la Microsoft a considerat că, dacă va fi eliminat NT-ul din denumirea produsului, cumpărătorii vor fi mai înclinați să achiziționeze acest program. Obiectivul pe termen lung al celor de la Microsoft este de a unifica linia de sisteme de operare sub aceeași denumire, Windows Server 2003. Nu peste mult timp, se va renunța la Windows 95 și Windows 98. Este posibil să mai apară o versiune actualizată după Windows 98, dar Microsoft dorește să se ajungă ca Windows Server 2000 să fie rulat nu numai în servere, ci și în calculatoarele independente din birouri sau de acasă.
Chiar dacă Windows Server 2003 este proiectat plecând de la Windows NT, această nouă versiune nu este un upgrade convențional ca în cazul lui Windows NT 4.0, versiunea îmbunătățită a lui Windows NT 3.51. În NT 3.51 și 4.0, cea mai importantă schimbare a reprezentat-o interfața, NT-ul obținând în sfârșit un aspect și un mod de operare similar programului Windows 95. Au existat și alte modificări, care însă nu au fost foarte importante.
În Windows 2003, Microsoft s-a aventurat să facă o schimbare de atmosferă în sistemul de operare, prin includerea unei interfețe mai accesibile și mai comode. A fost făcută însă și o revizie importantă a întregului sistem de operare.
Aparația sistemului de operare Windows Server 2003 a fost impusă de mai multe elemente, inclusiv de criticile la adresa Windows NT, care făceau referire la imposibilitatea extinderii sau susținerii unei adevărate rețele de firmă și de a deveni un sistem de operare de rețea cu funcționare permanentă.
Principala critică la adresa folosirii sistemului NT într-o rețea de firmă era legată de Configurația Domain. Părerea generală era că acesta avea scăderi în cazul unei configurații de rețea cu mii de utilizatori. De fapt, „scăderi” este un eufemism. Configurația directorului Domain nu oferea decât o metodă extrem de complicată și de enervantă pentru administrarea unei rețele cu mii sau doar cu sute de utilizatori.
Au existat și voci care criticau faptul că Windows NT nu permite folosirea unui singur server cu Windows NT pentru administrarea unei rețele cu mii de utilizatori, pentru o rețea atât de mare fiind necesară divizarea sarcinii între mai multe servere NT.
O altă cauză care a stat la baza realizării sistemului Windows Server 2003 a fost înăsprirea concurenței dintre Microsoft și alți dezvoltatori de sisteme de operare pentru rețele, o luptă pe care Microsoft risca să o piardă. Firmele rivale, cum ar fi Sun, reușiseră să preia numeroși potențiali utilizatori, pentru că Sun Solaris permitea extinderea rețelelor. Solaris permitea configurarea unui server cu o memorie de mai mulți gigaocteți, putea prelua sarcini superioare, iar administrarea utilizatorilor era mult mai simplă prin serviciul de directoare pe care îl oferea.
Dezvoltarea Internet-ului a constituit un alt motiv pentru ca Microsoft să realizeze un nou sistem de operare. Pentru a avea succes în Internet este necesar ca mii de utilizatori să poată fi deserviți concomitent de un server sau de mai multe servere configurate într-un cluster, precum și posibilitatea de a rula aplicații în Web într-un mod sigur și funcțional.
Windows Server 2003 este răspunsul dat de Microsoft acestor critici și solicitărilor venite din partea administratorilor de rețea, permițând extinderea rețelelor, având o fiabilitate mai mare și o disponibilitate superioară comparativ cu predecesorul său. Windows Server 2003 este a patra variantă de sistem de operare pentru rețele conceput de Microsoft (primul fiind LAN Manager, urmat de Windows NT 3.x și apoi de Windows NT 4.0). Se pare că Microsoft a reușit de această dată să facă ceva bun.
I.2. Privire de ansamblu asupra familiei Windows 2003 Server
Windows Server 2003 este un sistem de operare multifuncțional ce reunește suport pentru client-server și rețele peer-to-peer. El încorporează tehnologiile care reduc costul total de proprietate și oferă o scalabilitate de la o rețea relativ mică la o rețea de întreprindere mare. Total cost of ownership (TCO) este suma totală de bani și timp asociat cu cumpărarea suportului fizic al calculatorului, softul și desfașurarea, configurarea, și mentenanța suportului fizic. TCO include suportul fizic și actualizările de soft, treiningurile, întretinerea și administrarea, și supportul tehnic. Factorul major în TCO este pierderea productivității. Pierderea productivității poate apărea datorită unor erori ale utilizatorilor, probleme la nivel fizic sau softer updates și re-trainuire.
Windows Server 2003 este un sistem de operare puternic cu multe caracteristici. Iată câteva dintre cele mai importante caracteristici:
■ Active Directory, care se bazează pe Directory Services (standardul X.500) și furnizează o arhitectură de rețea scalabilă, ce permite un singur server cu câteva obiecte sau mii de servere cu milioane de obiecte;
■ O consolă administrativă numită Microsoft Management Console (MMC), care poate fi personalizată de administratori pentru a furniza într-un mediu unitar orice unealtă administrativă necesară;
■ Suport hardware îmbunătățit, care include capacități Plug-and-Play și programe de tip Wizard de asistență hardware, ce permit instalarea de noi componente hardware;
Servicii de management al fișierelor, care includ caracteristici ca Distributed File System (DFS), securitate mărită prin Encrypting File System (EFS) și posibilitatea de a seta cote de utilizare a spațiului pe disc pentru fiecare utilizator în parte;
Un nivel înalt de securitate prin intermediul unor utilități, cum sunt Security Configuration and Analysis, prin protocoale cum este Kerberos (pentru accesarea resurselor într-un domeniu Windows Server 2003) și IP security Protocol (pentru autentificare și criptare de date) și prin utilizarea smart card-urilor;
Posibilitatea de a permite instalări de la distanță ale sistemelor de operare, prin servicii cum este duplicarea discurilor (disk imaging);
Servicii Intellimirror, care includ caracteristici cum sunt fișiere și foldere offline, instalare și depanare automată a aplicațiilor de rețea și posibilitatea de a controla Desktop-urile utilizatorilor prin specificarea configurațiilor Desktop;
■ Servicii Windows Terminal, care permit calculatoarelor client să acceseze rețeaua folosind puterea de procesare a serverului;
■ Suport extins pentru conectare la Internet prin Internet Information Services (IIS)
■ Opțiuni de recuperare a sistemului disponibile prin Startup și Recovery Options la pornirea Windows Server 2003
Windows Server 2003 este disponibil în patru versiuni diferite: Windows Server 2003 Standard Edition, Windows Server 2003 Web Edition, Windows Server 2003 Web Edition și Windows Server 2003 Datacenter Edition Puteți alege versiunea care este cea mai potrivită pentru nevoile și bugetul firmei dumneavoastră. Windows Server 2003 Standard Edition este proiectat pentru utilizarea în firme de mărime mică spre medie, iar Windows Server 2003 Advanced Edition și Windows Server 2003 Datacenter Edition sunt proiectate pentru utilizarea în firme de mărime medie spre mare sau de către furnizori de servicii Internet (ISP),pe când Windows Server 2003 Web Edition este proiectat pentru a fi utilizat ca server de web. Următoarele secțiuni descriu principalele caracteristici ale celor trei versiuni ale Windows Server 2003.
I.2.1. Windows Server 2003 Standard Edition
Windows Server 2003 Standard Edition conține toate caracteristicile de bază ale familiei Windows Server 2003 Standard Edition. Windows Server 2003 Standard Edition poate servi și ca server de fișiere sau tipărire, și ca server de aplicații, și ca server Web, și ca server de comunicații. Câteva dintre caracteristicile suportate de Windows Server 2003 Standard Edition:
Active Directory
Servicii Internet și Web
Un nivel înalt de securitate prin Kerberos și o infrastructură cheie publică
Servicii Windows Terminal
Posibilitatea de a utiliza până la 4 GB de memorie
Posibilitatea utilizării a două procesoare în cazul unei instalări noi sau, pentru servere cărora li s-a făcut upgrade de la Windows NT Server, suport pentru multiprocesare simetrică cu până la patru căi.
I.2.2 Windows Server 2003 Web Edition
Windows Server 2003 Web Edition contine doar caracteristicile necesare unui server de web dintre care se poate aminiti:
Active Directory
Un nivel înalt de securitate prin Kerberos și o infrastructură cheie publică
Servicii Windows Terminal
Posibilitatea dervices (IIS)
■ Opțiuni de recuperare a sistemului disponibile prin Startup și Recovery Options la pornirea Windows Server 2003
Windows Server 2003 este disponibil în patru versiuni diferite: Windows Server 2003 Standard Edition, Windows Server 2003 Web Edition, Windows Server 2003 Web Edition și Windows Server 2003 Datacenter Edition Puteți alege versiunea care este cea mai potrivită pentru nevoile și bugetul firmei dumneavoastră. Windows Server 2003 Standard Edition este proiectat pentru utilizarea în firme de mărime mică spre medie, iar Windows Server 2003 Advanced Edition și Windows Server 2003 Datacenter Edition sunt proiectate pentru utilizarea în firme de mărime medie spre mare sau de către furnizori de servicii Internet (ISP),pe când Windows Server 2003 Web Edition este proiectat pentru a fi utilizat ca server de web. Următoarele secțiuni descriu principalele caracteristici ale celor trei versiuni ale Windows Server 2003.
I.2.1. Windows Server 2003 Standard Edition
Windows Server 2003 Standard Edition conține toate caracteristicile de bază ale familiei Windows Server 2003 Standard Edition. Windows Server 2003 Standard Edition poate servi și ca server de fișiere sau tipărire, și ca server de aplicații, și ca server Web, și ca server de comunicații. Câteva dintre caracteristicile suportate de Windows Server 2003 Standard Edition:
Active Directory
Servicii Internet și Web
Un nivel înalt de securitate prin Kerberos și o infrastructură cheie publică
Servicii Windows Terminal
Posibilitatea de a utiliza până la 4 GB de memorie
Posibilitatea utilizării a două procesoare în cazul unei instalări noi sau, pentru servere cărora li s-a făcut upgrade de la Windows NT Server, suport pentru multiprocesare simetrică cu până la patru căi.
I.2.2 Windows Server 2003 Web Edition
Windows Server 2003 Web Edition contine doar caracteristicile necesare unui server de web dintre care se poate aminiti:
Active Directory
Un nivel înalt de securitate prin Kerberos și o infrastructură cheie publică
Servicii Windows Terminal
Posibilitatea de a utiliza până la 2 GB de memorie
Servicii de Web
I.2.3 Windows Server 2003 Advanced Server
Windows Server 2003 Advanced Server este un server mult mai puternic, proiectat pentru operarea în rețele de dimensiuni medii până la mari. Include toate facilitățile Windows Server 2003 și altele în plus, printre care:
■ Echilibrarea încărcării rețelei
■ Servicii cluster pentru toleranța la erori a aplicațiilor
Posibilitatea de a utiliza până la 8 GB de memorie
Suport pentru multiprocesare simetrică cu până la opt căi
I.2.4 Windows Server 2003 Datacenter Server
Windows Server 2003 Datacenter Server este cel mai puternic server din familia de servere Microsoft. Acest sistem de operare este proiectat pentru rețele mari. Windows Server 2003 Datacenter Server include toate facilitățile Windows Server 2003 Advanced Server și are în plus următoarele:
Servicii clustering mult mai avansate
Posibilitatea de a utiliza până la 64 GB de memorie
Suport pentru multiprocesare simetrică cu până la 16 căi (versiunile OEM pot suporta SMP cu până la 32 de căi)
I.3. Medii de rețea ale sistemului de operare Windows Server 2003
Un mediu de rețea bazat pe Windows Server 2003 poate fi sub forma unui model de workgroup sau a unui model de domeniu. Atât Windows Server 2003 Professional cât și Windows Server 2003 pot lua parte în cadrul celor 2 modele. Diferențele administrative dintre aceste două produse depind de modelul de mediu al rețelei.
I.3.1. Modelul workgroup
Workgroup-ul este o grupare logică a calculatoarelor legate în rețea care împart resurse cum ar fi fișiere și imprimante. Un workgroup se referă la o rețea peer-to-peer deoarece toate calculatoarele legate în această rețea pot împărți resurse fără a fi nevoie de un server dedicat. Oricare din calculatoarele din workgroup, rulând atât Windows Server 2003 cât și Windows Server 2003 Professional mențin o bază de date de securitate, ca și în Fig I.3.1. O bază de date de securitate este o listă cu conturi de utilizatorii și în același timp o resursă de informație de securitate pentru computerul pe care se află. De aceea administrarea conturilor de utilizatori și securitatea resurselor într-un workgroup este decentralizată.
Figura I.3.1.
I.3.2. Modelul de Domeniu
Un domeniu Windows Server 2003 este o grupare logică a calculatoarelor din rețea care împart o bază de date centrală. O bază de date centrală conține conturi de utilizatori și informații de securitate ale domeniului. Această bază de date este cunoscută și sub numele de Active Directory, care este directorul de service al lui Windows Server 2003. Active Directory înlocuiește ceea ce înainte se găsea în containarele de stocare a informațiilor despre domeniu. Active Directory conține și informații despre servicii și alte resurse.
Figura I.3.2.
În trecerea de la Standard Edition la Datacenter, crește și numărul facilităților care măresc extensibilitatea și fiabilitatea programului Windows Server 2003. Va trebui deci să stabiliți care din aceste versiuni răspunde cel mai bine nevoilor dumneavoastră.
Dacă aveți o rețea mică sau medie (50 până la 500 de utilizatori), versiunea Standard Edition este cea mai indicată pentru dumneavoastră. Dacă trebuie să administrați aplicații la nivel de firmă, cum ar fi servere pentru baze de date, versiunea Advanced Server este cea mai bună opțiune. Asta nu înseamnă însă că nu este posibilă rularea unor servere pentru baze de date și în versiunea Standard Edition, dar, datorită extensibilității și fiabilității sale superioare, versiunea Advanced Server permite rularea aplicațiilor importante într-un mediu mult mai stabil.
Conform informațiilor furnizate de Microsoft, versiunea Datacenter permite administrarea concomitentă a mai mult de 10.000 de utilizatori. Dacă trebuie să efectuați procesarea de tranzacții online sau aveți lucrări de consolidare pe server, sau sunteți un furnizor de servicii Internet cu mulți utilizatori, versiunea Datacenter este cea mai bună alegere.
I.4. Noțiuni și caracteristici ale componentei Active Directory
Dacă ar fi să facem un mic sondaj între administratorii de rețele Windows NT care intenționează să treacă la platforma Windows Server 2003 și să-i întrebăm ce i-a determinat să facă acest lucru, majoritatea ar răspunde că totul se datorează componentei Active Directory. Directorul activ este ceea ce face din Windows Server 2003 un adevărat sistem de operare pentru rețele mari.
CAPITOLUL II.
Active Directory
Cei care nu au venit până acum în contact cu lumea sistemelor de operare Windows și care nu au avut niciodată de-a face cu serviciul de directoare din Windows NT au intrat în această lume la momentul oportun. Acum nu mai trebuie folosite relațiile de domeniu, uneori foarte complexe și extrem de supărătoare. Asta nu înseamnă că serviciile de directoare pentru domeniile Windows NT nu sunt utile; în realitate, în cazul unei rețele cu unul sau două domenii totul nici n-ar fi chiar atât de rău. Însă când numărul de domenii din rețea este mai mare de trei sau patru, limitările serviciului de directoare din Windows NT devin evidente.
Utilizatorii și grupurile erau singurele obiecte pe care le puteați administra în serviciul de directoare. Pe măsură ce dimensiunea domeniului creștea și încercați echilibrarea încărcării generată de utilizatori prin crearea mai multor domenii, trebuia să gestionați numeroasele relații de încredere create. Noțiunea de domeniu nu a dispărut în Active Directory, însă nevoia de a creea mai multe domenii, precum și gestionarea și stabilirea relațiilor de încredere s-au modificat în mod dramatic în Active Directory.
Active Directory le oferă administratorilor următoarele facilități:
– O reprezentare ierarhică a directorului. În acest fel, nu numai că se îmbunătățește capacitatea de gestionare a directorului activ, dar devine și mai ușor pentru utilizatorii rețelei să găsească resursele definite în Active Directory.
– Extensibilitatea. Microsoft le-a facilitat administratorilor personalizarea directorului activ în funcție de propriile nevoi, prin interfețele ADSI (Active Directory Service Interfaces) și alte utilități.
– Securitate distribuită. Aceasta îmbunătățește performanțele globale prin utilizarea conturilor, resurselor și politicilor gestionate de cel mai apropiat controler de domeniu.
– Scalabilitate. Noua componentă Active Directory poate fi scalată la milioane de obiecte per domeniu. Scalabilitatea directorului activ permite utilizarea lui ca unic serviciu de directoare din întregul mediu.
– Replicare multimaster. Nu mai este necesar să actualizați un unic controler de domeniu principal (PDC). Acum puteți să actualizați orice controler de domeniu din rețea.
Microsoft a înțeles necesitatea coexistenței cu alte sisteme de operare pentru rețele. Din această cauză, Active Directory a fost proiectat în așa fel încât să fie complet integrat în grupul de servicii pentru directoare existent, cum ar fi NDS-ul de la NetWare. Ca protocol principal folosește LDAP, ceea ce permite o integrare perfectă în serviciile de directoare ce rulează în sisteme de operare sub UNIX sau cu aplicațiile de rețea ce folosesc protocolul LDAE.
Prin Active Directory se pot administra utilizatorii, serviciile, bazele de date, conexiunile gazdelor, fișierele și alte câteva de administrare.
În cazul serviciului de directoare din Windows NT, trebuia folosită o metodă de replicare a informațiilor de director care nu era întotdeauna fiabilă. Fluxul de modificări al bazei de date și al actualizărilor dintre controlerele PDC (Primary Domain Controller) și BDC (Backup Domain Controller) putea dura ore în șir, în funcție de mărimea bazei de date. Această problemă nu mai apare în cazul directorului activ.
Active Directory este un element scalabil, putând fi folosit nu numai în rețelele mari de firmă, ci și în mediile mai mici. Administratorii vor putea să beneficieze de avantajele folosirii acestei facilități chiar dacă nu au mii de obiecte în administrare.
Cum mediile de rețea au acum întindere globală, șablonul standard pentru atributele obiectelor nu mai este suficient.Capacitatea superioară de adăugare a atributelor la fiecare obiect definit în Active Directory este un aspect pe care mulți administratori de rețea îl vor considera foarte util.
Windows Server 2003folosește module și moduri care combinate ajută la obținerea serviciile sistemului de operare. Fiecare aplicație include o aplicație de service care rulează într-un modul separat pentru utilizator din care se face un request printr-un API care limitează accesul utilizatorului la datele sistemului. Un process de aplicație începe în modul user și este transferat în modul Kernel, unde serviciul actual este oferit într-un mediu protejat. Procesul este transferat înnapoi în user mode. Active Directory rulează în user mode într-un subsistem securizat Security Reference Monitor care rulează în modul Kernel este autoritatea primara pentru întărirea regulilor de securitate a subsistemului securizat.
Figura II.1
II.1. Architectura Active Directory
Funcționalitatea Activă Directory poate să fi ilustrată ca și o arhitectură pe straturi în care straturile reprezintă procese ale serverului care furnizează serviciile de director către aplicațiile de client. Active Directory se compune din trei straturi de service și mai multe interfețe și protocoale care cooperează pentru a furniza serviciile de director. Cele trei straturi de serviciu găzduiesc diferite tipuri de informatii necesare să localizeze intrari în baza de date a directorului. Deasupra straturilor de service în această arhitectură se afla protocoalele și API-urile care activează comunicarea între clienți și serviciile de director.
Figura II.2 Architectura Active Directory
Componentele serviciului sunt:
Extensibil Storage Engine comunică direct cu intrarile individuale în director de informație pe baza atributelor de nume ale obiectelor relative.
Director System Agent (DSA) construiește o ierarhie a relațiilor părinte-copil memorate în director. Furnizează API-uri pentru apeluri de acces pentru director.
Data Store (fișierul bazei de date NTDS. DIT) este manipulat numai cu motorul bazei de date Extensible Storage Engine, conținut în directorul \winnt\ntds în cadrul controlerului de domeniu. Dumneavoastră puteți să administrați fisierul folosind unealta Ntdsutil, localizată în directorul \winnt\system32 pe controlerul de domeniu.
Data Base Layer furnizează un strat de abstract între aplicații și baza de date. Apelurile venite de la aplicații nu merg niciodată direct către baza de date; ele trec prin stratul bazei de date.
Clienții obțin accesul către Active Directory folosind unul dintre urmatoarele mecanisme care este sprijinit cu DSA:
LDAP ADSI. Clienții care suportă LDAP îl folosesc pentru a se conecta la DSA. Active Directory suportă versiunea LDAP 3 (definită de RFC 2251) și versiunea LDAP 2 (definită de RFC 1777). clienții Windows Server 2003, la fel ca clienții Windows 98 și clienții Windows 95 care au instalate componentele de client Active Directory, folosesc versiunea LDAP 3 pentru a se conecta la DSA. ADSI are menirea de a abstractiza API-ul LDAP; Oricum Active Directory folosește numai LDAP.
Messging API ( MAPI). Clienții MAPI, ca de exemplu Microsoft Outlook, se conectează la DSA folosind MAPI RPC (interfața de adress book ).
Sequrity Accounts Manager (SAM). Clienții Windows care folosesc Windows NT 4. 0 sau o versiune mai recentă, folosesc interfața SAM pentru a se conecta la DSA.
Replication (REPL) atunci când se face o replicare de director, Active Directory DSA se conectează la fiecare folosind o interfată RPC proprie.
II.2. Organizarea logică a Active Directory
Windows Server 2003 Active Directory {AD) este proiectat ca structură de rețea scalabilă. Structura logică a Active Directory constă din containere (containers), domenii (domains) și unități organizaționale (OUs • organizational units).
Un container este un obiect Active Directory care păstrează alte obiecte Active Directory. Domeniile și unitățile organizaționale sunt exemple de obiecte container.
Un domeniu este unitatea logică principală de organizare în Active Directory. Într-un domeniu, obiectele partajează informații de securitate și conturi. Fiecare domeniu trebuie să aibă cel puțin un controler de domeniu. Controlerul de domeniu este un calculator Windows Server 2003 care stochează baza de date completă a domeniilor.
Fiecare domeniu poate fi alcătuit din mai multe unități organizaționale, organizate logic ierarhic într-o structură ierarhică. Unitățile organizaționale pot conține utilizatori, grupuri, politici de securitate, calculatoare, imprimante, partiții de fișiere și alte obiecte Active Directory.
Domeniile sunt conectate unul cu altul prin raporturi logice. Raporturile sunt implementate prin arbori de domeniu (domain trees) și păduri de domenii (domain forests).
Un arbore de domeniu este o organizare ierarhică a domeniilor într-un namespace unic, învecinat. În Active Directory, un arbore este o ierarhie de domenii care sunt conectate unele cu altele printr-o serie de raporturi de încredere (legături logice care combină două sau mai multe domenii într-o unitate administrativă unică). Avantajul utilizării raporturilor de încredere între domenii este că acestea permit utilizatorilor dintr-un domeniu să acceseze resurse dintr-un alt domeniu, presupunând că utilizatorii au drepturile necesare de acces.
O pădure de domenii este un set de arbori care nu formează un namespace învecinat. De exemplu, puteți avea o pădure de domenii dacă firma dumneavoastră a fuzionat cu altă firmă. Cu o pădure de domenii, puteți menține fiecărei firme o identitate separată prin namespace-ul dumneavoastră și în același timp să partajați informații peste Active Directory.
II.3. Obiectele Active Directory
Un obiect este un set distinct de nume de atribute care reprezintă o resursă de rețea. Atributele obiectului sunt caracteristicile acestuia în director. De exemplu, atributele unui cont de utilizator pot include numele și prenumele utilizatorului, departament, și adresa de e-mail (vedeți Fig II. 4).
Figura II.3 Active Directory obiecte si atribute
În Active Directory, poți organiza obiectele în clase, clase care sunt grupări logice ale obiectelor. Exemple de clasele de obiect sunt acelea care reprezintă conturi de utilizator, grupuri, calculatoare, domenii, sau unităti organizaționale (OU).
Schema Active Directory definește obiectele care pot să fie conținute în Active Directory.
II.4. Schema Active Directory
Cunoașterea schemei oricărui serviciu de directoare vă permite să aflați totul despre el. Din schema propriu-zisă puteți afla cât de flexibil și de extensibil este serviciul de directoare. Conținutul și structura, inclusiv toate atributele, clasele și proprietățile claselor sale sunt definite toate în schemă. La fel este și în cazul directorului activ. Pentru începători, Microsoft a ușurat crearea unei scheme.
Primul controler de domeniu din rețea care are instalată componenta Active Directory va creea în mod automat schema în locul dumneavoastră. Schema implicită creată de controlerul de domeniu este formată din conturile de utilizator, calculatoarele, grupurile, imprimantele și alte elemente folosite uzual. Ceva mai devreme în acest capitol am discutat despre extensibilitatea directorului activ. În dorința de a-l face cu adevărat util administratorului de rețea, Microsoft a deschis controlul acestuia. Dacă dorește să definească noi tipuri și atribute pentru obiectele directorului, o poate face prin modulul de extensie Schema Manager sau prin interfața ADSI (Active Directory Services Interface). De asemenea, este posibilă editarea serviciului prin utilitarele cu linie de comandă și instrumentele de programare.
Schema Active Directory este lista de definiții care definește oarecum tipuri de obiecte și informație despre aceste obiecte care pot să fie stocate în Active Directory. Definițiile sunt la randul lor stocate precum obiectele astfel ca Active Directory poate să conducă obiectele schemei cu aceleași operații de management pentru a conducere restul obiectelor din Active Directory.
Există două tipuri de definiții în schemă: Atribute și clase. Atributele și clasele sunt de asemenea referite la fel ca obiecte ale schemei sau metadatelor.
Atributele sunt definite separat de clase. Fiecare atribut este definit numai odată și poate fi folosit în mai multe clase. De exemplu, atributul de descriere este folosit în mai multe clase, dar este definit o singură data schema, asigurând consistența.
Clasele, de asemenea referite ca și clase de obiecte, descriu obiecte ale Active Directory care pot să fie create. Fiecare clasa este o colecție de atribute. Când creăm un obiect, atributele conțin informația care descrie obiectul. Clasa User, de exemplu, este compusă din mai multe atribute, incluzând adresa de rețea, Home Directory, și așa mai departe. Fiecare obiect în Active Directory este o instanta a unei clase de obiecte.
Un set de clase de bază și atribute sunt expediate cu Windows Server 2003. Dezvoltatorii experimentati și administratorii de rețea pot extinde dinamic schema prin definirea de noi clase și atribute pentru clasele existente. De exemplu, dacă ești nevoit să furnizezi informații despre utilizatorii care momentan nu sunt definite în schemă, trebuie să extinzi schema pentru clasa Users. Oricum, să extinzi schema este o operație avansată care poate avea posibile consecințe. Deoarece o schemă nu poate fi ștearsă, doar dezactivată, și cum schema este în mod automat repetată, trebuie să plănuiesti și să pregătești înainte să extinzi schema.
II.4.1. Schema integrată
Arhitectura serviciului Active Directory seamănă din mult puncte de vedere cu alte servicii de directoare incluse în alte sisteme de operare și aplicații. Însă una din principalele deosebiri constă în faptul că schema este integrată ca un set de variante ale claselor de obiecte înregistrate în director. Alte servicii de directoare pot înregistra informațiile de schemă sub forma unui fișier de text care trebuie citit la inițializare.
Există numeroase avantaje ale includerii serviciului în director, printre care și integrarea aplicațiilor. Aplicațiile care sunt scrise pentru a recunoaște directorul activ nu numai că pot interpreta informațiile din schemă, ci pot efectua și modificări ale acesteia. Modificările aduse schemei sunt actualizate în mod dinamic, astfel că ele sunt accesibile imediat pentru a fi utilizate.
Observație: Numai cei care au permisiunile corespunzătoare pot efectua modificări ale schemei.
II.4.2. Schema extensibilă
Ca administrator al directorului activ puteți să efectuați modificări în schema acestuia. Aveți posibilitatea să definiți noi tipuri de obiecte și atribute ale obiectelor din director, precum și noi atribute pentru obiectele existente. Pentru extinderea serviciului există două instrumente, modulul de extensie Schema Manager și interfața ADSI (Active Directory Services Interface). Deoarece schema este inclusă în catalogul global, toate modificările pe care le efectuați în această schemă vor fi aplicate imediat.
II.5. Componentele Active Directory
Activ Directory folosește componentele pentru a construi structura directorului care întâlnește nevoile unei organizați. Structura logică a organizației este reprezentată de următoarele componentele ale Active Directory: Domenii, unități organizaționale (OU), trees și forest. Structura fizică a organizației este reprezentată de către următoarele componente ale Active Directory: Site-urile (rețele fizice) și controlerele de domeniu. Active Directory desparte complet structura logică de cea fizică.
II.5.1. Structura Logică
În Active Directory, organizăm resurse într-o structură logică care oglindește structura logică a organizației. Grupând logic resursele te ajută să găsești o resursă mai degrabă după numele ei decât după locația fizică. Deoarece grupăm resursele din punct de vedere logic, Active Directory face ca structura de rețele fizice să fie transparentă utilizatorilor. Figura II.6. 1. ilustrează relațiile componentelor Active Directory.
Figura II.4.1 Resources organized in a logical hierarchical structure
II.5.2. Anvergura
Anvergura reprezintă extinderea pe care o poate atinge Active Directory, care poate să devină foarte mare. Microsoft afirmă că este posibilă gestionarea centralizată a milioane de obiecte prin Active Directory. În Windows NT, limita era de 40.000 de utilizatori și calculatoare per domeniu. Această limitare a determinat mulți administratori să creeze domenii suplimentare, astfel rezultând o încărcare suplimentare pentru administrarea numeroaselor domenii.
II.5.3. Unități Organizaționale (OU)
Unitatea Organizațională este un container folosit pentru a organiza obiecte din cadrul unui domeniu în grupuri logice administrative care oglindesc structura funcțională a organizației. Un OU poate conține obiecte cum ar fi: conturi de utilizatori, grupuri, calculatoare, imprimante, aplicații, fișiere, și alte unități organizaționale din același domeniu. Ierarhia OU în cadrul unui domeniu este independentă față de ierarhia unei OU din cadrul altui domeniu, fiecare domeniu poate își implementeze propria ierarhie OU.
În Fig 2.3 domeniul “domain.com” conține trei OU: US, ORDERS, și DISP. În lunile de vară numărul de comenzi primite pentru livrare cresc și managementul a cerut încă un subadministrator pentru departamentul Orders. Subadministratorul trebuie doar să aibă capabilitatea de a crea conturi de utilizatori și de a da utilizatoriilor acces către fișierele și imprimantele departamentului Orders. În loc să creeze un nou domeniu această cerință poate fi atinsă de către subadministrator prin crearea de permisiuni corecte Unități Organizaționale Orders.
Figura II.4.2
II.5.4. Trees
Arborele este o grupare de aranjamente ierarhice a unuia sau mai multor domeni Windows Server 2003, domenii create prin adăugarea unuia sau mai multor domenii copil la un domeniu părinte existent.
Arborele este folosit pentru a defini modul în care sunt repartizate obiectele și containerele în ierarhie. Un arbore are puncte terminale și noduri (puncte de ramificare). Punctele terminale sunt, de regulă, obiecte, în timp ce nodurile sunt containere. Un arbore este un spațiu de nume contiguu.
Figura II.4.3
II.5.5. Domenii
Unitatea de bază a structurii logice în Active Directory este domeniu, care poate memora milioane de obiecte. Obiectele memorate într-un domeniu sunt acele obiecte considerate interesante rețelei. Obiecte interesante sunt itemuri de care membrii interconectați în rețea au nevoie: imprimante, documente, adrese e-mail, baze de date, utilizatori, componente distribuite și alte resurse. Toate obiectele unei rețele sunt incluse în cadru unui domeniu, și fiecare domeniu memorează informații doar despre obiectele care le conține. Active Directory este construit pentru unul sau mai multe domenii. Un domeniu se poate întinde pe una sau mai multe locații fizice.
Termenul „domenii”, dacă este folosit în contextul directorului activ, se referă la o unică limită de securitate într-o rețea Windows Server 2003. Termenul „domenii" poate fi folosit chiar interschimbabil în cazul referirii la domenii atât din Windows NT, cât și din Windows Server 2003, însă aici se termină toate asemănările și încep deosebirile.
În primul rând, metoda prin care sunt reproduse datele în cadrul domeniului și între domenii este total diferită sub Windows Server 2003. Crearea propriu-zisă a domeniului nu mai este la fel, iar prin Active Directory s-a modificat și modul de gestionare a conținutului domeniului, acesta fiind îmbunătățit.
Active Directory este format din mai multe domenii, fiecare domeniu având propria să politică de securitate și relație cu alte domenii. Chiar dacă firma dumneavoastră are mai multe clădiri, puteți totuși să creați un singur domeniu.
Existența mai multor clădiri nu implică necesitatea existenței mai multor domenii.
Arbori de domenii
Ușurința în gestionarea mediului de rețea prin Active Directory se datorează în parte ierarhiei create de serviciul de directoare. Dacă aveți un director activ format din mai multe domenii, va fi creat un arbore de domenii. Arborele de domenii permite îmbunătățirea structurii directorului activ prin desfășurarea resurselor de rețea folosind o schemă mai logică, domeniile care fac parte din arbore fiind incluse toate într-o schemă comună. Domeniile vor avea și o configurație comună și vor forma un spațiu de nume contiguu.
Păduri de domenii
În secțiunea precedentă, s-a arătat că arborele de domenii reprezintă acele domenii din Active Directory care au aceeași schemă și configurație și creează un spațiu de nume contiguu. Pădurile de domenii, pe de altă parte, sunt acei arbori de domenii care nu formează un spațiu de nume contiguu. Aceste domenii au aceeași schemă și configurație, dar se deosebesc prin spațiul de nume. Atât arborii de domenii, cât și pădurile de domenii partajează același catalog global. Catalogul global păstrează informații privitoare la fiecare obiect dintr-un arbore.
II.5.6. Spațiul de nume
Serviciul de directoare rulat pe un server UNIX sau serviciul de directoare care face parte din Netscape Suitespot este un spațiu de nume; la fel este și Active Directory. Spațiul de nume este o zonă delimitată în care poate fi atribuită o denumire unui obiect sau unor informații din serviciul de directoare. Spațiul de nume format în Active Directory permite alocarea denumirii obiectului propriu-zis.
Spațiul de nume Active Directory se bazează pe sistemul de denumiri DNS.
Există două tipuri de spații de nume:
– contigue
– disjuncte
Într-un spațiu de nume contiguu, numele obiectului copil conține întotdeauna denumirea domeniului părinte. În figura 5.1, obiectul descendent, hr.mycompany.com, conține denumirea domeniul părinte, mycompany.com.
Într-un spațiu de nume disjunct, între denumirile unui obiect părinte și cea a unui descendent din același obiect părinte nu Există o relație directă.
Nume
Directorul activ este format din obiecte, iar fiecare obiect are un nume. Există două tipuri de nume:
– nume distinctiv (DN)
– nume relativ distinctiv (RDN).
Figura II.4.4.
Numele distinctiv
Fiecare obiect din Active Directory are un nume distinctiv (DN). Dacă citiți numele distinctiv de la început până la sfârșit, veți putea obține o cale de acces completă a obiectului prin ierarhia containerului. Numele distinctiv (DN) conține aceste informații complete, precum și domeniul în care se găsește obiectul.
De exemplu, într-un obiect utilizator, dacă numele utilizatorului este Nadia Malik, iar obiectul se găsește în componenta domeniu (DC) XYZ, numele distinctiv va fi j . . i ii CD=Nadia Malik,CN=USERS,DC=XZY,DC=COM
În acest caz, puteți înțelege că Nadia Malik este un obiect utilizator din domeniul XYZ.COM.
Nume relativ distinctiv
Numele relativ distinctiv (RDN) al unui obiect permite deosebirea obiectului de alte obiecte create pe același nivel din Active Directory. De asemenea, cunoscând numele RDN al unui obiect, puteți știi partea din nume care este un atribut al obiectului propriu-zis. În exemplul anterior, am prezentat numele DN pentru utilizatorul Nadia Malik; continuând acest exemplu, numele RDN pentru obiectul Nadia Malik ar fi CN=USERS.
Observație: Toate numele distinctive trebuie să fie unice în directorul lor, iar numele relativ distinctive trebuie să fie unice în unitatea organizatorică (OU). De exemplu, dacă definiți o imprimantă și îi atribuiți numele Accounting, nu ar fi posibil să definiți altă imprimantă la același nivel din arborele Active Directory.
II.5.7. Partiții
Active Directory este format din unul sau mai multe contexte de nume, sau partiții. O organizație este formată din mai multe partiții. Când proiectați directorul activ, trebuie să aveți în vedere numărul de partiții pe care îl creați.
Existența mai multor partiții nu reprezintă o problemă atâta timp cât aveți nevoie de toate. Însă este bine să creați încă o partiție numai dacă acest lucru se justifică din punct de vedere administrativ. În caz contrar riscați să vă încurcați în numeroasele domenii, coșmarul de care ați crezut că veți scăpa după Windows NT.
În cele din urmă, trebuie să nu uitați că este bine să alegeți momentul de creare a unei partiții și când aceasta nu se justifică. Partiționarea vă poate ajuta să reduceți solicitarea controlerelor de domeniu, existența unui director activ format din milioane de obiecte conducând în cele din urmă la probleme de performanță legate de serviciul de directoare.
II.5.8. Situri
Spre deosebire de domenii, siturile sunt determinate geografic. Siturile controlează replicarea informațiilor de domeniu. Replicarea în cadrul sitului se face prin apelul de procedură de la distanță (RPC). Dacă aveți mai multe situri, puteți să configurați replicarea prin RPC, SMTP și orice alte protocoale de transport recunoscute de Exchange.
Este important de notat că situl este o regiune din rețea în care există o conectivitate de bandă extinsă între servere. În privința șirurilor, Microsoft definește lățimea de bandă ca viteză a plăcilor Ethernet (peste 10 milioane de biți per secundă). Cu alte cuvinte, între servere trebuie să existe o conexiune sigură și rapidă. Siturile sunt folosite și pentru determinarea apropierii resurselor.
Când un utilizator încearcă să deschidă o sesiune de lucru, detectorul controlerului de domeniu va încerca să găsească un server cu Active Directory în aceeași sub-rețea în care se află și utilizatorul. Controlerul de domeniu poate determina subrețeaua utilizatorului din informațiile protocolului IP al calculatorului client. Trebuie să creați câte un sit pentru fiecare parte a rețelei care este separată de o legătură lentă, de pildă în cazul routerelor multiple. Legăturile lente pot afecta în mod serios replicarea și autentificarea.
II.5.9. Interfețele ADSI (Active Directory Services Interface)
Pentru a ușura viața atât programatorilor, cât și administratorilor în privința realizării instrumentelor și aplicațiilor necesare pentru serviciul de directoare, Microsoft a creat interfețele pentru serviciile directorului activ (ADSI). Interfețele ADSI sunt un nou și puternic set de interfețe de programare a aplicațiilor (API) care asigură funcționalitatea directorului activ.
Programatorii pot folosi limbajele C sau C++ pentru a creea aplicații puternice. Astfel, poate fi creată o aplicație care să preia informații nu numai din Active Directory, ci și din serviciile de directoare din Windows NT 4.x, Novell NetWare 4.x, IntraNetWare și orice alt serviciu de directoare compatibil cu protocolul LDAP.
Administratorii pot folosi Visual Basic ca limbaj pentru scripturi ca să creeze o aplicație pentru preluarea informațiilor despre șirurile de lucrări pentru tipărire. Este posibilă scrierea unei aplicații pentru adăugarea utilizatorilor în Active Directory, pentru încărcarea de informații cu privire la directoare sau chiar pentru crearea unei copii de siguranță a unei baze de date.
Pot fi scrise foarte multe tipuri de aplicații și instrumente. Totul depinde de nevoile firmei și de capacitatea programatorului.
LDAP
Protocolul principal din Active Directory este LDAP (Lightweight Directory Access Protocol). Microsoft a dorit să realizeze pentru Active Directory un grad maxim de compatibilitate cu standardele existente. Cu cât îi va fi mai ușor unui administrator de rețea să găsească informațiile din Active Directory, cu atât mai mare va fi aprecierea administratorului respectiv față de Windows Server 2003. Având în vedere acest lucru, Microsoft a proiectat directorul activ în așa fel încât să devină un server LDAP nativ încă de la început. Pentru a asigura compatibilitatea maximă cu protocolul LDAP, Active Directory a fost proiectat să expună cele mai multe facilități prin interfețe LDAP, în acest fel asigurând o integrare mai ușoară în aplicațiile compatibile LDAP.
X.500
Modelul de informații Active Directory este derivat din modelul de informații X.500.
Microsoft nu a preluat însă decât cele mai bune caracteristici ale standardului X.500 și a evitat punctele slabe ale acestuia. De exemplu, Microsoft nu a integrat întregul set de protocoale X.500. Pentru Active Directory, Microsoft nu a preluat următoarele protocoale de comunicare definite de standardul X.500:
DAP – Direct Access Protocol
DSP – Directory System Protocol
DISP – Directory Information Shadowing Protocol
DOP – Directory Operașional Binding Management Protocol
Aceste protocoale nu au fost incluse din mai multe motive, inclusiv lipsa acceptării și integrării lor generale. Având în vedere nesiguranța în privința acestor standarde, LDAP este mult mai eficient în realizarea operațiilor specifice protocoalelor DAP și DSP
II.6. Administrarea flexibilă
Numai utilizatorii autorizați pot administra directorul activ. Operațiile pentru care utilizatorul este autorizat sunt controlate prin delegarea administrării. Delegarea administrării este metoda introdusă prin modelul Active Directory pentru controlarea accesului utilizatorilor la directorul activ când sunt efectuate acțiuni asupra unui anumit set de obiecte și a claselor de obiecte. Procesul propriu-zis care controlează stocarea fizică în director se numește Directory System Agent (DSA).
II.7. Modelul de date standardizat
Chiar dacă Directorul Activ folosește în principal standardul și protocolul LDAP el are încă legături cu standardul X.500. De fapt, protocolul LDAP a fost derivat din modelul serviciului de directoare X.500. Protocolul LDAP nu este altceva decât o versiune simplă a ceea ce unii consideră a fi un standard deosebit de complex pentru serviciile de directoare, în cazul modelului directorului activ, acesta este derivat din modelul de date X.500. Active Directory este format din obiecte care pot reprezenta diferite entități – utilizatori, aplicații, imprimante ș.a.m.d. Aceste obiecte sunt descrise prin atribute.
II.8. Modelul de securitate detaliat
Accesul la directorul activ este controlat de listele pentru controlul accesului (ACL-uri). Dacă un utilizator încearcă să citească sau să scrie în directorul activ, o va putea face numai în condițiile indicate de ACL-uri. Directorul activ face el însuși parte din Baza de operare prin relații de încredere din Windows Server 2003 și este partea principală a infrastructurii generale de securitate din Windows Server 2003.
II.9. Facilitățile directorului activ
Directorul activ prezintă numeroase avantaje și are multe facilități care îl deosebesc de alte servicii de directoare. Ca administrator al directorului activ trebuie să vă familiarizați cu aceste facilități pentru a putea beneficia de ele.
Înțelegerea posibilităților oferite de directorul activ (Active Directory) vă va permite să proiectați o schemă mai bună, să o integrați mai eficient cu orice servicii de directoare existente în rețeaua dumneavoastră și să o scalați mai eficient, toate acestea în timpul păstrării performanțelor directorului activ.
II.10. Integrarea în DNS (Domain Name Service)
Serviciul de nume al domeniului (DNS) este spațiul de nume distribuit folosit în Internet. Serverele DNS sunt o parte integrantă a Internet-ului. Fără ele, nimeni nu ar putea să se deplaseze în Internet fără să scrie o adresă TCP/IP pentru fiecare adresă pe care ar dori să o viziteze. Principiul care stă la baza serviciului DNS este rezoluția numelor. Când scrieți adresa unei pagini de Web în browserul pe care îl folosiți, serverul DNS din rețeaua dumneavoastră sau a furnizorului de servicii Internet va converti adresa paginii de Web într-o adresă TCP/IP. Spațiul de nume al directorului activ se bazează pe serviciul DNS.
Prin perfecta integrare a serviciului DNS în Active Directory, Microsoft le oferă administratorilor de rețea și posibilitatea de conectare a serverelor Active Directory direct la Internet.
II.11. Scalabilitatea
Factorul de scalabilitate al oricărui serviciu de directoare poate fi un element decisiv pentru administratorii rețelelor de firmă. Dacă administratorii consideră că sunt îngrădiți prin lipsa scalabilității, nu au altă posibilitate decât să găsească un serviciu de directoare alternativ, adică un sistem de operare pentru rețea alternativ. Din acest motiv, scalabilitatea directorului activ este o caracteristică importantă a programului Windows Server 2003.
Mărimea sau anvergura unui serviciu de directoare constituie doar unul din factorii scalabilității sale. Alți factori sunt:
– Cât de bine funcționează când serviciul de directoare își mărește dimensiunile. De exemplu, când un utilizator caută în Active Directory un obiect, trebuie să o poată face rapid în întreaga partiție, fără o întârziere sesizabilă.
– Capacitatea de a crea replici complete ale informațiilor de partiție. Aceasta este esențială pentru redundanță. Serverele de directoare trebuie să poată răspunde în cazul căderii altor servere de directoare din rețea, astfel încât utilizatorii să nu sesizeze nici o deosebire când apar defecțiuni în rețea.
Capacitatea de a crea un catalog de sub seturi ale unor partiții individuale.
Când serviciul de directoare devine mare, este nepractică replicarea integrală într-un singur loc a informațiilor din mai multe partiții ale serviciului de directoare.
Active Directory îndeplinește toate aceste condiții. Când lucrați într-un mediu cu mii de obiecte, puteți să efectuați căutări mult mai eficiente în directorul activ, deoarece toate informațiile despre obiectele respective sunt indexate. Dacă aveți în rețea mai multe servere Active Disectory și unul din acestea se defectează, toate informațiile vor rămâne intacte, deoarece replicarea partițiilor poate fi făcută între toate serverele. Nu există nici un risc de pierdere a datelor sau de întârziere la autentificare.
O partiție Active Directory are capacitatea de stocare pentru milioane de obiecte. În mod realist însă o astfel de configurație nu ar fi deloc practică și ar fi un coșmar din punct de vedere al administrării, indiferent cât de bun ar fi Active Directory. Crearea mai multor partiții conduce la apariția necesității stocării informațiilor din toate aceste partiții într-un singur loc. Însă crearea unui singur centru cu informații despre mai multe partiții nu este foarte eficientă. De aceea este nevoie de un catalog global. Active Directory are capacitatea de a crea un catalog global în care să fie stocat un subset de informații din toate aceste partiții.
După cum afirmă Microsoft, Active Directory poate fi scalat la milioane de obiecte per partiție. Adevăratele posibilități ale directorului activ nu vor fi descoperite decât cu timpul.
II.12. Catalogul global
Catalogul global este atât un serviciu, cât și un centru fizic de stocare. Informațiile despre obiectele dintr-un arbore sau dintr-o pădure se găsesc în catalogul global. Însă, în catalogul global sunt stocate numai acele atribute care sunt cel mai des folosite în timpul căutărilor, de pildă numele de conectare, numele de familie al utilizatorului, prenumele lui ș.a.m.d. De exemplu, dacă un utilizator are permisiunea de acces la un obiect cum ar fi un calculator, va putea efectua căutări pentru toate calculatoarele care au definite partajări publice.
Aceste informații sunt actualizate în permanență prin procesul de replicare normală. Dacă nu s-ar folosi catalogul global, replicarea ar trebui făcută între domenii și controlerele lor de domeniu. În locul unui proces care ar risca să afecteze performanțele rețelei din cauza traficului de replicare, replicarea informațiilor din domenii numai în catalogul global este mult mai eficientă, deoarece permite localizarea obiectelor în orice loc din rețea.
Catalogul global este creat în primul controler de domeniu când instalați Active Directory. Acest server va fi cunoscut și ca server al catalogului global. Nu este necesar ca toate controlerele de domeniu din rețea să fie servere de catalog global, ci numai acelea desemnate de dumneavoastră să conțină catalogul global vor îndeplini această funcție. Numărul serverelor de catalog global pe care le veți desemna depinde de structura rețelei și de viteza cu care vrețI să aibă loc replicarea. Există un aspect pozitiv și unul negativ legat de numărul serverelor de catalog global pe care le desemnați. Dacă realizați prea multe cataloage globale, traficul din rețea generat de replicarea dintre serverele de catalog general ar putea satura rețeaua. Însă, cu cât veți avea mai multe servere de catalog global, cu atât mai rapid va fi răspunsul la solicitările utilizatorilor.
Sfat: Primul server de catalog global pe care îl veți crea va putea controla sute de mii de obiecte. Însă, dacă aveți mai multe situri separate prin legături WAN, trebuie să creați un server de catalog global în fiecare site.
Figura II.5.
II.13. Replicarea multimaster
Unul din punctele slabe ale serviciului de directoare din Windows NT l-a reprezentat modul de realizare a replicării. Pe măsură ce creștea dimensiunea domeniului din Windows NT, replicarea și autentificarea aveau de suferit. Metoda de replicare folosită în mediul Active Directory se numește replicare multimaster. În acest caz, modificarea operată într-un exemplar al directorului este reprodusă în mod automat în toate celelalte exemplare ale directorului. În această variantă de replicare nu se folosește noțiunea de master-slave, deci nu este necesar ca modificările să fie efectuate mai întâi în master, după care să fie reproduse în exemplarele de rezervă.
Dacă există mai multe exemplare ale directorului și replicarea se face între mai multe servere, cum puteți ști care este exemplarul cel mai recent Active Directory folosește numere de succesiune a actualizărilor (USN, Update Sequence Number) pentru a ține evidența modificărilor operate în director. De exemplu, dacă actualizați atributele pentru un obiect utilizator, obiectului respectiv îi este alocat un USN. USN-ul este înregistrat în toate calculatoarele și este incrementat de fiecare dată când se efectuează o modificare a obiectului.
O parte din procesul de replicare implică stocarea în fiecare calculator a unui exemplar al directorului care monitorizează modificările celorlalte. Partenerii de replicare se vor informa reciproc despre modificările ulterioare ultimului USN primit. Calculatorul care va primi interogarea cu privire la modificări va căuta și va compara USN-ul deținut cu cele prezentate de calculatorul care solicită informații despre modificări.
Replicarea multimaster are două avantaje importante: viteza replicării și autentificării, și redundanța. Deoarece nu este necesară așteptarea actualizării mai întâi a exemplarului master, replicarea se poate face imediat. Dacă unul din servere ar cădea, clienții din rețea nu ar fi afectați de întârzierile de autentificare. Nu mai este necesară promovarea unui controler de domeniu de siguranță în rolul de controler de domeniu principal. Autentificarea și replicarea pot fi efectuate în continuare fără întârzieri, deoarece orice controler de domeniu poate răspunde solicitărilor clienților.
Figura II.6
II.14. Compatibilitatea cu standardele uzuale
Microsoft dorește să impună directorul activ ca serviciu de directoare capabil de utilizare în rețele foarte mari. Pentru a reuși acest lucru, Active Directory trebuie să recunoască standardele care s-au impus deja. Dacă Microsoft ar fi încercat să creeze un nou standard sau nu ar fi realizat compatibilitatea, ar fi riscat să piardă clienții cu servicii de directoare uzuale și ar fi fost catalogată în continuare ca „durul" industriei de software.
DNS
În condițiile în care Windows Server 2003 recunoaște noul standard Dynamic DNS, integrarea serverelor DNS a devenit și mai ușoară. Administratorii nu mai trebuie să realizeze actualizarea manuală a serverelor DNS. După cum am menționat mai devreme, spațiul de nume Active Directory are la bază serviciul DNS, ceea ce i-a permis firmei Microsoft să integreze perfect Directorul Activ în sistemul numelor de domeniu (DNS), facilitând în acest fel comunicarea clienților Active Directory cu clienții din Internet.
II.15. Securitatea
Integrarea securității distribuite din Windows Server 2003 în Active Directory îi permite directorului activ să gestioneze mai eficient rețeaua de calculatoare. Active Directory permite realizarea unui sistem de gestionare scalabil și flexibil a conturilor din domenii extinse. De asemenea, această integrare în sistemul de securitate distribuită al mediului Windows Server 2003 oferă avantajul suplimentar al controlului exact al accesului și posibilitatea delegării administrării.
II.15.1. Protejarea obiectelor
Fiecare obiect din directorul activ este protejat prin listele de control al accesului – ACL (Access Control List). Nici un utilizator nu poate citi, scrie sau obține un alt gen de acces la obiect dacă listele ACL nu permit acest lucru. Este posibil chiar să impuneți ca un utilizator să nici nu poată vedea un obiect, astfel încât din punctul de vedere al utilizatorului, obiectul respectiv nici nu există. Listele ACL se găsesc în directorul activ ca valori binare, sub denumirea descriptori de securitate.
ACL-urile sunt liste cu intrări pentru controlul accesului (ACE, Access Control Entry). ACE-urile sunt înregistrate împreună cu, obiectul pe care îl protejează. Scopul ACE-urilor este acela de a înregistra informațiile referitoare la tipul de acces pe care îl acordă sau îl interzice, precum și despre utilizatorul sau grupul la al cărui acces se referă. Fiecare utilizator sau grup este identificat printr-un număr de securitate (SID, Security Identifier), care este înregistrat tot în ACE-uri.
Această metodă de utilizare a ACL-urilor și ACE-urilor permite controlul exact al accesului, despre care am amintit în secțiunea anterioară. Este posibilă delegarea nu numai a utilizatorilor care pot vedea un anumit obiect, ci și a proprietăților obiectului pe care le pot vedea. De exemplu, puteți permite accesul tuturor pentru a vedea data de angajare a tuturor angajaților pentru obiectele utilizator. Puteți însă să interziceți accesul la atributul dată de angajare pentru grupul persoanelor din conducerea superioară.
II.15.2. Delegarea drepturilor
În cazul în care aveți o rețea foarte mare, veți avea de controlat mii de utilizatori. Folosirea unui singur administrator de domeniu care răspunde de administrarea tuturor utilizatorilor este de neacceptat și în orice caz nerecomandabilă. În versiunile anterioare ale programului Windows NT, era posibilă delegarea drepturilor de utilizator puternic anumitor utilizatori de domeniu. Aceasta permitea delegarea autorității unora din utilizatori; însă, în majoritatea cazurilor, rezultatul era atribuirea unei puteri prea mari unei singure persoane.
În Active Directory, este posibilă delegarea drepturilor de administrare pentru containere și subarbori unor utilizatori individuali sau unor grupuri.
De exemplu, dacă aveți o unitate organizatorică (OU) pentru departamentul de Cercetare-Dezvoltare și ați dori să atribuiți utilizatorului Alan Jones drepturile de administrare pentru această unitate organizatorică, ați putea să delegați autoritatea utilizatorului Alan Jones. ACE-urile pentru alte obiecte i-ar interzice lui Alan Jones accesul la alte unități organizatorice.
II.15.3. Moștenirea drepturilor
Capacitatea unui obiect copil dintr-un container de a moșteni drepturile părintelui său din același container este asigurată de moștenire.
Instrumente de administrare
Există două metode principale de realizare a operațiilor administrative în Active Directory. Directorul activ are o puternică interfață cu utilizatorul. Este posibilă afișarea ierarhică a obiectelor, astfel încât să reproducă structura firmelor mari. Mai mult, poate fi folosită metoda tragere și plasare (drag-and-drop). Administratorul poate fuziona arbori prin simpla tragere cu mouse-ul (vor fi afișate casete de dialog pentru a confirma acțiunea). Interfața cu utilizatorul a directorului activ este un instrument foarte puternic, ușurându-i munca administratorului.
Cealaltă metodă de realizare a operațiilor administrative implică folosirea opțiunii de scriptare din Active Directory. Scripturile pot fi create fie în Visual Basic, fie în Java. Tot ceea ce poate fi realizat prin interfața cu utilizatorul, poate fi realizat și prin scripturi.
II.16. Configurația serviciului Active Directory
Serviciile Active Directory din Windows Server 2003 sunt o listă completă cu obiectele din cadrul unei organizații sau al unei unități organizatorice (OU). Active Directory încearcă să pună aceste obiecte la dispoziția utilizatorilor, folosind standardul de Internet pentru atribuirea numelor în sistem ierarhic, cunoscut sub denumirea de DNS (Domain Name System).
Obiectivul acestui capitol este de a prezenta Configurația directorului activ ca o analogie la modelul de domeniu din NT4 și cum poate fi folosit serviciul Active Directory după ce a fost creat.
Aspecte legate de configurație
Iată acum un sfat foarte util în cazul tranziției la serviciile Active Directory: Fără panică!
In timpul procesului de tranziție vă puteți opri în orice moment doriți. Windows Server 2003 și Active Directory sunt compatibile înapoi cu domeniile NT 4.x și NT 3.x.
La stația de lucru Windows Server 2003 Professional. Deocamdată, veți avea suficient de lucru cu serverele.
Procesul de tranziție este transparent pentru toți utilizatorii din rețea. Ei nu vor sesiza nici una din modificările infrastructurii decât dacă veți dori dumneavoastră. Acest lucru este ceva bun, deoarece puteți să testați în voie rezultatele tranziției, ceea ce vă va oferi mai mult timp pentru a instrui utilizatorii. Puteți să le permiteți utilizatorilor accesul la noile facilități numai atunci când veți fi pregătit pentru aceasta.
II.17. Modelarea unei ierarhii de container pentru organizație
Domeniile din Windows Server 2003 pot fi organizate într-un arbore de domeniu ierarhic. Ierarhia de container creată în Active Directory este intuitivă și solidă. Structurile logice și fizice sunt separate în terminologia Active Directory. Ca atare, puteți să creați o ierarhie care să fie foarte inteligibilă pentru utilizatori. Topologia rețelei nu trebuie să fie cunoscută utilizatorului. Prin folosirea relațiilor de încredere tranzitive ale arborelui de domeniu, orice obiect (sau resursă) din domeniu se va afla la dispoziția utilizatorului, dacă acesta va avea permisiunile necesare (vezi figura 10.3). Utilizatorul poate folosi în Active Directory comenzi de interogare de genul:
„Găsește un director partajat care conține module de corecție create de Departamentul Tehnic" sau „Găsește o imprimantă color în sediul din San Francisco".
Deci, un utilizator din domeniul San Francisco poate obține accesul la obiecte din domeniul Philadelphia, precum și din domeniul Sydney. De asemenea, dacă există permisiunile necesare și sunt folosite relațiile de încredere din sistemul de securitate Kerberos, domeniul Tahiti va avea acces la domeniul Philadelphia.
Modelele de domeniu din Windows NT sunt:
– domeniu unic
– domeniu principal
– domenii principale multiple
– de încredere total
II.18. Folosirea instrumentelor din Active Directory
Ca și în cazul altor instrumente administrative, instrumentele din Active Directory sunt controlate din Consola de Control Microsoft (MMC), iar pentru a ajunge la ele trebuie să executați clic pe Start, Programs și Administrative Tools. Principalele instrumente de lucru în Active Directory sunt:
– Active Directory Users and Computers
– Active Directory Domains and Trusts
– Active Directory Sites and Services
Instrumentul Active Directory Users and Computers
Active Directory Users and Computers va fi cel mai util și mai utilizat instrument din categoria instrumentelor Active Directory. Modulul de extensie Active Directory Users and Computers al consolei MMC înlocuiește funcționalitatea componentelor User Manager și Server Manager din NT4 (vezi figura 10.6).
Componenta User Manager din Windows NT 4.0 avea o evidență numai după denumirea contului utilizatorului, a numelui complet al utilizatorului, a parolei și a unei scurte descrieri a utilizatorului. Serviciul Active Directory din Windows Server 2003 permite acum înregistrarea unei serii de date facultative pentru contactarea utilizatorului, cum ar fi numele superiorului acestuia, departamentul, denumirea postului, adresa de e-mail, numărul de telefon și altele (vezi figura 10.7).
O altă facilitate suplimentară a serviciului Active Directory din Windows Server 2003 este posibilitatea creării grupurilor de utilizatori. Prin noua versiune a programului Microsoft Exchange este posibilă folosirea grupurilor de utilizatori ca liste de distribuție. Ca și când asta n-ar fi fost suficient, conturile de e-mail pot fi adăugate într-un grup chiar dacă utilizatorii nu sunt membrii aceluiași serviciu Active Directory. Acestea sunt niște facilități foarte utile pentru firmele foarte mari, care au clădiri separate. Persoanele pot fi incluse în aceleași liste de distribuție chiar dacă nu sunt în același domeniu. De exemplu, se poate crea un grup de domeniu „Manageri regionali" pentru a se putea acorda anumite permisiuni de acces atât managerilor din sectorul Philadelphia, cât și celor din sectorul San Francisco și a-i putea include în lista de distribuție din Microsoft Exchange.
Spre deosebire de NT4, care folosea două tipuri de grupuri (globale și locale), Windows Server 2003 folosește trei tipuri de grupuri:
– universal
– global
– de domeniu local
Grupurile universale pot conține utilizatori și grupuri globale sau universale din orice punct al Pădurii. Grupul universal poate fi considerat „un nou grup global”, dar cu posibilitatea de a cuprinde mult mai mulți utilizatori și mult mai multe grupuri. Grupurile universale sunt reproduse în afara domeniului și sunt plasate în catalogul global.
Grupurile globale pot conține numai membri din domeniile lor, adică utilizatori din domeniul local și grupuri locale. Funcționalitatea grupurilor globale nu s-a modificat prea mult față de NT4, cu excepția faptului că acum sunt plasate în catalogul global (dar ele rămân membre numai în domeniile lor) și că pot conține acum și alte grupuri.
Grupurile de domeniu local sunt limitate la domeniile lor din punctul de vedere al permisiunilor acordate în listele ACL, dar ele pot conține utilizatori și grupuri din alte domenii. Acești utilizatori și aceste grupuri nu sunt listate în catalogul global și nu sunt reproduse în afara domeniului.
Conturile calculatoarelor care sunt adăugate într-un domeniu sunt listate în mod automat în Active Directory, dar aveți și posibilitatea să efectuați adăugarea manuală a acelor calculatoare care nu sunt incluse în sistemul de securitate Windows Server 2003. De exemplu, în figura 10.8 a fost deja creat un obiect calculator pentru calculatorul Macintosh al utilizatorului Joe, la care adăugăm un calculator Sun Solaris.
CAPITOLUL III.
Crearea și gestionarea conturilor de utilizator
Flexibilitatea sistemului de operare Windows Server 2003 vă oferă posibilitatea de a-l folosi pentru a juca roluri diferite în cadrul rețelei. Rolul pe care îl veți alege pentru server va determina metoda de creare a utilizatorilor și grupurilor și modul de gestionare a obiectelor respective. De exemplu, dacă optați pentru a folosi Windows Server 2003 numai ca server de aplicații, nu va trebui neapărat să vă ocupați de crearea unui utilizator în Active Directory, mai ales dacă pentru serviciile de fișiere și tipărire și pentru serviciile de directoare veți folosi un alt sistem de operare pentru rețea, cum ar fi NetWare, însă, dacă Windows Server 2003 este folosit ca sistem de operare al rețelei dumneavoastră și veți dori să folosiți serviciile Active Directory, metoda de creare a utilizatorilor și grupurilor va fi diferită, deoarece va trebui să lucrați cu utilizatori care fac parte din domeniu.
O altă problemă o constituie deosebirea dintre folosirea instrumentelor pentru crearea și gestionarea utilizatorilor și înțelegerea implicațiilor modificărilor pe care le executați. În acest capitol vom recapitula conceptele principale legate de crearea utilizatorilor și grupurilor într-un server Windows Server 2003, adică:
– convențiile pentru denumire și parole
– schemele de protejare prin parolă
– controlul mediului utilizator
– grupurile locale și grupurile de domeniu
– când trebuie create grupuri
– acordarea de permisiuni pentru grupuri și utilizatori
III.1. Conturile de utilizator
Pentru ca un utilizator (sau chiar anumite aplicații) să poată obține accesul la obiectele din sistemul de operare Windows Server 2003, trebuie să aibă un cont de utilizator. Windows Server 2003 vă oferă posibilitatea să creați două tipuri de conturi:
– de utilizator local
– de domeniu
Contul de utilizator local este creat în baza de date a sistemului de securitate al serverului, cunoscută și sub denumirea de bază de date a sistemului de securitate local.
Când un utilizator deschide o sesiune de lucru în server la nivel local, datele utilizatorului vor fi comparate cu cele din baza de date a sistemului de securitate local pentru a autentifica utilizatorul.
Figura III.1.
Contul de domeniu este creat ca unitate organizatorică în Active Directory. Când un utilizator încearcă să deschidă o sesiune și să obțină accesul la o resursă de rețea, datele utilizatorului vor fi comparate cu cele din Active Directory pentru a i se verifica autenticitatea.
Figura III.2
III.1.1. Utilizatori predefiniți (impliciți)
La instalarea sistemului de operare Windows Server 2003, trebuie să existe câteva nume de utilizator pentru a-i permite funcționarea. Windows Server 2003 creează două conturi în mod automat:
– Administrator
– Guest
Când instalați Windows Server 2003 și optați pentru instalarea unor servicii de rețea, cum ar fi Terminal Services, veți observa că vor fi create conturi de utilizator și pentru aceste servicii. Ca administrator, trebuie să cunoașteți întotdeauna conturile care sunt create în mod automat de program, astfel încât să nu ștergeți vreun cont pe care nu-1 recunoașteți și să vă mirați apoi de ce nu puteți executa copii de siguranță. În cazul altor aplicații, este posibil să aveți opțiunea de creare a contului de utilizator în timpul instalării aplicației. De exemplu, un program pentru copii de siguranță produs de altă firmă pentru rularea sub Windows Server 2003 vă poate întreba dacă pentru realizarea copiilor de siguranță doriți crearea unui cont de utilizator sau folosirea unuia existent.
Contul Administrator
Singurul scop în crearea acestui cont este instalarea și administrarea sistemului, având un control total asupra tuturor obiectelor din sistem. Contul Administrator nu poate fi șters dar poate fi redenumit.
Contul Administrator nu trebuie folosit de nimeni pentru executarea activităților cotidiene de utilizator, care ar conduce la crearea de breșe în sistemul de securitate și distrugerea accidentală a sistemului. Se recomandă redenumirea acestui cont (chiar dacă aceasta este foarte rar făcută), deoarece utilizatorii care doresc să intre în sistem vor folosi acest cont pentru că știu despre existența lui. Când un hacker încearcă să penetreze sistemul de securitate, trebuie să rezolve două probleme: aflarea numelui de cont și a parolei. Dacă lăsați contul de administrator nemodificat, jumătate din problemă este rezolvată. E o ușă care n-ar trebui deschisă!
Contul Guest
Acest cont este o reminiscență din unele sisteme gazdă multiutilizator ceva mai mari. Contul Guest este creat pentru a fi folosit pentru o scurtă perioadă de timp de un vizitator al unor servicii publice generale.
Contul Guest este dezactivat în Configurația prestabilită și eu vă sugerez să îl lăsați așa din cauza aceluiași pericol (care nu are însă aceeași cauză) ca și în cazul contului Administrator. Orice persoană care cunoaște sistemul de operare Windows Server 2003 va ști că sistemul creează în mod automat un cont Guest. Pentru un hacker, acesta nu reprezintă decât un alt instrument pe care îl poate folosi în încercarea de a penetra sistemul. Chiar dacă nu va reuși să facă mare lucru având numai privilegiile de vizitator, pentru un hacker aceasta este ceva mai bine decât nimic. Acest cont poate fi redenumit, însă nu și șters.
III.2. Crearea grupurilor
Pentru a simplifica gestionarea utilizatorilor, Windows Server 2003 le permite administratorilor să adune utilizatorii în grupuri și să aloce permisiuni grupurilor respective. Ideea este de a evita modificarea permanentă a drepturilor de acces. Prin crearea unui grup și acordarea de permisiuni pentru întregul grup, administratorul va fi mai eficient.
Microsoft este foarte satisfăcută de întregul concept de folosire a grupurilor; practic, dacă trebuie să dați un test în legătură cu sistemul de operare, trebuie să rețineți că Microsoft consideră că trebuie să nu le alocați aproape niciodată utilizatorilor drepturi în mod direct. Soluția propusă de Microsoft este să includeți utilizatorul într-un grup și să alocați permisiuni grupului respectiv sau să adăugați utilizatorul într-un grup care are deja permisiunile respective. Acest mod de operare poate părea ceva cam restrictiv, dar pe termen lung el vă permite să economisiți timp. Când atribuiți permisiuni unor grupuri în loc să le atribuiți utilizatorilor individuali, beneficiați de o metodă foarte simplă pentru revocarea permisiunilor alocate unui utilizator, prin simpla sa eliminare din grup. Invers, dacă vreți să adăugați noi utilizatori, nu trebuie decât să îi adăugați în grupuri care corespund necesităților lor.
Mulți adimistratori cred că este mai exact să acorde permisiuni utilizatorilor în mod individual. Mai târziu însă este posibil să doriți să dați unui alt utilizator același set de reguli sau resurse. Prin crearea grupurilor și includerea utilizatorilor în acele grupuri aveți posibilitatea să urmăriți mai bine ce permisiuni sunt acordate unui anumit utilizator și puteți interzice aceste permisiuni mai ușor.
III.2.1. Când trebuie creat un grup?
Crearea grupurilor în mediul Windows Server 2003 nu numai că vă permite să organizați mai bine utilizatorii, dar constituie și metoda preferată pentru gestionarea și controlul accesului utilizatorilor la resurse. Ca administrator, trebuie să știți când este necesară crearea unui nou grup și ce calități unice trebuie să aibă grupul respectiv.
Observație: în mediile cu domenii Windows NT, exista posibilitatea adăugării utilizatorilor în grupuri globale și atâta tot. Windows Server 2003 asigură o mai mare flexibilitate în privința tipului și anvergura grupului în care puteți adăuga utilizatori.
Prin comasarea utilizatorilor, acordarea de permisiuni devine mai simplă, iar sarcina administratorilor devine mai ușoară. În continuare prezentăm câteva exemple de situații în care un grup poate face munca administratorului mai ușoară și mai exactă:
– Dacă vreți să partajați o resursă de domeniu, trebuie să creați un grup pe care să îl puteți gestiona și în care să adăugați utilizatori. Resursele de domeniu pot fi partajate cu ajutorul grupurilor și al utilizatorilor din domeniu. Prin adăugarea unor utilizatori individuali din domeniu, se mărește numărul de pași care trebuie efectuați în procesul de creare; mai mult, se mărește și timpul necesar pentru evidența celor care au acces la o resursă. Dacă vreți să eliminați un departament din categoria celor cu permisiuni pentru o resursă, este mult mai simplu să eliminați întregul grup al departamentului, apoi să eliminați utilizatorii individuali.
– Partajarea imprimantelor le permite utilizatorilor să folosească un anumit dispozitiv de tipărire, dar ea este folosită și pentru a-i împiedica pe utilizatori să folosească dispozitivul respectiv. Dacă ați creat o partajare pentru o imprimantă color foarte scumpă, prin crearea unui grup global pentru imprimantă și eliminarea grupului Everyone (Toată lumea) puteți să permiteți numai anumitor grupuri de utilizatori să obțină accesul. De asemenea, dacă doriți să adăugați un utilizator la imprimantă, vă va fi mai ușor să adăugați utilizatorul în grupul imprimantei decât să deschideți permisiunile pentru imprimantă și să adăugați utilizatorul.
– Firmele pot crea grupuri pe baza fișei postului și să acorde permisiuni grupului format din utilizatorii departamentului respectiv. Când un utilizator este mutat dintr-un departament într-altul, administratorul nu trebuie decât să mute utilizatorul dintr-un grup de departament în celălalt.
Cel mai dificil lucru este în aceste situații depășirea tentației de adăugare a unui utilizator în lista cu utilizatori și grupuri care au permisiuni pentru o anumită resursă. Când primiți o solicitare de adăugare a unui utilizator în lista cu utilizatori care au dreptul de a folosi resursa respectivă, trebuie să luați în considerare și implicațiile pe termen lung, și anume dificila muncă necesară pentru a deconecta utilizatorii individuali de la toate resursele pentru care au drepturi în cazul efectuării de modificări.
III.2.2. Tipurile și anvergura grupurilor
Tipurile de grupuri pe care le puteți creea în Windows Server 2003 depind de rolul pe care trebuie să-1 joace serverul. Dacă serverul este un controler de domeniu, tipurile de grupuri vor fi diferite de cele dintr-un server autonom. În cazul unui server autonom, nu puteți să creați decât grupuri locale.
Grupurile locale
Grupurile locale sunt create în baza de date a conturilor locale dintr-un calculator numai cu scopul de gestionare a resurselor locale. Aceste grupuri sunt create pentru accesul și gestionarea resurselor și partajărilor locale. În cazul unui controler de domeniu, nu puteți să creași un grup local, deoarece controlerele de domeniu nu pot avea o bază de date independentă de Active Directory.
Când instalați Windows Server 2003 și Active Directory, utilizatorii pot deveni membri în grupuri de tipuri și anverguri diferite. Cele două tipuri de grupuri sunt:
– grupuri de securitate
– grupuri de distribuție
Există trei niveluri de anvergură pentru fiecare grup:
– global
– de domeniu local
– universal
Grupurile de securitate
Grupurile de securitate sunt folosite de Windows Server 2003 pentru acordarea de permisiuni pentru resursele din Active Directory. Dacă vreți să limitați accesul la o anumită partajare din rețea, o puteți face prin alocarea de drepturi pentru resursa respectivă prin intermediul grupurilor de securitate.
Grupurile de distribuție
Grupurile de distribuție sunt liste folosite de aplicații. Din acest motiv, ele nu pot fi folosite în sistemul de securitate. Grupurile de distribuție pot fi folosite pentru trimiterea simultană de mesaje prin e-mail către toți membrii unui grup.
Observație: Grupurile de securitate pot fi folosite pentru funcții care nu au legătură cu sistemul de securitate. La fel ca în cazul grupurilor de distribuție, puteți să trimiteți mesaje prin e-mail și unui grup de securitate.Desigur, aplicația de e-mail trebuie să recunoască aceste grupuri ca fiind destinatari valabili.
Viitoarele versiuni ale aplicației Microsoft Exchange vor oferi posibilitatea de a trimite mesaje membrilor grupurilor de distribuție și securitate ca și când ar face parte dintr-o listă de distribuție din Microsoft Exchange.
Anvergură globală
Figura III.2.2
Grupurile globale nu permit decât accesul utilizatorilor din domeniul local. Membrii unui grup global pot obține accesul la resursele din orice domeniu. Atunci când trebuie să acordați permisiuni similare utilizatorilor, este cel mai bine să creați un grup global. Anvergura grupului este globală, iar tipul grupului este de securitate.
Anvergură de domeniu local
Membrii unui grup de domeniu local pot proveni din orice domeniu din rețea. Membrii nu au însă acces decât la resursele aflate în domeniul local. Dacă aveți nevoie de accesul la o resursă, dar utilizatorii dumneavoastră se află în domenii diferite, prin includerea lor într-un grup de domeniu local vă va fi mai ușor să administrați drepturile utilizatorilor.
Anvergură universală
Ultimul tip de grup este cel mai indicat pentru alocarea drepturilor la resurse aflate în domenii diferite. Utilizatorii pot provenii din orice domeniu și pot obține acces la resursele din toate domeniile.
III.2.3. Acordarea permisiunilor
După toate aceste discuții despre utilizatori și grupuri, ceea ce interesează este cum pot fi acordate permisiuni pentru resurse și cum pot obține clienții accesul la resurse. Trebuie însă să știți când să adăugați utilizatorii într-un grup global, de domeniu local sau universal. Fiecare situație poate fi suficient de deosebită pentru a fi necesar să alegeți tipul de grup corespunzător prin care să le asigurați utilizatorilor accesul la resursă, fără însă ca prin aceasta să apară complicații pentru dumneavoastră. Să analizăm câteva scenarii de acordare de drepturi care ar putea răspunde necesităților dumneavoastră. Mai exact, să vedem ce trebuie să faceșț în privința utilizatorilor și grupurilor.
Pe parcursul prezentării acestor cazuri, puteți să nu fiți de acord cu soluția propusă; ceea ce doresc însă este să încercați să înțelegeți de ce am ales soluția respectivă. Nu am urmărit să afirm că soluția prezentată este unica posibilă, ci mai degrabă că aceasta este metoda care va putea fi folosită în condițiile create de Microsoft.
Figura III.2.3.
III.2.4. Adăugarea utilizatorilor în grupuri
În calitate de administrator, trebuie să adăugați utilizatorii în tipul de grup corespunzător și să definiți anvergura care să corespundă cel mai bine necesităților.
Folosirea grupurilor (locale) predefinite.
Windows Server 2003 creează în mod automat mai multe grupuri, numărul acestora fiind chiar mai mare în cazul în care optați pentru folosirea unui model cu domenii pentru sistemul de securitate. Grupurile create în mod automat de Windows Server 2003 sunt următoarele:
Administrators
Users
Guests
Grupul Administrators
Grupul Administrators are acces total la întregul sistem și grup de lucru local. Orice utilizator care devine membru al acestui grup beneficiază efectiv de aceleași privilegii ca și contul utilizatorului Administrator.
Grupul Users
Fiecare cont de utilizator din calculatorul Windows Server 2003 devine în mod automat membru al grupului Users. Acest grup este echivalent cu „toți utilizatorii” din sistemul Windows Server 2003. Permisiunile acordate acestui grup sunt cele necesare pentru deschiderea de sesiuni în sistem, pentru rularea aplicațiilor și tipărirea la imprimante.
Grupul Guests
Acest grup predefinit asigură un acces limitat utilizatorilor membri. Grupul este echivalent cu contul de utilizator Guest. Grupul nu poate revoca drepturi, dar, dacă uri utilizator este membru al grupului Guest, de regulă are dreptul de a folosi serviciile publice generale și nimic mai mult.
Grupul Power Users
Pentru membrii acestui grup nu trebuie să țineți o evidență strictă a acțiunilor lor. Ei pot chiar să vă ajute în administrarea sistemului, fără să provoace distrugeri. Membrii grupului Power Users pot crea partajări, conturi și pot chiar să șteargă și să modifice conturile de utilizator pe care le creează. Deosebirea dintre grupurile Power Users și Administrators este că membrii grupului Power Users nu pot modifica sau șterge utilizatorii și resursele care există deja. De asemenea, există anumite privilegii rezervate numai administratorului.
III.2.5. Folosirea grupurilor de domeniu local
Windows Server 2003 va crea grupuri integrate pentru a vă ajuta la administrarea serviciului Active Directory și a controlerelor de domeniu. În continuare vă prezentăm câteva din grupurile de domeniu local create în mod automat de program.
Account Operators
Acest grup de operatori este creat numai în vederea creării, ștergerii și modificării utilizatorilor și grupurilor. Acest grup poate fi privit ca grup de resurse umane pentru administrarea serviciului Active Directory (chiar dacă și obiectele neînsuflețite pot avea conturi). Acest grup este populat adesea de șefii de departament și angajații din departamentul pentru servicii de Internet.
Acest grup nu poate modifica grupurile Administrators și Server Operators
Administrators
Membrii acestui grup pot administra toate resursele din domeniu și controlerele de domeniu. Aveți grijă când adăugați un utilizator în acest grup, deoarece respectivul ar putea declanșa un haos în întreaga rețea.
Print Operators
Gestionarea operațiilor de tipărire poate impune ca persoanele aflate în apropierea dispozitivului de tipărire să aibă control asupra imprimantei. Membrii grupului Print Operators sunt utilizatori care au primit permisiunile necesare pentru controlul și crearea Imprimantelor în controlerele de domeniu.
Observație: Grupurile de operatori sunt create cu permisiunile necesare pentru executarea numai a subsetului de operații care pot fi încredințate unui utilizator pentru a-l elibera pe administrator de ele. Grupurile de operatori sunt Backup Operators, Account Operators, Print Operators și Server Operators. Ele pot fi folosite și pentru a le permite utilizatorilor să administreze propriul lor grup de utilizatori. Acest gen de utilizator este necesar în special în cadrul firmelor mari, cu activitate la nivel național și internațional.
Backup Operators
Acest grup de operatori nu primește decât permisiunile necesare pentru crearea copiilor de siguranță și refacerea sistemului de fișiere și a structurii sistemului. Acești utilizatori pot avea poziții strategice în apropierea unităților pentru copii de siguranță, sau pot fi utilizatori însărcinați cu asigurarea securității datelor unei lucrări. Poanta este că utilizatorii beneficiază de aceste drepturi numai când folosesc programul Windows Server 2003 Backup sau un alt pachet software echivalent.
Server Operators
La fel ca în cazul imprimantelor poate fi nevoie ca și serverele să fie controlate de cineva aflat în apropierea lor, dar care nu trebuie să aibă controlul decât asupra serverului fizic. În acest caz, utilizatorul respectiv trebuie inclus ca membru în grupul Server Operators pentru serverul în cauză. Această schimbare îi permite utilizatorului respectiv să creeze și să șteargă partajări, să gestioneze unitățile de disc ale serverului, să creeze copii de siguranță și să refacă datele distruse și chiar să închidă serverul.
Server Operator nu este un cont care controlează utilizatorii și grupurile. El nici nu poate crea sau gestiona conturile. Membrii acestui grup nu au rolul de a controla un server prin rețea. Rețineți că acest cont este creat pentru a permite rezolvarea problemelor care necesită prezența fizică a unui administrator, nu pentru a facilita managementul conturilor sau managementul de la distanță.
III.2.6. Grupurile globale integrate
Următoarele grupuri sunt grupuri globale integrate, create în mod automat de program:
Domain Admins
În acest grup global sunt incluși în mod automat administratorii din serverele Windows Server 2003 create în domeniu. Acest cont este efectiv administratorul întregului domeniu. Primul său membru este contul Administrator.
Domain Users
Windows Server 2003 va adăuga în mod automat utilizatori în grupul de domeniu local Users. Primul său membru este contul Administrator.
Domain Guests
Vizitatorii domeniului sunt incluși în mod automat în grupul de domeniu local Guests. Primul său membru este Guest.
Enterprise Admins
Pentru a le acorda utilizatorilor drepturi de acces pentru administrare în întreaga rețea, trebuie să-i includeți în grupul Admins. În configurația prestabilită, primul inclus în acest grup este contul Administrator.
III.2.7. Grupuri ascunse sau de administrare
Windows Server 2003 conține grupuri cu denumiri pe care nu le puteți modifica și care nu vor apărea în nici o listă de utilizatori pe care îi puteți elimina sau șterge. Aceste grupuri vor fi însă afișate în ecranele cu permisiuni atunci când acordați drepturi (vezi figura 11.19). Din acest motiv, le vom numi grupuri ascunse sau de administrare.
Iată grupurile ascunse de administrare create de Windows Server 2003:
Everyone: Conține toți utilizatorii. Orice cont de utilizator care are acces la sistem din orice sursă.
Network. Orice utilizator care are acces la sistem printr-o conectare la rețea.
Interactive: Utilizatorii cu sesiuni deschise într-un calculator local.
System: Sistemul de operare Windows Server 2003 propriu-zis; de exemplu, procesele de server care pot necesita accesul la o partajare.
Creator/Owner: Orice utilizator care poate crea un director, o imprimantă sau o
partajare este considerat a fi creatorul/proprietarul resursei respective.
CAPITOLUL IV.
Folosirea limbajului VBScript
La începutul anului 1996, Netscape Communications Corporation a dat la iveală primul limbaj de scriptare de partea clientului (client-ride). Denumit la origine LiveScript, Netscape a modificat atât numele, cât și puțin din sintaxă, urmând introducerea limbajului de programare Java. Netscape a înțeles că puterea și flexibilitatea lui Java aveau unele limitări, cum ar fi execuția lentă, timpii prelungiți de încărcare a miniaplicatiilor și lipsa interacțiunii dintre Java și alte elemente Web de pe pagină. Ca urmare, Netscape a colaborat cu Sun Microsystems pentru a oferi aceleași aspect și gust de Java într-un limbaj de scriptare de categorie ușoară.
De asemena, Netscape a înțeles, în mod corect, că Java era un limbaj de programare dificil de învățat, în special pentru designerii de pagini Web cu experiență de programare redusă sau nulă. Chiar programarea de taskuri simple în Java cere abilități de departe mai presus de cele pentru codarea HTML de bază. în același timp, totuși, designerii de pagini Web doreau să aibă capacitatea de a adăuga elemente interactive, care efecuează acțiuni automat și răspund acțiunilor utilizatorului.
Pe lângă această înțelegere profundă a nevoilor designerilor de pagini Web, Netscape a sesizat și popularitatea deosebită de care se bucura Java în mass-media. Folosind un nume și o sintaxă asemănătoare, ei au putut capta o parte din frenezia mediilor de difuzare asociată cu Java. Când Netscape a lansat Navigator 2.0, ei au anunțat includerea lui JavaScript, un limbaj de scriptare ușor de învățat, de partea clientului, cu puterea și flexibilitatea unui limbaj cu caracteristici integrale de programare, dar suficient de ușor pentru a fi înglobat în codul sursă al paginilor HTML.
După ce Netscape a introdus JavaScript, primul limbaj de scriptare de partea clientului, cei de la Microsoft și-au dat seama de necesitatea înglobării unei capacități de scriptare de partea clientului în propriul său browser. Conform politicii firmei, de a prelua și a dezvolta noile idei, ei au dorit să prevadă suport pentru JavaScript în Internet Explorer. însă, Netscape și-a înregistrat drepturile de autor atât asupra numelui JavaScript, cât și asupra implementării sale în Navigator 2.0. Prin urmare, cei de la Microsoft au fost nevoiți să creeze propria lor implementare de sintaxă JavaScript, pe care au numit-o JScript.
O dată realizată porțiunea de preluare a politicii, cei de la Microsoft au trecut la extinderea capacităților de scriptare de partea clientului. Această țintă a dus la introducerea lui VBScript 1.0 în Internet Explorer 3.0. întrucât JScript încearcă să mențină aceeași sintaxă ca JavaScript, VBScript este al doilea limbaj de scriptare de partea clientului.
Chiar dacă VBScript este un limbaj de programare cu caracteristici integrale, el nu este des folosit de către producătorii de pagini Web, în primul rând datorită lipsei suportului
pentru el. în mod obișnuit, numai Internet Explorer de la Microsoft posedă suport nativ pentru scripturile VBScript. Și, întrucât aproape tot ce puteți face în VBScript puteți face și în JavaScript, majoritatea producătorilor aleg JavaScript drept limbajul lor de scriptare.
Visual Basic Scripting Edition, sau VBScript, este un limbaj de scriptare de partea clientului care folosește mult din aceeași sintaxă și structură ca și popularul limbaj de programare Microsoft Visual Basic. Microsoft a introdus VBScript pentru a oferi programatorilor experimentați în Visual Basic un mod ușor de a scrie aplicații pentru pagini Web.
VBScript nu este doar o versiune de scriptare a lui Visual Basic. Datorită elementelor de securitate, unele caracteristici Visual Basic nu sunt acceptate în VBScript. în plus, datorită mediului unic în care rulează aplicațiile VBScript, există unele caracteristici noi, specifice lui VBScript, care nu aparțin produsului Visual Basic. Totuși, ori de câte ori a fost posibil, caracteristicile Visual Basic au fost acceptate în VBScript pentru a face cele două limbaje cât de asemănătoare posibil.
Ca și alte limbaje de scriptare de partea clientului, VBScript a intenționat să fie înglobat în codul sursă HTML al paginilor Web. El acceptă aceleași etichete <SCRIPT> și </script> pentru înglobarea codului în documentul HTML. Codul VBScript poate, de asemenea, să fie înglobat în mai multe etichete HTML care reprezintă obiecte din Modelul de obiecte pentru scriptare Internet Explorer.
Există o largă varietate de aplicații pentru VBScript. Unele dintre cele mai comune aplicații sunt pentru validarea formularului, mesaje în Bara de stare și manipularea cadrelor. Deși folositor, adevărata putere a lui VBScript apare în capacitatea de a lucra cu controale ActiveX. Tot așa cum poate manipula obiecte în Modelul de obiecte, VBScript permite scriptarea pentru controale ActiveX, astfel încât autorii de pagini Web să controleze dinamic controalele lor ActiveX înglobate.
IV.1. Ce este VBScript?
VBScript este o prescurtare pentru Visual Basic Scripting Edition (Ediția de scriptare Visual Basic). Așa cum sugerează numele său, el conține aceeași structură de limbaj și cam aceeași sintaxă ca popularul limbaj Microsoft Visual Basic. Prin crearea VBScript, Microsoft a dorit să permită producătorilor să folosească posibilitățile Visual Basic când creează scripturi de partea clientului.
Chiar dacă VBScript are rădăcini în Visual Basic, nu este nevoie să cunoașteți Visual Basic pentru a învăța VBScript. De fapt, ar trebui să fie mult mai ușor să învățați VBScript decât Visual Basic. De asemenea, pentru a folosi VBScript, nu aveți nevoie de mediul de dezvoltare și de compilator, care sunt cerute de Visual Basic.
IV.2. Pentru ce este bun VBScript?
VBScript oferă autorilor de pagini Web un mod de a construi pagini bogate, mai interesante și mai funcționale decât ar fi putut să o facă doar cu HTML. HTML este o cale sublimă de a dezvolta documente ușoare pentru vizualizare pe tot felul de platforme. Totuși, el nu este un limbaj de programare, drept care produce pagini statice.
VBScript, pe de altă parte, este un limbaj de programare complet, cu instrucțiuni condiționale, structuri de date și structuri de control. Cu acestea puteți construi pagini Web care interacționează cu utilizatorul și execută o varietate de taskuri. Câteva taskuri comune efectuate cu JavaScript sunt: validarea datelor în formular, afișarea mesajelor în bara de stare a ferestrei browserului, configurarea și verificarea cokies-urilor, manipularea cadrelor și interacțiunea cu controale ActiveX. Aceste taskuri simt descrise în secțiunile următoare.
IV.3. VBScript și Visual Basic
VBScript moștenește sintaxa și structura de la limbajul de programare Microsoft Visual Basic. Totuși, există unele diferențe între cele două. întrucât programele VBScript au fost destinate să fie înglobate în pagini Web, a fost necesar să fie făcute mai multe modificări ediției de scriptare a lui Visual Basic.
Mai întâi, deoarece VBScript este un limbaj interpretat, el rulează în mod natural mai lent decât aplicațiile Visual Basic compilate. Ca urmare, Microsoft a făcut o modificare semnificativă de limbaj pentru a face VBScript să ruleze mai rapid. Ei au transformat VBScript într-un limbaj de programare cu tipuri libere.
Limbajele de programare care au multe tipuri distincte de structuri de date cer să folosiți tipul de date corect în toate instrucțiunile. De exemplu, dacă într-o instrucțiune care cere tipul de date caracter se folosește un întreg, se returnează o eroare. Aceste tipuri de limbaje de programare sunt numite limbaje cu tipuri rigide. Limbajele care nu sunt cu tipuri rigide se spune că sunt cu tipuri libere.
VBScript nu este un limbaj de programare cu tipuri rigide. El conține numai o singură structură de date: variant: (varianta). Puteți stoca orice tip de date – precum logice, întregi, numere zecimale, caractere sau șiruri – în variante. Folosind o singură structură de date, Microsoft elimină în timpul execuției suprasarcina de a verifica faptul că se folosesc tipuri corecte de date.
Suplimentar eliminării oricăror alte tipuri de date din VBScript, Microsoft a trebuit să elimine și multe dintre comenzile Visual Basic care erau dependente de sistemul de
operare. Deoarece VBScript este destinat să ruleze într-un browser Web pe orice platformă, Microsoft a trebuit să se asigure că orice funcție VBScript va lucra pe toate platformele. De aceea, a eliminat orice funcții interne Visual Basic specifice unui singur sistem de operare și unei singure platforme.
Din motive de securitate, din VBScript au fost eliminate și toate comenzile Visual Basic de intrare și ieșire din fișier și cele de sistem de operare. Rularea programelor care au fost descărcate de pe Internet poate constitui un mare risc pentru buna existență a mașinii dumneavoastră. Aceste programe pot conține viruși ascunși care pot produce o grămadă de stricăciuni mașinii, de la ștergerea unor fișiere cheie până la reformatarea completă a hard-discului. Visual Basic dispune de toate comenzile de care un programator răuvoitor ar avea nevoie pentru a executa oricâte acte dăunătoare mașinii unui utilizator necunoscut.
Aplicațiile VBScript se intenționează a fi descărcate de pe situri Web de pretutindeni din Internet, astfel că o preocupare foarte reală este dacă aceste aplicații pot conține acțiuni răuvoitoare. Pentru a preveni acest fapt, Microsoft a eliminat toate comenzile Visual Basic de intrare și ieșire din fișier și cele de sistem de operare, care stau la baza programelor de virusare. Dacă o aplicație nu are acces la sistemul de fișiere sau sistemul deoperare al mașinii pe care rulează, ea nu poate să aducă modificări sistemului de fișiere, cum ar fi ștergerea fișierelor, sau să invoce comenzile sistemului de operare, cum ar fi formatarea hard-discului. Prin eliminarea acestor instrucțiuni, Microsoft asigură utilizatorii că ei pot descărca și rula aplicații VBScript fără teamă de atacuri vătămătoare contra calculatoarelor lor.
O dată cu eliminarea multor comenzi Visual Basic din VBScript, Microsoft a adăugat și câteva caracteristici noi ediției de scriptare. Datorită mediului unic în care rulează VBScript, au fost necesare constante și funcții negăsite în produsul Visual Basic complet. Unele dintre aceste funcții sunt incluse pentru a reduce timpul de programare cerut de dezvoltarea aplicațiilor VBScript.
De exemplu, funcția Split este o funcție VBScript inexistentă în Visual Basic. Când este folosită, ea desparte în două un șir la toate aparițiile unui caracter specificat, precum virgula. Această funcție este foarte utilă pentru scripturile de partea clientului, pentru că multe date din mediu se găsesc în șiruri care sunt delimitate de unele caractere speciale. Puteți folosi funcția Split pentru a despărți rapid în două aceste date și a lucra cu porțiunea care prezintă interes pentru aplicația dumneavoastră.
IV.4. Platforme VBScript
Prima implementare de VBScript a Microsoft a fost în edițiile beta de Internet Explorer pentru mașini cu Windows 95 și Windows NT. O dată cu ediția finală, VBScript a fost acceptat în versiunile de Internet Explorer 3.0 pentru toate platformele Windows și Power Macintosh. Microsoft lucrează cu alte companii pentru a dezvolta suport pentru VBScript în Internet Explorer pentru platforme UNIX.
NCompass, un producător terț, a creat un program plug-in Netscape, care prevede suport pentru VBScript în browserele Netscape Navigator. Acest plug-in, denumit Script-Active, este hărăzit, în primul rând, să ofere utilizatorilor Navigator-ului capacitatea de a lucra cu controale ActiveX. El oferă și un instrument de conversie, care va face paginile Web care conțin VBScript compatibile cu browserul Navigator.
Pentru a extinde utilizarea lui VBScript, Microsoft acordă licență pentru a utiliza VBScript în alte aplicații. Producătorii terți care creează alte aplicații client sau server au, acum, alternativa de a construi un interpretor VBScript în aplicația lor, permițând folosirea lui VBScript. Nu există vreo taxă de licență pentru folosirea limbajului VBScript în alte aplicații, dar termenii licenței cer imperativ menționarea Microsoft și a drepturilor de autor respective.
CAPITOLUL V
VBScript și paginile HTML
VBScript a fost conceput ca un limbaj de scriptare de categorie ușoară, pentru a fi folosit în pagini Web. Aceasta înseamnă că limbajul de scriptare trebuie nu numai să fie înglobat într-o pagină Web, dar și să cunoască pe deplin aceea pagină pentru a interacționa cu ea. Microsoft a beneficiat de caracteristicile elaborate anterior de Netscape pentru JavaScript, astfel că a putut prelua definițiile existente pentru a îngloba scripturi de partea clientului în pagini Web. De asemenea, a extins funcționalitatea prin definirea și disponibilizarea către script de obiecte din pagina Web și browserul Web.
V.1. Eticheta <SCRIPT>
Netscape a definit deja metoda pentru a îngloba scripturi de partea clientului în documente HTML: eticheta <script>. Folosind această etichetă și asociata sa </script> în HTML, browserele Web înțeleg că textul plasat între aceste etichete este cod de aplicație, nu text de document.
Eticheta <script> are următoarea sintaxă:
<SCRIPT LANGUAGE=[scripting language]>
Pentru VBScript, trebuie să folosiți atributul language și să îl stabiliți egal cu VBSCRIPT, cum
se arată mai jos:
<SCRIPT LANGUAGE="VBSCRIPT">
Ca opțiune prestabilita, browserul Web folosește JavaScript pentru toate scripturile de partea clientului. Dacă nu este prezent atributul LANGUAGE, codul aplicației este interpretat drept JavaScript. Prin urmare, pentru a utiliza limbajul VBScript în oricare dintre scripturile de partea clientului dumneavoastră, trebuie să informați explicit browserul Web că folosiți VBScript, nu JavaScript. Desigur, este de bun gust să includeți atributul LANGUAGE de fiecare dată când folosiți eticheta <SCRIPT>, chiar dacă aplicația este în cod JavaScript. Dacă se folosește atributul LANGUAGE, iar browserul Web care încarcă pagina nu acceptă acel limbaj de scriptare, conținutul scriptului este ignorat.
Puteți avea oricât de multe apariții ale etichetei <script> în pagina dumneavoastră HTML. Puteți, de asemenea, să folosiți limbaje diferite pentru apariții diferite ale etichetei <script>. Totuși, se obișnuiește să aveți o singură secțiune <SCRIPT> întinsă, care să conțină cea mai mare parte a codului aplicației, precum subrutine, funcții și declarații de variabilă. Folosiți alte apariții ale etichetei <script> doar când aveți nevoie de o funcție îndeplinită la o anume locație din document, precum scrierea datelor în pagina HTML însăși.
V.2. Ascunderea scripturilor de partea clientului de browserele incompatibile
Cele mai multe browsere Web care se folosesc în ziua de azi acceptă unul dintre limbajele de scriptare de partea clientului. Totuși aceasta nu înseamnă oricare; unii dintre vizitatorii sitului dumneavoastră vor vedea o pagină Web denaturată dacă aveți de gând să includeți VBScript în HTML-ul dumneavoastră. Nu doriți să se întâmple astfel, întrucât doriți ca paginile dumneavoastră să fie multiplatformă, multibrowser și vizualizate de oricine.
Din fericire, când Netscape a introdus eticheta <script> și a implementat-o în browserul său Navigator 2.0, i-a conferit compatibilitate cu versiunile vechi. A făcut aceasta simplu, utilizând eticheta HTML de comentarii existentă și instruind browserele mai noi cu suport pentru scriptarea de partea clientului să ignore această apariție aparte a etichetei de comentariu HTML.
Sintaxa standard pentru o etichetă <SCRI PT> în paginile dumneavoastră HTML ar arăta astfel: <SCRIPT LANGUAGE="VBScript">
<!–
Your Code Goes Here
//–> </SCRIPT>
Observați a doua linie:
<!–
Această linie este prima parte a unui comentariu HTML. Browserele care acceptă scriptarea de partea clientului ignoră întotdeauna începutul unui comentariu HTML. Totuși, browserele care nu acceptă scriptarea de partea clientului consideră drept comentariu toi ceea ce întâlnesc până la partea de sfârșit a etichetei de comentarii HTML și nu îl afișează în pagina Web.
Partea de sfârșit a comentariului HTML este cea de lângă ultima linie:
Este precedată de două slashuri, ceea ce în scriptarea de partea clientului denotă o linie de comentariu. Cu alte cuvinte, eticheta finală de comentarii HTML este transformată în comentariu de browserele care suportă scriptare de partea clientului. Numai browserele care nu acceptă scriptarea de partea clientului folosesc această porțiune a etichetei de comentarii HTML.
Folosind eticheta de comentarii HTML de deschidere și de închidere, puteți ascunde cu succes codul aplicației dumneavoastră de browserele care nu acceptă scriptarea de partea clientului. Aceste tipuri de browsere ignoră complet și toate aparițiile etichetelor <SCRIPT> și </script> deoarece toate browserele Web sunt hărăzite să ignore etichetele HTML pe care nu le recunosc.
V.3. Plasarea scriptului dumneavoastră în codul HTML
Există două modalități prin care puteți îngloba scripturile dumneavoastră VBScript într-o pagină Web. Prima modalitate este folosirea etichetelor <SCRIPT> și </SCRlPT> oriunde în documentul dumneavoastră HTML pentru a defini textul cuprins drept un script de partea clientului și nu ca text al documentului. A doua modalitate este de a îngloba codul VBScript direct într-o altă etichetă HTML. Desigur, această metodă funcționează numai cu etichetele în care codul de script înglobat este suportat.
Ați făcut deja cunoștință cu etichetele <script> și </script> în secțiunea „Eticheta <script>", mai înainte în acest capitol. în acea secțiune, ați aflat că puteți plasa etichetele <script> și </SCRlPT> oriunde în textul dumneavoastră HTML. Cel mai obișnuit loc de așezare a scriptului dumneavoastră este în secțiunea antet a HTML-ului, așa cum a fost definit prin etichetele <HEAD> și </HEAD>. Ați putea, apoi, plasa alte scripturi în secțiunea principală a documentului dumneavoastră HTML când doriți scrierea unui text specific la acea locație din pagina Web.
De exemplu, ați putea avea o subrutină în secțiunea de antet a documentului dumneavoastră HTML care să afișeze un șir în bara de stare oricând este apelată. Codul VBScript pentru funcție, completat cu etichetele HTML, este arătat în Listingul 24.1.
listingul 24.1. Exemplu de subrutină VBScript în secțiunea HTML de antet.
<HEAD>
<TITLE>VBScript Example</TITLE>
<SCRIPT LANGUAGE="VBScript">
<! –
Sub Status_Change(Status_String)
status = Status_String End Sub
</SCRIPT>
</HEAD>
Subrutina primește un singur parametru șir, numit status_string. Ea plasează apoi conținutul șirului în bara de stare a browserului Web.
A doua metodă de a îngloba cod VBScript în textul dumneavoastră HTML este plasarea codului în etichetele HTML suportate. Cele mai comune etichete HTML unde puteți plasa cod VBScript sunt eticheta <A>, eticheta <body> și eticheta <AREA>. Puteți avea, de asemenea, cod VBScript în etichetele HTML pentru creare de formulare.
Indiferent în care etichetă HTML alegeți să înglobați codul VBScript, sintaxa este totdeauna aceeași. Definiți atât limbajul de scriptare de partea clientului, cât și acțiunea de efectuat pentru un eveniment specificat. De exemplu, mai jos este o etichetă <body> care conține cod VBScript:
<BODY LANGUAGE="VBSeript" onLoad="status='Finished'">
Ca și în cazul etichetei <script>, este totdeauna nevoie să specificați opțiunea dumneavoastră de limbaj când folosiți VBScript. Altminteri, browserul Web folosește în mod prestabilit interpretorul JavaScript sau JScript.
A doua parte a muncii de adăugare a codului VBScript la o etichetă HTML este să folosiți subrutine de tratare a evenimentelor definite pentru acea etichetă și să le atribuiți cod VBScript. Subrutinele de tratare a evenimentelor sunt definite pentru anume etichete HTML, ca parte a modelului de obiect Internet Explorer (Internet Explorer Object Model), care este discutat în secțiunea „Modelul de obiect pentru scriptare Internet Explorer " mai departe, în acest capitol.
In acest caz, subrutina de tratare a evenimentului onLoad a fost folosită cu eticheta <BODY>. Evenimentul Load este asociat cu fereastra documentului. Când o nouă pagină Web este încărcată în browserul Web, este declanșat evenimentul Load. Folosind subrutina de tratare a evenimentului onLoad, puteți defini cod VBScript care intră în execuție de fiecare dată când are loc evenimentul Load.
Cu codul care urmează, comunicați browserului Web să plaseze șirul Finished în bara de stare a browserului Web când a terminat de încărcat pagina Web:
onLoad="status='Finished'"
De asemenea, ați putea plasa pur și simplu un apel la o subrutină sau funcție în subrutina
de tratare a evenimentului, precum se arată în continuare:
onLoad="Status_Change('Finished')"
S-ar apela atunci subrutina status_Change arătată mai devreme în Listingul 24.1.
V.4. Rularea scripturilor de partea clientului
Programele VBScript vor fi rulate automat de browserul Web care Ie încarcă, depinzând de modul cum le-ați integrat în pagina dumneavoastră Web. în mod normal, toate scripturile incluse cu eticheta HTML <script> sunt analizate și executate când pagina Web este încărcată prima dată. Scripturile vor avea forma următoare:
<SCRIPT LANGUAGE="VBScript"> <!-
status = "Thanks for visiting!"
//–> </SCRIPT>
Acesta formă de scriptare este utilizată de obicei pentru inițializarea variabilelor și crearea datelor pe care le doriți înscrise direct în pagina Web. Folosind metoda obiectului document.write, puteți scrie date din scripturile dumneavoastră de partea clientului în pagina Web pentru a le afișa la utilizator. însă puteți scrie numai în pagina Web în curs de încărcare în timp ce este analizată. Prin urmare, ar trebui să aveți toate instrucțiunile document.write în forma:
<SCRIPT LANGUAGE="VBScript">
<!-
document.write("You are using a Web browser that supports VBScript.")
//–> </SCRIPT>
Instrucțiunile sunt executate în timp ce documentul este în curs de analiză, și datele sunt scrise în pagina Web.
Cealaltă opțiune pe care o aveți când scrieți cod pentru etichetele dumneavoastră <script> și </SCRlPT> este să vă plasați codul în subrutine și funcții. Browserul Web nu rulează automat subrutinele și funcțiile când este analizată pagina Web. Ca urmare, trebuie să apelați subrutina sau funcția dumneavoastră într-un alt script pentru a fi rulată.
De exemplu, cu scriptul arătat în Listingul 24.1 ați definit subrutina status_change. Aceasta subrutină nu este rulată automat când browserul Web încarcă pagina Web. De aceea, este necesar să apelați această subrutină undeva într-un alt script. De obicei, veți asocia cel de al doilea script cu un eveniment. Când evenimentul are loc, subrutina de tratare a evenimentului va apela subrutina dumneavoastră pentru a îndeplini acțiunea, precum în eticheta <body>:
<BODY LANGUAGE="VBScript" onLoad="Status_Change('Finished')">
Subrutina de tratare a evenimentului onLoad este declanșată când pagina Web se încarcă complet. Dacă plasați, pur și simplu, un script care intră în execuție atunci când pagina Web este încărcată pentru a afișa mesajul de stare, el va fi transmis la bara de stare în timp ce pagina este încă analizată. Aceasta va face, în mod obișnuit, ca mesajul dumneavoastră să fie suprascris de browserul Web, care plasează mesajul Done în bara de stare când a terminat încărcarea paginii.
V.5. Modelul de obiect pentru scriptare Internet Explorer
În eforturile de a face scripturile de partea clientului mai puternice, Microsoft a definit un model de obiect pentru browserul său Internet Explorer. Acest model de obiect, cunoscut formal ca Modelul de obiect pentru scriptare Internet Explorer, definește o ierarhie de obiecte, cu proprietățile, metodele și evenimentele asociate lor, pe care le puteți utiliza în codul dumneavoastră VBScript pentru a dezvolta aplicații mai robuste.
Modelul de obiect Internet Explorer pentru scriptare definește 10 obiecte:
Window (fereastră)
Frame (cadru)
History (istoric)
Navigator (navigator)
Location (locație)
Document (document)
Link (legătură)
Anchor (ancoră)
Form (formular)
Element (element)
Cele mai multe dintre aceste obiecte ar trebui să vă sune familiar. Ele reprezintă o versiune obiect a elementelor care compun un document pagină Web. De exemplu, aveți o fereastră de browser Web. Fiecare fereastră poate conține mai multe cadre. Fiecare pagină Web este referită în mod obișnuit ca un document, care conține legături, ancore, formulare și elemente de formular.
Unele dintre celelalte obiecte definesc elemente cu care, altminteri, este posibil să nu lucrați, exceptând scripturile de partea clientului. Fiecare fereastră de browser are, de asemenea, o listă cu istoric asociată ei, care face posibilă utilizarea butoanelor back (înapoi) și forward (înainte). Este posibil să doriți să controlați mișcarea în lista cu istoric, de exemplu, din scripturile dumneavoastră de partea clientului.
Obiectul Location reprezintă, pur și simplu, adresa URL a documentului încărcat curent în browserul Web. Aveți acces deplin la această informație. O puteți considera ca adresa întreagă sau să o spargeți în părțile asociate, cum ar fi protocolul, numele serverului sau adresa IP și numele documentului.
De asemenea, obiectul Navigator vă oferă informații despre browserul Web care este utilizat. El vă permite să descoperiți numele browserului, versiunea și platforma pe care rulează. Puteți folosi, ulterior, această informație pentru a prezenta un conținut personalizat, dependent de acești parametri.
Datorită Modelului de obiect, Microsoft a introdus o implementare alternativă pentru obiectul script, care vă permite să folosiți etichetele <script> și </script> pentru a defini subrutine de tratare a evenimentelor pentru obiecte specifice. Această nouă implementare definește două atribute noi pentru eticheta <SCRIPT> și are următoarea formă: <SCRIPT LANGUAGE=[language] FOR=[object] EVENT=[objects event]> Pentru a utiliza această formă, plasați numele obiectului în atributul FOR și evenimentul -obiectului pe care doriți să îl tratați în atributul EVENT. Internet Explorer execută conținutul acestui script doar când evenimentul acelui obiect ajunge să se declanșeze.
De exemplu, ați putea defini un câmp de introducere de text prin această linie:
<INPUT TYPE="text" NAME="tXtName" SIZE=30>
Apoi, ați putea defini un script care să trateze evenimentul Change, care se declanșează ori de câte ori utilizatorul face o schimbare în conținutul câmpului text. Scriptul ar putea avea forma următoare:
<SCRIPT LANGUAGE="VBScript" FOR="txtName" EVENT="onChange">
[Your script goes here]
//–> </SCRIPT>
Sunteți deja familiarizat cu posibilitatea de a plasa subrutine de tratare a evenimentelor direct în eticheta HTML a obiectului care generează evenimentul. Ați putea trata acest eveniment similar prin folosirea sintaxei:
<INPUT TYPE="text" NANE="txtName" SIZE=30 onChange="[Your script goes here]">
Oricare ar fi modalitatea, acțiunea care are loc este aceeași. Evenimentul se declanșează, iar Internet Explorer caută o subrutină validă de tratare a evenimentului. Dacă este găsită una, se execută conținutul scriptului subrutinei de tratare a evenimentului.
CAPITOLUL VI.
Prezentarea Probei Practice
Proba practică constă dintr-o pagină HTML în care sunt implementate scripturile de gestionare a Active Directory-ului, scripturi dezvoltate în limbajul de scriptare VBS.
Pagina a fost creată cu ajutorul programului InfoPath2003, program ce face parte din suita Office 2003, program dezvoltat de Microsoft. Codul HTML a fost ulterior modificat pentru legarea de porțiunile de text din pagina a fișierelor VBS, fișiere ce conțin scripturile “stand alone”.
VI.1. Prezentarea paginii HTML
Pentru o prezentare mai ușoară am structurat această pagină în trei arii, în funcție de acțiunea ce se deșfăsoară asupra Active Directory-ului, după cum urmează:
“Administrarea Utilizatorilor în Active Directory”. În această secțiune a paginii se găsesc butoanele ce lansează în aplicare scripturile care vor crea obiecte în Active Directory și vor modifica proprietăți ale acestora;
“Listarea atributelor unui obiect”, secțiune în care se interoghează Active Directory-ul, și se citesc atributele unui obict din cadrul acestuia.
În cea de-a treia secțiune, ce se numește Administrarea Grupurilor din Active Directory, vom găsi aceleasi acțiuni asupra obiectelor, acțiuni ce tratează obiecte de forma grupurilor de utilizatori.
Figura VI.1
VI.2. Prima parte a paginii
HTML conține numai butoane, în număr de 4, și sunt folosite la lansarea funcțiilor ce vor executa crearea unui utilizator, setarea de atribute ale unui utilizator, activarea și dezactivarea unui utilizator și nu în ultimul rând ștergerea unui utilizator.
Definirea butoanelor se face ca in exmplul de mai jos:
<a href="file:///\\Server\SYSVOL\adduser.vbs">
<input type=button id=btnSearch value="Adauga user" style="DISPLAY: inline; WIDTH: 180px"
onclick="AddOnClick()">
Creeaza utilizator si seteaza parola pentru acest cont </a><br>
alăturat acestor butoane vom găsi o scurtă propoziție care se scrie acțiunea propriu-zisă a scriptului, și care în acelasi timp are ca rol maparea scriptului de sine stătător, script ce poate fi rulat fără a mai apela funcția din pagina noastră, el fiind rulat cu ajutorul VBscript, sau din linia de comandă cu sintaxa: “ script nume script ”
VI.2.1. Prezentarea codului de mapare a oricărui text catre un fisier in HTML:
<a href="file:///\\Server\SYSVOL\adduser.vbs">
Creeaza utilizator si seteaza parola pentru acest cont
</a>
În cazul de față, la accesarea cu un click a textului “Creeaza utilizator si seteaza parola pentru acest cont” scriptul va încerca să pornească fiind oprit de către Internet Explorer cu o fereastră de avertizare, ce ne va atenționa că se va lansa un script ce ar putea avea efecte nedorite asupra sistemului de operare.
Pentru a rula scriptul trebuie confirmat faptul că vrem să-l dechidem, acesta făcându-se prin apăsarea butonului “Open”.
VI.2.2. Descrierea scripturilor:
VI.2.2.1. Adauga user
Primul script va adăuga un utilizator și va seta parola acestuia, după care va activa automat contul pentru ca utilizatorul să se poată loga.
În prima fază se face conexiunea la Active Directory, conexiune identică cu cea descrisă mai sus, se va afișa un “inputbox” în care se va trece numele de utilizator dorit și alte două inputbox-uri pentru parola acestuia, se creează utilizatorul și i se atribuie numele.
Figura 3.3.1
public function AddOnClick()
Const ADS_UF_PASSWD_NOTREQD = &h0020
Const ADS_UF_WORKSTATION_TRUST_ACCOUNT = &h1000
Set objRootDSE = GetObject("LDAP://rootDSE")
Set objContainer = GetObject("LDAP://cn=Users," & _
objRootDSE.Get("defaultNamingContext"))
txtuser= inputbox("Introduceti numele de utilizator: ")
If (txtuser="")Then
MsgBox "Introduceti un nume de utilizator corect"
else
parola = inputbox("Introduceti parola")
parola1 = inputbox("Confirmati parola")
if (parola=parola1) then
Set objLeaf = objContainer.Create("User", "cn=" &txtuser)
objLeaf.Put "sAMAccountName", txtuser
objLeaf.SetInfo
Acum, odată ce contul este creat și are un nume, obiectul este deja creat în Active Directory și pentru a putea seta parola și activarea contului de utilizator, trebuie ca în prealabil să luăm obiectul și să îi setăm atributul de parolă și cel de “trust account”. Aceasta se face cu secvența de cod ce urmează:
Set objLeaf = objcontainer.GetObject ("User", "cn=" &txtuser)
objLeaf.Put "userAccountControl", _
ADS_UF_PASSWD_NOTREQD Or ADS_UF_WORKSTATION_TRUST_ACCOUNT
objLeaf.setPassword parola
objLeaf.SetInfo
În cazul în care toate datele au fost introduse corect, se va afișa un mesaj de confirmare a adugării utilizatorului și activării acestuia. În cazul unei greșeli la introducerea parolei, mesajul "Parola nu corespunde. Utilizatorul nu a fost creat" va apărea pe ecran și utilizatorul nu va fi creat.
msgbox "Contul de utilizator " &txtuser & " a fost creat si activat"
Else
msgbox "Parola nu corespunde. Utilizatorul nu a fost creat"
End If
End If
end function
Observație: Parola trebuie să respecte standardele de securitate impuse de Windows Server 2003, și el trebuie să conțină cel puțin 8 caractere din care unul cel puțin trebuie să fie uppercase (majusculă), cifre și caractere speciale.
VI.2.2.2. Sterge User
Acest buton va lansa funcția ce va șterge definitiv un cont de utilizator, posibilitatea de a alege numele contului de utilizator se face prin căsuța de introducere a textului, afișată înaintea rulării scriptului.
Scriptul se prezintă foarte asemănător cu cel precedent, doar că se va conecta, va lua obiectul prin funcția “GetObject” și îl va șterge.
Public Function Ondeleteuser()
txtsAMAccountName = InputBox (" Introduceti numele de cont pe care doriti sa-l stergeti ")
If (txtsAMAccountName = "" ) Then
MsgBox " Completati numele de utilizatorului ce doriti sa-l stergeti "
Else
Set objRootDSE = GetObject("LDAP://rootDSE")
Set objContainer = GetObject("LDAP://cn=Users," & _
objRootDSE.Get("defaultNamingContext"))
objContainer.delete "User", "cn="&txtsAMAccountName
msgbox "Contul " & txtsAMAccountName & " a fost sters "
End If
end Function
În final se va afișa un mesaj de atenționare că a fost șters contul de utilizator.
VI.2.2.3. Activarea / Dezactivarea unui cont de utilizator.
Aceasta se face prin setarea unui atribut al obiectului “objUser.AccountDisabled=False/True”.
În prima fază se face conexiunea, se ia obiectul, după care se setează această opțiune în funcție de alegerea utilizatorului din “inputboxul” afișat.
După această setare se va memora modificările aduse obiectului, acțiunea de memorare făcându-se cu sintaxa “objUser.SetInfo”.
În final se va afișa un mesaj de informare cum că s-a activat / dezactivat contul de utilizator dorit de noi.
Mai jos este prezentată funcția în care este implementat acest script:
Public Function Onmakeactive()
Set objRootDSE = GetObject("LDAP://rootDSE")
Set objContainer = GetObject("LDAP://cn=Users," & _
objRootDSE.Get("defaultNamingContext"))
txtuser= inputbox("Introduceti numele utilizatorului")
txttest= inputbox("Pentru activare scrieti A Pentru dezactivare cont D ") if(txttest="A"or txttest="a") Then
Set objUser = objcontainer.GetObject ("User", "cn=" &txtuser)
objUser.AccountDisabled = False
objUser.SetInfo
msgbox "Utilizatorul " &txtuser & " a fost activat"
Else
if(txttest="D" or txttest="d") Then
Set objUser = objcontainer.GetObject ("User", "cn=" &txtuser)
objUser.AccountDisabled = True
objUser.SetInfo
msgbox "Utilizatorul " &txtuser & " a fost dezactivat"
Else
Msgbox "Introduceti optiunea corecta"
end If
end if
End Function
VI.2.2.4. Butonul “Seteaza informatii user”
Acesta lansează scriptul ce setează informații despre utilizatorul contului, informații despre care am vorbit în prima secțiune a acestei pagini HTML.
Spre deosebire de butonul precedent, aceste informații pot fi regăsite ușor la profilul utilizatorului, și sunt baza pentru regăsirea unui utilizator după alte criterii decât numele contului.
Un exemplu concret în acest sens este folosirea secțiunii de search e-mail address din cadrul programului Outlook Expres sau Outlook 2003 pentru regăsirea unei adrese de e-mail după numele și prenumele utilizatorului.
Introducerea acestor descrieri se face în mod identic cu cele de până acum, prin căsuțe de introducere a datelor, sau așa-numitele “inputbox-uri”.
În final se va afișa un mesaj de confirmare.
Mai jos este prezentat scriptul ce realizează aceste setări de atribute ale obiectului nostru:
Public Function setattributes()
Set objRoot = GetObject("LDAP://rootDSE")
sDomain = objRoot.Get("defaultNamingContext")
Set domain = GetObject("LDAP://" & sDomain)
sADsPath = "<" & domain.ADsPath & ">"
Set objContainer = GetObject("LDAP://cn=Users," & _
objRoot.Get("defaultNamingContext"))
txtuser= InputBox("Introduceti numele contului utilizatorului")
Set objUser = objcontainer.GetObject ("User", "cn=" &txtuser)
txtlastname= InputBox("Nume")
objUser.Put "givenName", ""&txtlastname
txtfirstname= inputbox("Prenume")
objUser.Put "sn", ""&txtfirstname
objUser.Put "displayName", ""&txtlastname&", "&txtfirstname
txtoffice= inputbox("Department")
objUser.Put "physicalDeliveryOfficeName", ""&txtoffice
txtphone= inputbox("Numar telefon")
objUser.Put "telephoneNumber", ""&txtphone
txtmail= inputbox("Adresa email")
objUser.Put "mail", ""&txtmail
txtweb= inputbox("Pagina web")
objUser.Put "wWWHomePage", "http://"&txtweb
objUser.SetInfo
msgbox "Informatiile despre utilizator "&txtuser &"au fost setate cu succes"
End function
VI.3. Cea de-a doua parte a paginii este formată dintr-un tabel
Tabelul conține 4 câmpuri de introducere a textelor “inputbox”, un câmp de select, și 4 butoane ce lansează spre execuție funcțiile în care sunt implementate scripturi de interogare a AD-ului, scripturi ce vor returna caracteristici ale unui obiect, mai exact informații generale, adresa de e-mail, numărul de telefon și departamentul în care lucrează utilizatorul cu numele și prenumele introdus în câmpurile aferente.
Generarea tabelei in HTML:
<table id="tableFrame" cellpadding="3" cellspacing="0" border="0" width="500px">
Codul HTML de generare al unui “inputbox”:
<input type="text" id="txtLastName" style="DISPLAY: inline; WIDTH: 100%">
Căsuța de select este descrisă de următoarea secțiune de cod:
<select id="selAcctype" style="DISPLAY: inline; WIDTH: 100%">
<option value="Administrator">Administrator</option>
<option value="Common User" selected>Common User</option>
<option value="Guest">Guest</option>
</select>
Butoanele s-au definit astfel:
<input type="button" id="btnSearch" style="Informatii generale" style="DISPLAY: inline; WIDTH: 120px"
onclick="OnSearchClick()">
<input type="button" id="btnSearch" style="Adresa de e-mail" style="DISPLAY: inline; WIDTH: 120px"
onclick="Onlistmail()">
<input type="button" id="btnSearch" style="Numarul de telefon" style="DISPLAY: inline; WIDTH: 120px"
onclick="onlistphone()">
<input type="button" id="btnSearch" style="Departmentul" style="DISPLAY: inline; WIDTH: 120px"
onclick="Onlistdepartment()">
Fiecare dintre aceste patru butoane au ca și caracteristici principale un “id” în cadrul formularului, stilul de afișare (ascuns sau la vedere), textul ce va fi afișat in cadrul acestuia, și în final cel mai important pentru noi, funcția care va fi executată în momentul efectuării unui click pe acest buton “onclick="numele_functiei()"”
Fiecare buton va returna câte o caracteristică a contului de utilizator, caracteristică afișată într-un “messagebox”.
VI.3.1 Prezentarea scriptului:
În prima parte a scriptului se face conexiunea la Active Directory, prin protocolul LDAP, protocol ce a fost descris în capitolul 2. Această conexiune se face folosind credențialele utilizatorului deja conectat la server, deci implicit la Active Directory.
În funcție de politica de securitate folosită de către server pentru acest utilizator se poate realiza și dreptul de a citi sau scrie atribute ale obiectelor din acest director.
public Function findmail (Account,Account1)
Set Con = CreateObject("ADODB.Connection")
Con.Provider = "ADsDSOObject"
Con.Open "Active Directory Provider"
Set ocommand = CreateObject("ADODB.Command")
ocommand.ActiveConnection = Con
Set Root = GetObject("LDAP://rootDSE")
sDomain = Root.Get("defaultNamingContext")
Set domain = GetObject("LDAP://" & sDomain)
sADsPath = "<" & domain.ADsPath & ">"
sFilter = "(&(objectClass=user)(givenName=" & Account & ")(sn=" & Account1 & "))"
sAttribsToReturn = "displayName,department,telephoneNumber,mail"
sDepth = "subTree"
ocommand.CommandText = sADsPath & ";" & sFilter & ";" & sAttribsToReturn & ";" & sDepth
Set rs = ocommand.Execute
findmail = ""
Do Until rs.EOF
findmail = findmail & rs.Fields(3).Value
rs.MoveNext
End function
Cel de-al doilea pas, după stabilirea conexiunii este crearea și aplicarea filtrului după care se face interogarea și găsirea unui obiect, pentru extragere atributelor acestui obiect.
În exemplul de față, filtrul este compus din numele și prenumele utilizatorului a cărui cont de e-mail dorim să-l aflăm. Astfel funcția aceasta va returna contul de e-mail al utilizatorului.
Public Function Onlistmail()
Din afisare
firstname = txtFirstName.value
lastname = txtLastName.value
If (findmail(firstname,lastname) = "") Then
MsgBox "User mail Not found!"
Else
msgbox findmail(firstname,lastname)
End If
End Function
Bineînțeles că în funcție de filtrul care se aplică la interogare se pot găsi conturi de utilizatori și după alte criterii cum ar fi numărul de telefon sau adresa utilizatorului.
VI.4. Cea de-a treia parte a formularului nostru tratează în mod asemănător obiectele de tip “Group” din Active Directory, dar deoarece structurarea si organizarea acestui director se bazează pe Unități Organizaționale și pe Grupuri, structura și complexitatea grupurilor fac ca atunci când dorim să creem un grup să ne punem problema de tipul și de nivelul de securitate al acestuia.
VI.4.1. Butonul “Create Group”
Butonul va lansa în execuție funcția ce conține scriptul de creare a unui grup, de tipul și de nivelul de securitate dorit.
Selecția atât a tipului cât și a nivelului de securitate se face cu ajutorul "inputbox-urilor", ce le afișăm pentru a obține opțiunea de grup.
Funcția, deși are în interior nouă IF-uri, ea este una simplă, care se conectează la Active Directory, și creează un nou obiect de tip "grup", obiect căruia i se va seta atributele de securitate, adică "security group" sau "distribution group", iar în funcție de tipul grupului, acesta va fi creat ca și "local group", "global group" sau "universal group".
Structura codului este următoarea:
Public Function Oncreategroup()
Const ADS_GROUP_TYPE_LOCAL_GROUP = &h4
Const ADS_GROUP_TYPE_GLOBAL_GROUP = &h2
Const ADS_GROUP_TYPE_UNIVERSAL_GROUP = &h8
Const ADS_GROUP_TYPE_SECURITY_ENABLED = &h80000000
groupname = InputBox("Introduceti numele grupului care doriti sa-l creati :")
If (groupname = "" ) Then
MsgBox "Introduceti un nume corect"
Else
Set objRootDSE = GetObject("LDAP://rootDSE")
Set objContainer = GetObject("LDAP://cn=Users," & _
objRootDSE.Get("defaultNamingContext"))
grouptype = InputBox("Introduceti tipul grupului L – Local group; G – Global group; U – Universal group")
securitytype=InputBox("Introduceti domeniul de securitate al grulului: D – Distribution Group; S – Security Group")
If (securitytype="d" Or securitytype="D") Then
If (grouptype="L" Or grouptype="l") then
Set objGroup = objContainer.create("group", "cn=" &groupname)
objGroup.Put "sAMAccountName", ""&groupname
objGroup.Put "groupType", ADS_GROUP_TYPE_LOCAL_GROUP
objGroup.setinfo
MsgBox "Grupul " & groupname & " a fost creat."
Else
if (grouptype="G" or grouptype="g") then
Set objGroup = objContainer.create("group", "cn=" &groupname)
objGroup.Put "sAMAccountName", ""&groupname
objGroup.Put "groupType", ADS_GROUP_TYPE_GLOBAL_GROUP
objGroup.setinfo
MsgBox "Grupul " & groupname & " a fost creat."
Else
if (grouptype="U" or grouptype="u") Then
Set objGroup = objContainer.create("group", "cn=" &groupname)
objGroup.Put "sAMAccountName", ""&groupname
objGroup.Put "groupType", ADS_GROUP_TYPE_UNIVERSAL_GROUP
objGroup.setinfo
MsgBox "Grupul " & groupname & " a fost creat."
Else
mgbox "Grupul nu a fost creat. Introduceti o optiune corecta"
end If
end if
end If
Else
if (securitytype="s" or securitytype="S") then
if (grouptype="L" or grouptype="l") Then
Set objGroup = objContainer.create("group", "cn=" &groupname)
objGroup.Put "sAMAccountName", ""&groupname
objGroup.Put "groupType", ADS_GROUP_TYPE_LOCAL_GROUP Or _
ADS_GROUP_TYPE_SECURITY_ENABLED
objGroup.setinfo
MsgBox "Grupul " & groupname & " a fost creat."
Else
if (grouptype="G" or grouptype="g") Then
Set objGroup = objContainer.create("group", "cn=" &groupname)
objGroup.Put "sAMAccountName", ""&groupname
objGroup.Put "groupType", ADS_GROUP_TYPE_GLOBAL_GROUP Or _
ADS_GROUP_TYPE_SECURITY_ENABLED
objGroup.setinfo
MsgBox "Grupul " & groupname & " a fost creat."
Else
if (grouptype="U" or grouptype="u") Then
Set objGroup = objContainer.create("group", "cn=" &groupname)
objGroup.Put "sAMAccountName", ""&groupname
objGroup.Put "groupType", ADS_GROUP_TYPE_UNIVERSAL_GROUP Or _
ADS_GROUP_TYPE_SECURITY_ENABLED
objGroup.setinfo
MsgBox "Grupul " & groupname & " a fost creat."
Else
MsgBox "Grupul nu a fost creat. Introduceti o optiune corecta"
end If
end if
end If
Else
mgbox "Grupul nu a fost creat. Introduceti o optiune corecta"
End If
End If
End If
end Function
Astfel, la accesarea butonului cu un click, se va rula această funcție. În primul rând se va dori introducerea numelui grupului, nume sub care acesta va fi creat.
Odată ce numele este introdus și se selectează OK, un alt inputbox va apărea în care se va cere să se introducă tipul grupului pe care doriți să-l creați.
După alegerea tipului mai este un singur pas, cel de alegere a securității grupului. De fapt, este vorba despre o altă clasificare a grupurilor, adică grupul nostru va fi "security", sau "distribution".
În cazul în care se alege Security Group, acest grup ca și obiect va primi un atribut ce va seta acest lucru: "ADS_GROUP_TYPE_SECURITY_ENABLED", acesta fiind defapt o constantă declarată la începutul funcției:
"Const ADS_GROUP_TYPE_SECURITY_ENABLED = &h80000000"
VI.4.2. Add user to group
Funcția va lansa scriptul ce va copia un cont de utilizator în cadrul unui grup deja existent. Pentru aceasta avem nevoie de două obiecte, adică utilizatorul pe care dorim să-l copiem și grupul în care dorim să facem acest lucru.
Codul este cel prezentat mai jos:
Public Function usertogroup()
Const ADS_PROPERTY_APPEND = 3
Set objRootDSE = GetObject("LDAP://rootDSE")
Set objContainer = GetObject("LDAP://cn=Users," & _
objRootDSE.Get("defaultNamingContext"))
username = InputBox("Introduceti utilizatorul pe care doriti sa-l mutati")
groupname = InputBox("Introduceti numele grupului unde doriti sa introduceti")
Set objUser = objcontainer.GetObject ("User", "cn=" &username)
Set objGroup = objcontainer.GetObject("Group", "cn=" &groupname)
strDN = ",cn=Users," & objRootDSE.defaultNamingContext
objGroup.PutEx ADS_PROPERTY_APPEND, "member", _
Array("cn="&username & strDN)
objGroup.SetInfo
MsgBox "Utilizatorul "&username& " a fost adaugat la grup "&groupname
end function
În prima fază se declară o constantă care va fi folosită în momentul copierii utilizatorului, după care în mod similar cu celelalte scripturi se va face conexiunea la Active Directory prin protocolul LDAP folosind credențialele utilizatorului care rulează această aplicație și care deja este conectat în prealabil la server.
În continuare se face alegerea utilizatorului dorit a fi copiat.
După alegerea contului de utilizator se va alege și grupul de destinație.
La apasarea OK-ului, va avea loc operațiunea de copiere, iar în final se va afișa un mesaj cu reușita acestei operațiuni.
VI.4.3. Butonul "Delete Group"
Funcția care stă în spatele acestui buton va șterge definitiv un grup, cu tot cu utilizatorii ce se găsesc în acest grup.
Selectarea grupului se face după numele acestuia, iar la apasarea OK-ului din cadrul "inputbox-ului" ștergerea va fi făcută fără nici o altă atenționare, fiind încheiată cu afișarea unui mesaj de confirmare a ștergerii.
VI.5. În ultima parte a paginii noastre
În subsolul acesteia se află cel din urmă buton, buton care nu va rula niciun script special, ci va afișa un mesaj prin care se dorește a transmite un simplu mesaj de mulțumire pentru că cineva a folosit acest tool, deci munca celui care l-a dezvoltat nu este degeaba.
Datorita modificarii rutinei de inchidere pagina de internet explorer se inchide fara a cere o confirmare suplimentara, mai jos se afla rutina de inchidere
function opreste()
{
alert("Va multumim ca ati folosit acest tool");
window.opener='x';
window.close();
}
end function.
CAPITOLUL VII.
Concluzii și recomandări
Active Directory este o implementare a serviciilor de directoare LDAP, folosită de Microsoft în cadrul sistemelor de operare Windows. Astfel "Active Directory" pune la dispoziția administratorilor un mediu flexibil cu efect global pentru: asignarea permisiunilor, instalarea programelor, înnoirea securității. Toate aceste operațiuni pot fi aplicate atât la rețele mici, cât și la rețele complexe.
Active Directory este de departe cea mai așteptată caracteristică a mediului Windows Server 2003. Cei dintre dumneavoastră care nu au venit până acum în contact cu lumea sistemelor de operare Windows și care nu au avut niciodată de-a face cu serviciul de directoare din Windows NT au intrat în această lume la momentul oportun. Acum nu mai trebuie folosite relațiile de domeniu, uneori foarte complexe și extrem de supărătoare. Asta nu înseamnă că serviciile de directoare pentru domeniile Windows NT nu sunt utile; în realitate, în cazul unei rețele cu unul sau două domenii totul nici n-ar fi chiar atât de rău. Însă când numărul de domenii din rețea este mai mare de trei sau patru, limitările serviciului de directoare din Windows NT devin evidente.
Active Directory este un serviciu foarte folositor atunci când vorbim desre rețele de calculatoare, el reușind să gestioneze într-o manieră extraordinară, conturile de utilizatori și politice de securitate folosite de aceștia, pentru a da mediului de rețea siguranța și confortul necesar.
Bineințeles că există posibilitatea folosirii celor mai noi platforme software oferite de Microsoft în domeniul serverelor ca windows 2008, care introduce PowerShell ca modalitate de control prin scripturi al serverului windows 2008, dar acestă soluție e mai scumpe si pentru o firma mica sau chiar medie facilitățile oferite de aceasta nu sunt indispensabile, din punct de vedere al costurilor(e posibil să fie necesar un server nou și licența de windwos) și la cât timp poate dura trecerea de la un sistem cunoscut(Windows 2003+Vbscript) la un sistem nou (Windows 2008 + PowerShell), care chiar dacă e similar totuși are unele diferente care pot face un administrator vechi să piardă mult timp până obține rezultatul dorit. Pe lânga toate acestea serverele necesare Windows 2008 trebuiesc sa fie mai puternice, deoarece windows 2008 are nevoie de mult mai multe resurse pentru a executa acceleași funcții ca windows 2003, ceea ce pentru o firma mică sau mijlocie s-ar putea să nu fie necesar, asta pe lângă costul unei licențe de windows 2008.
Ca o recomandare general valabilă este să nu se schimbe un sistem cunoscut cu un sistem nou deoarece pot apareă probleme care ar fi fost ușor de rezolvat în cazul cunoașterii foarte bine a sistemul de operare(windows 2003) existând și foarte multe informatii pe internet despre acesta.
Ca o diferentă majoră între windows server 2003 și 2008 putem aminti RODC(controler de domeniu doar de citire), functie inexistentă în windows 2003, WDS(serviciu de instalare windows) în loc de RIS(instalare la distanța), secvența de bootare e schimbată, instalarea e de 32 de biti si de 16 biti la windows 2003, pe cand la windows 2008 e doar de 32 de biti, mai exista si virtualizarea prin HIPER-V, acesta permitând instalarea a mai multe servere virtuale pe un singur hardware
După cum s-a putut vedea îndelungul prezentarii acestei lucrări, combinarea unui mediu de dezvoltare a unor scripturi si Active Directectory se face cu ușurință, datorită protocolului compatibil LDAP.
Bibliografie
Damir Bersinic, Rob Scrimger – MCSE Windows Server 2000 Directory Services Infrastructure (Infrastructura serviciilor de director), Editura TEORA, 2001
Peter Norton, Irfan Chaudhry, Tom Bruke – Microsoft Windows Server 2000, Editura TEORA
Robbie Allen – Active Directory Cookbook – For Windows Server 2000 & Windows Server 2000, Editura O'REILLY, 2003
Lisa Donald, James Gellis – MCSE – Windows Server 2000. Gid de studiu. Exercitiul 70-215, Editura ALL
Peter Norton, Irfan Chaudhry, Tom Bruke – All about HTML, Editura TEORA
MCSE-Win2003-Active-Directory-Services.chm
The Portable Script Center Version 3.0, November 2004 (http://www.microsoft.com/technet/scriptcenter)
Marc Hoffman , Lyn Hoffman, Peg Avey – Active Directory by the Numbers.chm
O'Reilly – Visual Basic Script in a Nutshell (2nd Edition, 2003).chm
http://www.msdn.com
2 .http://www.oreillynet.com
http://www.microsoft.com/technet/scriptcenter/default.mspx
http://technet.microsoft.com/en-us/library/cc780036%28v=ws.10%29
http://vbskrypt.com
http://www.onscript.com/en/add-VBScript-Samples.asp
http://firechewy.com/blog/archive/2004/03/22/219.aspx
http://www.wikipedia.org/wiki/Visual_Basic_Script
Anexe
<html>
<head>
<title>Working with Active Directory</title>
<meta name="vs_targetSchema" content="HTML 4.0">
<script language="VBScript">
Function findmail (Account,Account1)
Set Con = CreateObject("ADODB.Connection")
Con.Provider = "ADsDSOObject"
Con.Open "Active Directory Provider"
set objCommand=Server.CreateObject("ADODB.command")
Set ocommand = CreateObject("ADODB.Command")
ocommand.ActiveConnection = Con
Set Root = GetObject("LDAP://rootDSE")
sDomain = Root.Get("defaultNamingContext")
Set domain = GetObject("LDAP://" & sDomain)
sADsPath = "<" & domain.ADsPath & ">"
sFilter = "(&(objectClass=user)(givenName=" & Account & ")(sn=" & Account1 & "))"
sAttribsToReturn = "displayName,department,telephoneNumber,mail"
sDepth = "subTree"
ocommand.CommandText = sADsPath & ";" & sFilter & ";" & sAttribsToReturn & ";" & sDepth
Set rs = ocommand.Execute
findmail = ""
Do Until rs.EOF
findmail = findmail & rs.Fields(3).Value
rs.MoveNext
End function
Function Onlistmail()
Dim afisare
firstname = txtFirstName.value
lastname = txtLastName.value
If (findmail(firstname,lastname) = "") Then
MsgBox "User mail Not found!"
Else
msgbox findmail(firstname,lastname)
End If
End Function
Function AddOnClick()
Const ADS_UF_PASSWD_NOTREQD = &h0020
Const ADS_UF_WORKSTATION_TRUST_ACCOUNT = &h1000
Set objRootDSE = GetObject("LDAP://rootDSE")
Set objContainer = GetObject("LDAP://cn=Users," & _
objRootDSE.Get("defaultNamingContext"))
txtuser= inputbox("Introduceti numele de utilizator: ")
If (txtuser="")Then
MsgBox "Introduceti un nume de utilizator corect"
else
parola = inputbox("Introduceti parola")
parola1 = inputbox("Confirmati parola")
if (parola=parola1) then
Set objLeaf = objContainer.Create("User", "cn=" &txtuser)
objLeaf.Put "sAMAccountName", txtuser
objLeaf.SetInfo
Set objLeaf = objcontainer.GetObject ("User", "cn=" &txtuser)
objLeaf.Put "userAccountControl", _
ADS_UF_PASSWD_NOTREQD Or ADS_UF_WORKSTATION_TRUST_ACCOUNT
objLeaf.setPassword parola
objLeaf.SetInfo
msgbox "Contul de utilizator " &txtuser & " a fost creat si activat"
Else
msgbox "Parola nu corespunde. Utilizatorul nu a fost creat"
End If
End If
end Function
Function Ondeleteuser()
txtsAMAccountName = InputBox (" Introduceti numele de cont pe care doriti sa-l stergeti ")
If (txtsAMAccountName = "" ) Then
MsgBox " Completati numele de utilizator pe care doriti sa-l stergeti "
Else
Set objRootDSE = GetObject("LDAP://rootDSE")
Set objContainer = GetObject("LDAP://cn=Users," & _
objRootDSE.Get("defaultNamingContext"))
objContainer.delete "User", "cn="&txtsAMAccountName
MsgBox "Contul " & txtsAMAccountName & " a fost sters "
End If
end Function
Function Onmakeactive()
Set objRootDSE = GetObject("LDAP://rootDSE")
Set objContainer = GetObject("LDAP://cn=Users," & _
objRootDSE.Get("defaultNamingContext"))
txtuser= inputbox("Introduceti numele utilizatorului")
txttest= inputbox("Pentru activare scrieti A Pentru dezactivare cont D ")
if(txttest="A"or txttest="a") Then
Set objUser = objcontainer.GetObject ("User", "cn=" &txtuser)
objUser.AccountDisabled = False
objUser.SetInfo
msgbox "Utilizatorul " &txtuser & " a fost activat"
Else
if(txttest="D" or txttest="d") Then
Set objUser = objcontainer.GetObject ("User", "cn=" &txtuser)
objUser.AccountDisabled = True
objUser.SetInfo
msgbox "Utilizatorul " &txtuser & " a fost dezactivat"
Else
Msgbox "Introduceti optiunea corecta"
end If
end if
End Function
Function setattributes()
Set objRoot = GetObject("LDAP://rootDSE")
sDomain = objRoot.Get("defaultNamingContext")
Set domain = GetObject("LDAP://" & sDomain)
sADsPath = "<" & domain.ADsPath & ">"
Set objContainer = GetObject("LDAP://cn=Users," & _
objRoot.Get("defaultNamingContext"))
txtuser= InputBox("Introduceti numele contului utilizatorului")
Set objUser = objcontainer.GetObject ("User", "cn=" &txtuser)
txtlastname= InputBox("Nume")
objUser.Put "givenName", ""&txtlastname
txtfirstname= inputbox("Prenume")
objUser.Put "sn", ""&txtfirstname
objUser.Put "displayName", ""&txtlastname&", "&txtfirstname
txtoffice= inputbox("Departament")
objUser.Put "physicalDeliveryOfficeName", ""&txtoffice
txtphone= inputbox("Numar telefon")
objUser.Put "telephoneNumber", ""&txtphone
txtmail= inputbox("Adresa email")
objUser.Put "mail", ""&txtmail
txtweb= inputbox("Pagina web")
objUser.Put "wWWHomePage", "http://"&txtweb
objUser.SetInfo
msgbox "Informatiile despre utilizator "&txtuser &"au fost setate cu succes"
End Function
Function Oncreategroup()
Const ADS_GROUP_TYPE_LOCAL_GROUP = &h4
Const ADS_GROUP_TYPE_GLOBAL_GROUP = &h2
Const ADS_GROUP_TYPE_UNIVERSAL_GROUP = &h8
Const ADS_GROUP_TYPE_SECURITY_ENABLED = &h80000000
groupname = InputBox("Introduceti numele grupului care doriti sa-l creati :")
If (groupname = "" ) Then
MsgBox "Introduceti un nume corect"
Else
Set objRootDSE = GetObject("LDAP://rootDSE")
Set objContainer = GetObject("LDAP://cn=Users," & _
objRootDSE.Get("defaultNamingContext"))
grouptype = InputBox("Introduceti tipul grupului L – Local group; G – Global group; U – Universal group")
securitytype=InputBox("Introduceti domeniul de securitate al grulului: D – Distribution Group; S – Security Group")
If (securitytype="d" Or securitytype="D") Then
If (grouptype="L" Or grouptype="l") then
Set objGroup = objContainer.create("group", "cn=" &groupname)
objGroup.Put "sAMAccountName", ""&groupname
objGroup.Put "groupType", ADS_GROUP_TYPE_LOCAL_GROUP
objGroup.setinfo
MsgBox "Grupul " & groupname & " a fost creat."
Else
if (grouptype="G" or grouptype="g") then
Set objGroup = objContainer.create("group", "cn=" &groupname)
objGroup.Put "sAMAccountName", ""&groupname
objGroup.Put "groupType", ADS_GROUP_TYPE_GLOBAL_GROUP
objGroup.setinfo
MsgBox "Grupul " & groupname & " a fost creat."
Else
if (grouptype="U" or grouptype="u") Then
Set objGroup = objContainer.create("group", "cn=" &groupname)
objGroup.Put "sAMAccountName", ""&groupname
objGroup.Put "groupType", ADS_GROUP_TYPE_UNIVERSAL_GROUP
objGroup.setinfo
MsgBox "Grupul " & groupname & " a fost creat."
Else
mgbox "Grupul nu a fost creat. Introduceti o optiune corecta"
end If
end if
end If
Else
if (securitytype="s" or securitytype="S") then
if (grouptype="L" or grouptype="l") Then
Set objGroup = objContainer.create("group", "cn=" &groupname)
objGroup.Put "sAMAccountName", ""&groupname
objGroup.Put "groupType", ADS_GROUP_TYPE_LOCAL_GROUP Or _
ADS_GROUP_TYPE_SECURITY_ENABLED
objGroup.setinfo
MsgBox "Grupul " & groupname & " a fost creat."
Else
if (grouptype="G" or grouptype="g") Then
Set objGroup = objContainer.create("group", "cn=" &groupname)
objGroup.Put "sAMAccountName", ""&groupname
objGroup.Put "groupType", ADS_GROUP_TYPE_GLOBAL_GROUP Or _
ADS_GROUP_TYPE_SECURITY_ENABLED
objGroup.setinfo
MsgBox "Grupul " & groupname & " a fost creat."
Else
if (grouptype="U" or grouptype="u") Then
Set objGroup = objContainer.create("group", "cn=" &groupname)
objGroup.Put "sAMAccountName", ""&groupname
objGroup.Put "groupType", ADS_GROUP_TYPE_UNIVERSAL_GROUP Or _
ADS_GROUP_TYPE_SECURITY_ENABLED
objGroup.setinfo
MsgBox "Grupul " & groupname & " a fost creat."
Else
MsgBox "Grupul nu a fost creat. Introduceti o optiune corecta"
end If
end if
end If
Else
mgbox "Grupul nu a fost creat. Introduceti o optiune corecta"
End If
End If
End If
end Function
Function usertogroup()
Const ADS_PROPERTY_APPEND = 3
Set objRootDSE = GetObject("LDAP://rootDSE")
Set objContainer = GetObject("LDAP://cn=Users," & _
objRootDSE.Get("defaultNamingContext"))
username = InputBox("Introduceti utilizatorul pe care doriti sa-l mutati")
groupname = InputBox("Introduceti numele grupului unde doriti sa introduceti")
Set objUser = objcontainer.GetObject ("User", "cn=" &username)
Set objGroup = objcontainer.GetObject("Group", "cn=" &groupname)
strDN = ",cn=Users," & objRootDSE.defaultNamingContext
objGroup.PutEx ADS_PROPERTY_APPEND, "member", _
Array("cn="&username & strDN)
objGroup.SetInfo
MsgBox "Utilizatorul "&username& " a fost adaugat la grup "&groupname
end function
</script>
</head>
<body bgcolor="#FFFF99" lang=RO link=blue vlink=blue style='tab-interval:35.4pt'>
<h2 style='margin-left:11.25pt'>FOLOSIREA SCRIPTURILOR IN ADMINISTRAREA ACTIVE
DIRECTORY</h2>
<h3>ADMINISTRAREA USERILOR IN ACTIVE DIRECTORY<o:p></o:p></span></h3>
<a href="file:///\\Server\test\adduser.vbs">
<input type=button id=btnSearch value="Adauga user" style="DISPLAY: inline; WIDTH: 180px"
onclick="AddOnClick()">
Creeaza utilizator si seteaza parola pentru acest cont </a><br>
<a href="file:///\\Server\test\delete%20user.vbs">
<input type=button id=btnSearch value="Sterge user" style="DISPLAY: inline; WIDTH: 180px"
onclick="Ondeleteuser()">
Sterge definitiv un cont de utilizator din AD </a><br>
<a href="file:///\\Server\test\makeactive.vbs">
<input type=button id=btnSearch value="Activeaza/Dezactiveza user" style="DISPLAY: inline; WIDTH: 180px"
onclick="Onmakeactive()">
Activeaza/Dezactiveaza contul de utilizator </a><br>
<a href="file:///\\Server\test\setattributes.vbs">
<input type=button id=btnSearch value="Seteaza infomatii user" style="DISPLAY: inline; WIDTH: 180px"
onclick="setattributes()">
Introduceti informatii despre utilizatori </a>
<h3>LISTAREA ATRIBUTELOR UNUI OBIECT<o:p></o:p></h3>
<table id="tableFrame" cellpadding="3" cellspacing="0" border="0" width="620px">
Prenume:
Nume: <br>
<INPUT TYPE="text" id=txtLastName style="DISPLAY: inline; WIDTH: 300px"> <INPUT TYPE="text"
id=txtFirstName style="DISPLAY: inline; WIDTH: 310px"><br>
Adresa e-mail:
Numele contului:
Tipul de cont: <br>
<INPUT TYPE="text" id=txtAccountName style="DISPLAY: inline; WIDTH: 300px">
<INPUT TYPE="text" id=txtE-mailaddress style="DISPLAY: inline; WIDTH: 150px">
<SELECT id=selAcctype style="DISPLAY: inline; WIDTH: 150px">
<OPTION VALUE="Administrator">Administrator
<OPTION SELECTED VALUE="Common User">Common User
<OPTION VALUE="Guest">Guest
</SELECT><o:p></o:p></p>
<p style='margin-left:94pt'>
<input type=button id=btnSearch value="Informatii generale" style="DISPLAY: inline; WIDTH: 120px"
onclick="OnSearchClick()">
<input type=button id=btnSearch value="Adresa de e-mail" style="DISPLAY: inline; WIDTH: 120px"
onclick="Onlistmail()">
<input type=button id=btnSearch value="Numarul de telefon" style="DISPLAY: inline; WIDTH: 120px"
onclick="onlistphone()">
<input type=button id=btnSearch value="Departmentul" style="DISPLAY: inline; WIDTH: 120px"
onclick="Onlistdepartment()">
<h3>ADMINISTRAREA GRUPURILOR IN ACTIVE DIRECTORY<o:p></o:p></span></h3>
<a href="file:///\\Server\test\CreateGrup.vbs">
<input type=button id=btnSearch value="Creaza grup" style="DISPLAY: inline; WIDTH: 180px"
onclick="Oncreategroup()">
Adauga un grup fara utilizatori impliciti</a>
<br>
<a href="file:///\\Server\test\UserToGrup.vbs">
<input type=button id=btnSearch value="Adaugare user la grup" style="DISPLAY: inline; WIDTH: 180px"
onclick="usertogroup()">
Adauga utilizatori la un anumit grup deja creat</a>
<br>
<a href="file:///\\Server\test\DeleteGrup.vbs">
<input type=button id=btnSearch value="Stergere grup" style="DISPLAY: inline; WIDTH: 180px"
onclick="AddOnClick()">
Sterge un grup si utilizatorii din cadrul acestuia</a>
<br>
</b>
</b>
</b>
<p style='margin-left:154pt'><input type=button id=btnSearch value="Iesire fara salvarea modificarilor" style="DISPLAY: inline; WIDTH: 280px"
onClick= "javascript:window.close()">
</body>
</html>
Bibliografie
Damir Bersinic, Rob Scrimger – MCSE Windows Server 2000 Directory Services Infrastructure (Infrastructura serviciilor de director), Editura TEORA, 2001
Peter Norton, Irfan Chaudhry, Tom Bruke – Microsoft Windows Server 2000, Editura TEORA
Robbie Allen – Active Directory Cookbook – For Windows Server 2000 & Windows Server 2000, Editura O'REILLY, 2003
Lisa Donald, James Gellis – MCSE – Windows Server 2000. Gid de studiu. Exercitiul 70-215, Editura ALL
Peter Norton, Irfan Chaudhry, Tom Bruke – All about HTML, Editura TEORA
MCSE-Win2003-Active-Directory-Services.chm
The Portable Script Center Version 3.0, November 2004 (http://www.microsoft.com/technet/scriptcenter)
Marc Hoffman , Lyn Hoffman, Peg Avey – Active Directory by the Numbers.chm
O'Reilly – Visual Basic Script in a Nutshell (2nd Edition, 2003).chm
http://www.msdn.com
2 .http://www.oreillynet.com
http://www.microsoft.com/technet/scriptcenter/default.mspx
http://technet.microsoft.com/en-us/library/cc780036%28v=ws.10%29
http://vbskrypt.com
http://www.onscript.com/en/add-VBScript-Samples.asp
http://firechewy.com/blog/archive/2004/03/22/219.aspx
http://www.wikipedia.org/wiki/Visual_Basic_Script
Anexe
<html>
<head>
<title>Working with Active Directory</title>
<meta name="vs_targetSchema" content="HTML 4.0">
<script language="VBScript">
Function findmail (Account,Account1)
Set Con = CreateObject("ADODB.Connection")
Con.Provider = "ADsDSOObject"
Con.Open "Active Directory Provider"
set objCommand=Server.CreateObject("ADODB.command")
Set ocommand = CreateObject("ADODB.Command")
ocommand.ActiveConnection = Con
Set Root = GetObject("LDAP://rootDSE")
sDomain = Root.Get("defaultNamingContext")
Set domain = GetObject("LDAP://" & sDomain)
sADsPath = "<" & domain.ADsPath & ">"
sFilter = "(&(objectClass=user)(givenName=" & Account & ")(sn=" & Account1 & "))"
sAttribsToReturn = "displayName,department,telephoneNumber,mail"
sDepth = "subTree"
ocommand.CommandText = sADsPath & ";" & sFilter & ";" & sAttribsToReturn & ";" & sDepth
Set rs = ocommand.Execute
findmail = ""
Do Until rs.EOF
findmail = findmail & rs.Fields(3).Value
rs.MoveNext
End function
Function Onlistmail()
Dim afisare
firstname = txtFirstName.value
lastname = txtLastName.value
If (findmail(firstname,lastname) = "") Then
MsgBox "User mail Not found!"
Else
msgbox findmail(firstname,lastname)
End If
End Function
Function AddOnClick()
Const ADS_UF_PASSWD_NOTREQD = &h0020
Const ADS_UF_WORKSTATION_TRUST_ACCOUNT = &h1000
Set objRootDSE = GetObject("LDAP://rootDSE")
Set objContainer = GetObject("LDAP://cn=Users," & _
objRootDSE.Get("defaultNamingContext"))
txtuser= inputbox("Introduceti numele de utilizator: ")
If (txtuser="")Then
MsgBox "Introduceti un nume de utilizator corect"
else
parola = inputbox("Introduceti parola")
parola1 = inputbox("Confirmati parola")
if (parola=parola1) then
Set objLeaf = objContainer.Create("User", "cn=" &txtuser)
objLeaf.Put "sAMAccountName", txtuser
objLeaf.SetInfo
Set objLeaf = objcontainer.GetObject ("User", "cn=" &txtuser)
objLeaf.Put "userAccountControl", _
ADS_UF_PASSWD_NOTREQD Or ADS_UF_WORKSTATION_TRUST_ACCOUNT
objLeaf.setPassword parola
objLeaf.SetInfo
msgbox "Contul de utilizator " &txtuser & " a fost creat si activat"
Else
msgbox "Parola nu corespunde. Utilizatorul nu a fost creat"
End If
End If
end Function
Function Ondeleteuser()
txtsAMAccountName = InputBox (" Introduceti numele de cont pe care doriti sa-l stergeti ")
If (txtsAMAccountName = "" ) Then
MsgBox " Completati numele de utilizator pe care doriti sa-l stergeti "
Else
Set objRootDSE = GetObject("LDAP://rootDSE")
Set objContainer = GetObject("LDAP://cn=Users," & _
objRootDSE.Get("defaultNamingContext"))
objContainer.delete "User", "cn="&txtsAMAccountName
MsgBox "Contul " & txtsAMAccountName & " a fost sters "
End If
end Function
Function Onmakeactive()
Set objRootDSE = GetObject("LDAP://rootDSE")
Set objContainer = GetObject("LDAP://cn=Users," & _
objRootDSE.Get("defaultNamingContext"))
txtuser= inputbox("Introduceti numele utilizatorului")
txttest= inputbox("Pentru activare scrieti A Pentru dezactivare cont D ")
if(txttest="A"or txttest="a") Then
Set objUser = objcontainer.GetObject ("User", "cn=" &txtuser)
objUser.AccountDisabled = False
objUser.SetInfo
msgbox "Utilizatorul " &txtuser & " a fost activat"
Else
if(txttest="D" or txttest="d") Then
Set objUser = objcontainer.GetObject ("User", "cn=" &txtuser)
objUser.AccountDisabled = True
objUser.SetInfo
msgbox "Utilizatorul " &txtuser & " a fost dezactivat"
Else
Msgbox "Introduceti optiunea corecta"
end If
end if
End Function
Function setattributes()
Set objRoot = GetObject("LDAP://rootDSE")
sDomain = objRoot.Get("defaultNamingContext")
Set domain = GetObject("LDAP://" & sDomain)
sADsPath = "<" & domain.ADsPath & ">"
Set objContainer = GetObject("LDAP://cn=Users," & _
objRoot.Get("defaultNamingContext"))
txtuser= InputBox("Introduceti numele contului utilizatorului")
Set objUser = objcontainer.GetObject ("User", "cn=" &txtuser)
txtlastname= InputBox("Nume")
objUser.Put "givenName", ""&txtlastname
txtfirstname= inputbox("Prenume")
objUser.Put "sn", ""&txtfirstname
objUser.Put "displayName", ""&txtlastname&", "&txtfirstname
txtoffice= inputbox("Departament")
objUser.Put "physicalDeliveryOfficeName", ""&txtoffice
txtphone= inputbox("Numar telefon")
objUser.Put "telephoneNumber", ""&txtphone
txtmail= inputbox("Adresa email")
objUser.Put "mail", ""&txtmail
txtweb= inputbox("Pagina web")
objUser.Put "wWWHomePage", "http://"&txtweb
objUser.SetInfo
msgbox "Informatiile despre utilizator "&txtuser &"au fost setate cu succes"
End Function
Function Oncreategroup()
Const ADS_GROUP_TYPE_LOCAL_GROUP = &h4
Const ADS_GROUP_TYPE_GLOBAL_GROUP = &h2
Const ADS_GROUP_TYPE_UNIVERSAL_GROUP = &h8
Const ADS_GROUP_TYPE_SECURITY_ENABLED = &h80000000
groupname = InputBox("Introduceti numele grupului care doriti sa-l creati :")
If (groupname = "" ) Then
MsgBox "Introduceti un nume corect"
Else
Set objRootDSE = GetObject("LDAP://rootDSE")
Set objContainer = GetObject("LDAP://cn=Users," & _
objRootDSE.Get("defaultNamingContext"))
grouptype = InputBox("Introduceti tipul grupului L – Local group; G – Global group; U – Universal group")
securitytype=InputBox("Introduceti domeniul de securitate al grulului: D – Distribution Group; S – Security Group")
If (securitytype="d" Or securitytype="D") Then
If (grouptype="L" Or grouptype="l") then
Set objGroup = objContainer.create("group", "cn=" &groupname)
objGroup.Put "sAMAccountName", ""&groupname
objGroup.Put "groupType", ADS_GROUP_TYPE_LOCAL_GROUP
objGroup.setinfo
MsgBox "Grupul " & groupname & " a fost creat."
Else
if (grouptype="G" or grouptype="g") then
Set objGroup = objContainer.create("group", "cn=" &groupname)
objGroup.Put "sAMAccountName", ""&groupname
objGroup.Put "groupType", ADS_GROUP_TYPE_GLOBAL_GROUP
objGroup.setinfo
MsgBox "Grupul " & groupname & " a fost creat."
Else
if (grouptype="U" or grouptype="u") Then
Set objGroup = objContainer.create("group", "cn=" &groupname)
objGroup.Put "sAMAccountName", ""&groupname
objGroup.Put "groupType", ADS_GROUP_TYPE_UNIVERSAL_GROUP
objGroup.setinfo
MsgBox "Grupul " & groupname & " a fost creat."
Else
mgbox "Grupul nu a fost creat. Introduceti o optiune corecta"
end If
end if
end If
Else
if (securitytype="s" or securitytype="S") then
if (grouptype="L" or grouptype="l") Then
Set objGroup = objContainer.create("group", "cn=" &groupname)
objGroup.Put "sAMAccountName", ""&groupname
objGroup.Put "groupType", ADS_GROUP_TYPE_LOCAL_GROUP Or _
ADS_GROUP_TYPE_SECURITY_ENABLED
objGroup.setinfo
MsgBox "Grupul " & groupname & " a fost creat."
Else
if (grouptype="G" or grouptype="g") Then
Set objGroup = objContainer.create("group", "cn=" &groupname)
objGroup.Put "sAMAccountName", ""&groupname
objGroup.Put "groupType", ADS_GROUP_TYPE_GLOBAL_GROUP Or _
ADS_GROUP_TYPE_SECURITY_ENABLED
objGroup.setinfo
MsgBox "Grupul " & groupname & " a fost creat."
Else
if (grouptype="U" or grouptype="u") Then
Set objGroup = objContainer.create("group", "cn=" &groupname)
objGroup.Put "sAMAccountName", ""&groupname
objGroup.Put "groupType", ADS_GROUP_TYPE_UNIVERSAL_GROUP Or _
ADS_GROUP_TYPE_SECURITY_ENABLED
objGroup.setinfo
MsgBox "Grupul " & groupname & " a fost creat."
Else
MsgBox "Grupul nu a fost creat. Introduceti o optiune corecta"
end If
end if
end If
Else
mgbox "Grupul nu a fost creat. Introduceti o optiune corecta"
End If
End If
End If
end Function
Function usertogroup()
Const ADS_PROPERTY_APPEND = 3
Set objRootDSE = GetObject("LDAP://rootDSE")
Set objContainer = GetObject("LDAP://cn=Users," & _
objRootDSE.Get("defaultNamingContext"))
username = InputBox("Introduceti utilizatorul pe care doriti sa-l mutati")
groupname = InputBox("Introduceti numele grupului unde doriti sa introduceti")
Set objUser = objcontainer.GetObject ("User", "cn=" &username)
Set objGroup = objcontainer.GetObject("Group", "cn=" &groupname)
strDN = ",cn=Users," & objRootDSE.defaultNamingContext
objGroup.PutEx ADS_PROPERTY_APPEND, "member", _
Array("cn="&username & strDN)
objGroup.SetInfo
MsgBox "Utilizatorul "&username& " a fost adaugat la grup "&groupname
end function
</script>
</head>
<body bgcolor="#FFFF99" lang=RO link=blue vlink=blue style='tab-interval:35.4pt'>
<h2 style='margin-left:11.25pt'>FOLOSIREA SCRIPTURILOR IN ADMINISTRAREA ACTIVE
DIRECTORY</h2>
<h3>ADMINISTRAREA USERILOR IN ACTIVE DIRECTORY<o:p></o:p></span></h3>
<a href="file:///\\Server\test\adduser.vbs">
<input type=button id=btnSearch value="Adauga user" style="DISPLAY: inline; WIDTH: 180px"
onclick="AddOnClick()">
Creeaza utilizator si seteaza parola pentru acest cont </a><br>
<a href="file:///\\Server\test\delete%20user.vbs">
<input type=button id=btnSearch value="Sterge user" style="DISPLAY: inline; WIDTH: 180px"
onclick="Ondeleteuser()">
Sterge definitiv un cont de utilizator din AD </a><br>
<a href="file:///\\Server\test\makeactive.vbs">
<input type=button id=btnSearch value="Activeaza/Dezactiveza user" style="DISPLAY: inline; WIDTH: 180px"
onclick="Onmakeactive()">
Activeaza/Dezactiveaza contul de utilizator </a><br>
<a href="file:///\\Server\test\setattributes.vbs">
<input type=button id=btnSearch value="Seteaza infomatii user" style="DISPLAY: inline; WIDTH: 180px"
onclick="setattributes()">
Introduceti informatii despre utilizatori </a>
<h3>LISTAREA ATRIBUTELOR UNUI OBIECT<o:p></o:p></h3>
<table id="tableFrame" cellpadding="3" cellspacing="0" border="0" width="620px">
Prenume:
Nume: <br>
<INPUT TYPE="text" id=txtLastName style="DISPLAY: inline; WIDTH: 300px"> <INPUT TYPE="text"
id=txtFirstName style="DISPLAY: inline; WIDTH: 310px"><br>
Adresa e-mail:
Numele contului:
Tipul de cont: <br>
<INPUT TYPE="text" id=txtAccountName style="DISPLAY: inline; WIDTH: 300px">
<INPUT TYPE="text" id=txtE-mailaddress style="DISPLAY: inline; WIDTH: 150px">
<SELECT id=selAcctype style="DISPLAY: inline; WIDTH: 150px">
<OPTION VALUE="Administrator">Administrator
<OPTION SELECTED VALUE="Common User">Common User
<OPTION VALUE="Guest">Guest
</SELECT><o:p></o:p></p>
<p style='margin-left:94pt'>
<input type=button id=btnSearch value="Informatii generale" style="DISPLAY: inline; WIDTH: 120px"
onclick="OnSearchClick()">
<input type=button id=btnSearch value="Adresa de e-mail" style="DISPLAY: inline; WIDTH: 120px"
onclick="Onlistmail()">
<input type=button id=btnSearch value="Numarul de telefon" style="DISPLAY: inline; WIDTH: 120px"
onclick="onlistphone()">
<input type=button id=btnSearch value="Departmentul" style="DISPLAY: inline; WIDTH: 120px"
onclick="Onlistdepartment()">
<h3>ADMINISTRAREA GRUPURILOR IN ACTIVE DIRECTORY<o:p></o:p></span></h3>
<a href="file:///\\Server\test\CreateGrup.vbs">
<input type=button id=btnSearch value="Creaza grup" style="DISPLAY: inline; WIDTH: 180px"
onclick="Oncreategroup()">
Adauga un grup fara utilizatori impliciti</a>
<br>
<a href="file:///\\Server\test\UserToGrup.vbs">
<input type=button id=btnSearch value="Adaugare user la grup" style="DISPLAY: inline; WIDTH: 180px"
onclick="usertogroup()">
Adauga utilizatori la un anumit grup deja creat</a>
<br>
<a href="file:///\\Server\test\DeleteGrup.vbs">
<input type=button id=btnSearch value="Stergere grup" style="DISPLAY: inline; WIDTH: 180px"
onclick="AddOnClick()">
Sterge un grup si utilizatorii din cadrul acestuia</a>
<br>
</b>
</b>
</b>
<p style='margin-left:154pt'><input type=button id=btnSearch value="Iesire fara salvarea modificarilor" style="DISPLAY: inline; WIDTH: 280px"
onClick= "javascript:window.close()">
</body>
</html>
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Crearea Si Gestionarea Conturilor de Utilizator cu Vbs (ID: 149669)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
