S E R V I SActive Directory / 6. èasV šiestej èasti seriálu o Active Directory sa pozrieme <strong>na</strong> databázu, v ktorej sú uloženéinformácie o objektoch.DATABÁZA. Èo je objekt, to sme spomí<strong>na</strong>li v predchádzajúcich èastiach. Takže terazlen struène. Objektom v doméne založenej <strong>na</strong> Windows 2000 je <strong>na</strong>príklad používate¾,používate¾<strong>sk</strong>á <strong>sk</strong>upi<strong>na</strong>, poèítaè, tlaèiareò. V databáze Active Directory sú o objektochuložené rôzne informácie – mená objektu, atribúty (vlastnosti) objektu. Množné èíslo primenách objektu uvádzam preto, lebo jeden objekt má viac mien – Distinguished Name,Relative Distinguished Name a User Principal Name (pri objekte typu používate¾).Databáza Active Directory je štandardne (ak pri inštalácii nepoviete i<strong>na</strong>k) v adresári %systemroot%\NTDS. Samotná databáza sa <strong>na</strong>chádza v súbore ntds.dit. Okrem nej sú vtomto adresári ešte súbory Edb.log, edbxxxx.log, res1(2).log, edb.chk.Zmeny, ktoré vykonáte – vytvorenie používate¾a, zme<strong>na</strong> atribútu – sa nezapíšu automatickydo databázy ntds.dit, ale do súboru edb.log. Až zo súboru edb.log sa zmeny prenášajúdo databázy. Súbor edb.log má konštantnú ve¾kos – 10 MB. Ak by množstvozmien bolo také, že sa do edb.log súboru nezmestia, systém premenuje tento súbor <strong>na</strong>edbxxxx.log a vytvorí nový edb.log súbor (xxxx je poradové èíslo od 0001). Mohlo by sasta , že systém nebude ma <strong>na</strong> di<strong>sk</strong>u dostatok vo¾ného priestoru <strong>na</strong> vytvorenie 10 MBve¾kého súboru edb.log. Vtedy použije jeden zo súborov res1.log (res2.log). Ide o prázdnesúbory s ve¾kos ou 10 MB, ktoré sú vytvorené pri inštalácii Active Directory <strong>na</strong> úèelrezervovania di<strong>sk</strong>ového priestoru. Ïalším súborom potrebným pri práci s databázou jeEdb.chk. Ten „ukazuje“ do súboru edb.log <strong>na</strong> ten záz<strong>na</strong>m, ktorý ešte nebol prenesený dodatabázy.Ak všetky zmeny zaz<strong>na</strong>me<strong>na</strong>né v súboroch edbxxxx.log boli prenesené do databázy,stávajú sa zbytoènými. Poèas procesu garbage collection, ktorý sa spúš a každých 12hodín, sú vymazané.DEFRAGMENTÁCIA DATABÁZY. Proces Garbage collection vykonáva aj online defragmentáciu, ktorá databázu „preusporiada“, nezmenší však priestor <strong>na</strong> di<strong>sk</strong>u,alokovaný databázou.Úplnú defragmentáciu urobíte, ak si pri štartovaní systému pomocou klávesu F8 zobrazíteštartovacie menu a zvolíte Directory Services Repair Mode. Na defragmentáciu použitenástroj ntdsutil.exe. V príkazovom riadku <strong>na</strong>píšte ntdsutil. Ïalej pokraèujte príkazmi files acompact to %s.C:\>ntdsutilntdsutil: filesfile mainte<strong>na</strong>nce: ?? - Print this help informationCompact to %s - Compact DB to specified directoryPríkazom Compact urèíte miesto, <strong>na</strong> ktoré sa má defragmentovaná databáza uloži. Po ukonèení defragmentácie jednoducho databázu prekopírujete <strong>na</strong> jej pôvodnémiesto.ZÁLOHOVANIE DATABÁZY. Zálohovací program Backup, ktorý je súèas ouWindows 2000 (nájdete ho v menu Programs / Accessories / System Tools), <strong>na</strong> rozdielod zálohovacieho programu vo Windows NT 4.0 zálohuje dáta nielen <strong>na</strong> pá<strong>sk</strong>u, ale aj<strong>na</strong> di<strong>sk</strong> èi di<strong>sk</strong>etu. Zálohova samotnú databázu (ntds.dit) však nie je možné. Dá sa zálohovaako súèas celého systému (System State). System State zahàòa databázuRegistry, Active Directory, štartovacie súbory, systémový zväzok, COM objekty, spolutakmer 200 MB...Zálohou systému sa zazálohujú súbory ntds.dit, edb.log, edb.xxxx.log a edb.chk. Akmáte v doméne viac radièov domény, zálohu databázy Active Directory vo väèšine prípadovnebudete potrebova . Ak by totiž došlo k poškodeniu databázy <strong>na</strong> radièi domény,staèí <strong>na</strong> òom preinštalova Active Directory a pripoji ho do domény. Aktuálnu databázusi tento server „stiahne“ z existujúceho radièa. V prípade, že máte len jeden radiè domény,je dobré databázu zálohova …Obnova databázy sa dá robi dvoma spôsobmi: autoritatívnym a neautoritatívnym.NEAUTORITATÍVNA OBNOVA. Ide o jednoduchú obnovu databázy. Pritomto spôsobe obnovy urobíte to, že zazálohovanou databázou prepíšete aktuálnudatabázu – niè viac. Ukážme si príklad. V pondelok zazálohujete databázu, v utorokurobíte nejaké zmeny – <strong>na</strong>príklad vymažete používate¾<strong>sk</strong>ý úèet. Po vyko<strong>na</strong>ní tejto zmenysa rozhodnete obnovi databázu. Po obnove (restore) sa vymazaný používate¾<strong>sk</strong>ýúèet „vráti“ do databázy. Lenže dokedy? Ak máte v doméne viac doménových radièov,je pravdepodobné, že informácia o vymazaní úètu sa preniesla (zreplikovala) aj <strong>na</strong>ostatné. Po obnove databázy sa poèas replikaèného procesu nestane to, že obnovenýúèet sa prenesie <strong>na</strong> ostatné radièe domény, ale <strong>na</strong>opak. Prenesie sa informácia o jehovymazaní. Takže používate¾<strong>sk</strong>ý úèet bude v databáze opä chýba . Stane sa tak preto,že každý objekt v databáze (presnejšie každý atribút) nesie so sebou aj èíslo verzie(USN – Update Sequence Number), ktoré sa každou zmenou zvyšuje. Pri replikácii databázpo sieti prepíšu objekty (atribúty) s vyšším èíslom USN objekty s nižším. V <strong>na</strong>šompríklade by objekt – používate¾<strong>sk</strong>ý úèet – mal USN èíslo X. S týmto èíslom by bol ajzazálohovaný. Po jeho vymazaní sa jeho USN èíslo zvýši <strong>na</strong> X+1. Informácia o vymazanísa zreplikuje <strong>na</strong> ostatné radièe domény. Po obnovení databázy sa objekt vráti s USNèíslom X. V momente, keï sa spustí replikaèný proces, „<strong>na</strong>razia“ <strong>na</strong> seba dva objekty.Objekt s USN èíslom X a objekt s èíslom X+1 a zároveò s informáciou o vymazaní.Výsledok? Objekt bude opä vymazaný.AUTORITATÍVNA OBNOVA. Predchádzajúci problém sa dá vyrieši autoritatívnouobnovou. Pri tejto metóde obnovy postupujete tak, že <strong>na</strong>jprv neautoritatívnoumetódou obnovíte databázu a potom pomocou nástroja ntdsutil urèíte, ktorýobjekt sa má obnovi autoritatívne (môže sa aj celá databáza). Pointa je v tom, že priautoritatívnej obnove sa objektu zvýši jeho USN èíslo o 9999 za každý deò od zazálohovania.C:\>ntdsutilntdsutil: authoritative restoreauthoritative restore: ?? - Print this help informationHelp- Print this help informationQuit- Return to the prior menuRestore database- Authoritatively restore entire databaseRestore database verinc %d - ... and override version increaseRestore subtree %s- Authoritatively restore a subtreeRestore subtree %s verinc %d - ... and override version increaseV menu príkazu ntdsutil urèíte, ktorú èas databázy chcete autoritatívne obnovi . Môžeteobnovi celú databázu (Restore database) alebo jej èas , prípadne objekt (Restore subtree).Takže pri replikaènom procese bude ma obnovený objekt USN èíslo urèite väèšie akoobjekt, ktorý sa <strong>na</strong>chádza <strong>na</strong> nejakom inom radièi domény.Dodajme, že neautoritatívnu obnovu databázy urobíte pomocou zálohovacieho programuBackup, ale len pri <strong>na</strong>štartovaní systému v režime Directory Services Repair mode.Na záver spomeòme jeden nástroj, ktorý môže by užitoèný pri plánovaní ActiveDirectory. Ide o nástroj AD Sizer (adsizer.exe). Pomocou neho si <strong>na</strong> základe vstupnýchúdajov, zadávaných sprievodcom (wizard), urèíte vhodnú konfiguráciu siete. Zároveòsa dozviete predpokladanú ve¾kos databázy Active Directory. Vstupné údaje sú <strong>na</strong>príkladpoèet používate¾ov, poèet súèasne pracujúcich používate¾ov, poèet atribútovpriradených používate¾ovi, poèet staníc atï. Nástroj AD Sizer nájdete <strong>na</strong> stránke:http://<strong>www</strong>.microsoft.com/windows2000/library/resources/re<strong>sk</strong>it/tools/default.asp.Jozej Meèiar122 PC REVUE 10/2001
P R O G R A M U J E M EMalé ve¾ké databázy II. / 4. èasUž viackrát sme si povedali, že HTTP server síce prijmepožiadavku <strong>na</strong> stránku s príkazmi PHP, ale jej vytvorenienechá práve <strong>na</strong> preprocesor PHP. Ten, len èo spracuje úlohyspojené s databázou, vytvorí súbor vo formáte jazykaHTML a ten cestou servera odošle žiadate¾ovi. Na výpiseè. 7 je zdrojový text takej HTML stránky, ktorú vytvorí PHPpo spracovaní <strong>sk</strong>riptu priklad2.php:V tabulke KNIHA je 10 zaz<strong>na</strong>mov.Angelika a kral – Golon, Anne aSergeKGB – Gordijev<strong>sk</strong>y, OlegBratia Ricovci – Simenon, GeorgesVtaky v trni – McCulloughova, CollenLinux – prakticky pruvodce – Sobell, Mark G.Naucte se programovat v Delphi – Binzinger, ThomasPouzivame linux – Welsh, M., Kaufman, L. Z polovnickej kapsy – Moric,RudoPlebej<strong>sk</strong>a kosela – Mihalik, VojtechEuropou bez pe<strong>na</strong>zi – Hlubucek, Petr, Ing.Toto dosiahneme, keï po prijatí odpovede, aká je <strong>na</strong> obr. è. 6 (v è. 9/2001), prejdemedo menu View – Page Source (v NetScape 4.7). Môžeme porov<strong>na</strong> , že výpis è. 5 (v è.9/2001) nie je vôbec zhodný s týmto HTML výpisom, ale je jeho výsledkom. A to je práveúlohou PHP.Skúsení tvorcovia HTML stránok <strong>na</strong>mietnu, že tieto <strong>sk</strong>ripty sú síce funkèné, ale neèisté.Odporujú zásadám pre tvorbu HTML stránok a niektoré prehliadaèe by ich nemuseli interpretovasprávne. Preto <strong>sk</strong>ript priklad2.php „obleèieme“ do správneho kódu HTML.Zároveò ošetríme chybové hlásenia. Vieme, že ak <strong>na</strong>stane chyba pri behu <strong>sk</strong>riptu, chybovéhlásenie sa zobrazí <strong>na</strong> obrazovke a beh <strong>sk</strong>riptu sa ukonèí. Ove¾a prijate¾nejšie apoužívate¾<strong>sk</strong>y príjemnejšie je vlastné ošetrenie chýb. Pomocou z<strong>na</strong>ku @ potlaèíme zobrazovanieštandardných chybových hlásení a vytvoríme vlastné chybové hlásenia. Je to ve¾mijednoduché. Skoro každá funkcia v PHP pri chybovom stave vráti hodnotu false. Takžetaké ošetrenie pripojenia k MySQL bude vyzera asi takto:if (!$spojenie):echo „Nepodarilo sa pripojit k MySQL.\n“;break;endif;èo môžeme interpretova – ak nie je spojenie, vypíš èosi a zastav sa!Efektné, však?Správne a pod¾a všetkých regulí vytvorený <strong>sk</strong>ript priklad3.php, v ktorom budúošetrené aj chyby, je <strong>na</strong> výpise è. 8.Náš tretí PHP <strong>sk</strong>riptVýpis titulov a autorov z tabulky KNIHAZnova ho uložíme <strong>na</strong> web a zavoláme v prehliadaèi, kde uvidíme obr. è. 9.ASPOÒ TROCHU USER FRIENDLY PROGRAM. Tvrdíte, že to stále nieje to pravé orechové? Áno, súhlasím, veï sme iba <strong>na</strong> zaèiatku. Pôvodne som chcel užukonèi dnešnú lekciu, ale mám pre vás takú perlièku. Na záver si vytvoríme aspoò trochuuser-friendly aplikáciu do <strong>na</strong>šej knižnice. Bude ilustrova , èo sme sa doteraz <strong>na</strong>uèili, abude využíva aj prístupové práva, ktoré sme tak prácne tvorili. Jej èinnos bude takáto:Obr. 9po zavolaní príslušnej stránky sazobrazí vstupný formulár. Po jehovyplnení sa návštevníkovi (alebozamest<strong>na</strong>ncovi) knižnice zobrazízoz<strong>na</strong>m kníh v knižnici. Tak ideme<strong>na</strong> to!Najprv si musíme vytvori súboraplikacia1.htm. Jeho obsah je <strong>na</strong> výpiseè. 10.Náš komunikatívny programZadaj prístupové meno a heslo do databáze:Meno : Heslo : Takto sme vytvorili dopytovací formulár, kde zadáme meno a heslo <strong>na</strong> prístup do databázy.Ako je zrejmé, tie sa uložia do premenných meno a heslo. Vyplnené údaje <strong>na</strong>koniecodošleme tlaèidlom s nápisom „Odoslanie formulára“. Všimnime si riadokktorý hovorí, ktorému <strong>sk</strong>riptu budú zadané údaje odoslané <strong>na</strong> spracovanie. Je to <strong>sk</strong>riptpriklad4a.php, ktorý je èiastoène upraveným <strong>na</strong>ším <strong>sk</strong>riptom priklad4.php z výpisu è.8. Zme<strong>na</strong> spoèíva v úprave riadka@$spojenie = MySQL_Connect(“localhost“,$meno,$heslo);kde sme „<strong>na</strong>pevno“ <strong>na</strong>písané meno používate¾a a jeho heslo – teda “root” a “heslo” –vymenili za premenné z formulára. Takto je nový <strong>sk</strong>ript variabilný, lebo za premennémôžeme dosadi ¾ubovo¾né meno a heslo.Za riadok so spojením môžeme doplni ešte jeden riadok:echo „Vítam Vás, $meno !“.““;ktorý zabezpeèí privítacie hlásenie pod¾a me<strong>na</strong> prihlasujúceho.A ako taký formulár vyzerá? Tak ako <strong>na</strong> obrázku è. 11.Ako vidíte, vyplnili sme prihlasovaciemeno riaditel a jeho heslodirektor. Stlaèíme sivé tlaèidlo, aak sú zadané údaje správne, dostanemeokno, ako je <strong>na</strong> obr. è. 12.Ak nie, <strong>na</strong>stane chyba. Keïže smechyby ošetrili a <strong>na</strong>hradili <strong>na</strong>šimi chybovýmihláseniami, môžeme v prípadezle zadaného me<strong>na</strong> alebo heslaObr. 11uvidie takýto obrázok (obr. è. 13).Dobrí fajnšmekri by vedeli do<strong>sk</strong>riptu vloži zopár formátovacíchtagov, ktoré by urobili peknú tabu¾kuokolo výpisu a podobne. To však nie jecie¾om tejto lekcie.Teraz máme hotovú prvú aplikáciu.Nie je ešte doko<strong>na</strong>lá, ale je aspoò funkèná.Vy<strong>sk</strong>úšajte si zadáva všetky menáa heslá, ktoré sme definovali v 9. a 10.èasti seriálu. Aspoò zistíte, ako reaguje.Všetky zdrojové texty nemusíteprácne odpisova , ale si ich môžeteObr. 12stiahnu z redakènej webovej stránky<strong>www</strong>.pcrevue.<strong>sk</strong> alebo mojej webovejstránky <strong>na</strong> adrese <strong>www</strong>.mior.host.<strong>sk</strong>.Zároveò vás tam èaká nieko¾ko zaujímavýchnoviniek.Nabudúce si <strong>na</strong>še nové poz<strong>na</strong>tkytrošku rozšírime.Obr. 13Miroslav Oravec10/2001 PC REVUE 123