Část I: Windows. Slezská univerzita v Opavě. Ústav informatiky

Rozměr: px
Začít zobrazení ze stránky:

Download "Část I: Windows. Slezská univerzita v Opavě. Ústav informatiky"

Transkript

1 Šárka Vavrečková Operační systémy cvičení Část I: Windows Slezská univerzita v Opavě Filozoficko-přírodovědecká fakulta Ústav informatiky Opava, poslední aktualizace 27. března 2012

2 Anotace: Tento dokument je určen pro studenty druhého ročníku IVT na Ústavu informatiky Slezské univerzity v Opavě. Obsahuje látku probíranou ve cvičeních předmětu Operační systémy v části semestru věnované Windows. Probíraná látka navazuje na předmět Praktikum z operačních systémů. Předpokládá se znalost základní orientace na Příkazovém řádku, v registru a běžných nástrojích s grafickým rozhraním. Operační systémy cvičení Část I: Windows RNDr. Šárka Vavrečková, Ph.D. Dostupné na: vav10ui/opsys.html Ústav informatiky Filozoficko-přírodovědecká fakulta Slezská univerzita v Opavě Bezručovo nám. 13, Opava Sázeno v systému L A TEX Tato inovace předmětu Operační systémy je spolufinancována Evropským sociálním fondem a Státním rozpočtem ČR, projekt č. CZ.1.07/2.3.00/ , Posílení konkurenceschopnosti výzkumu a vývoje informačních technologií v Moravskoslezském kraji.

3 Předmluva Co najdeme v těchto skriptech Tato skripta jsou určena pro studenty informatických oborů na Ústavu informatiky Slezské univerzity v Opavě. Ve cvičeních předmětu Operační systémy se v první části semestru probírají operační systémy z rodiny Windows a v druhé části semestru unixové systémy se zaměřením na Linux, tato skripta se využívají právě v první části semestru. Navazujeme na obdobná skripta z předmětu Praktikum z operačních systémů, tedy předpokládají se již základní znalosti práce ve Windows, v přístupových oprávněních a základ práce s Příkazovým řádkem. Na to, že jde o látku pouze pro část semestru, se skripta mohou zdát značně rozsáhlá. Důvodem je zařazení mnoha ukázkových (řešených) příkladů a motivačních (neřešených) úkolů, které mají pomoci při pochopení a osvojení si učiva. U některých příkazů jsou uvedeny také jejich obvyklé výstupy, také z důvodu často nedostatečných přístupových oprávnění studentů v učebnách. Některé oblasti jsou také navíc (jsou označeny ikonami fialové barvy), ty nejsou probírány a ani se neobjeví na testech jejich úkolem je motivovat k dalšímu samostatnému studiu nebo pomáhat v budoucnu při získávání dalších informací dle potřeby v zaměstnání. Značení Ve skriptech se používají následující barevné ikony: Nové pojmy, názvy souborů, obecné postupy, značení v příkazech, používané symboly, apod. jsou značeny modrým symbolem v poznámce na okraj, který vidíme také zde vpravo. Konkrétní postupy a nástroje (příkazy, programy, soubory, skripty), způsoby řešení různých situací, do kterých se může administrátor dostat, syntaxe příkazů atd. jsou značeny také modrou ikonou. Zelená je ikona vyznačující sekce, které jsou opakováním učiva z přednášek, jiné části těchto skript nebo z předchozího semestru (předmětu Praktikum z operačních systémů). P iii

4 iv Zvlášt je také vyznačen text, který je obvykle výstupem probíraných příkazů (včetně těch, jejichž spuštění vyžaduje vyšší přístupová oprávnění) nebo může jít o obsah některých souborů. Barva ikony je oranžová. Některé části textu jsou označeny fialovou ikonou, což znamená, že jde o nepovinné úseky, které nejsou probírány (většinou; studenti si je mohou podle zájmu vyžádat nebo sami prostudovat). Jejich účelem je dobrovolné rozšíření znalostí studentů o pokročilá témata, na která obvykle při výuce nezbývá moc času. Fialová ikona se objevuje také u některých neřešených úkolů. Tyto úkoly nejsou povinné a studenti se jimi mohou zabývat podle svých zájmů (jsou obvykle náročnější než jiné úkoly). Žlutou ikonou jsou označeny odkazy, na kterých lze získat další informace o tématu. Může jít o způsoby získání nápovědy, nejčastěji však u této ikony najdeme odkazy na internet. Červená je ikona pro upozornění a poznámky. Opticky jsou odlišeny také řešené příklady a neřešené úlohy. Příklady jsou číslovány, čísla slouží k jednoduchému odkazování na tyto příklady. M R L Příklad 0.1 Takto vypadá prostředí s příkladem. Číslo příkladu je 0.1. Úkoly Otázky a úkoly, náměty na vyzkoušení, které se doporučuje při procvičování učiva provádět, jsou uzavřeny v tomto prostředí. Pokud je v prostředí více úkolů, jsou číslovány. C Jak probíhají testy Na zápočtových testech z předmětů týkajících se operačních systémů lze používat počítač, a to nápovědu a nástroje běžně dostupné ve standardní instalaci daného operačního systému, ale bez přístupu na Internet. Nejsou dovoleny dokumenty vlastní ani cizí výroby, které nejsou součástí standardní instalace, nelze používat internetový prohlížeč ani jiný způsob přístupu na externí zdroje informací. Na stránkách předmětu je k dispozici orientační seznam otázek a úkolů, které se mohou objevit na testu, ovšem v testu se mohou objevit mírné odlišnosti (například v názvech zpracovávaných souborů či adresářů, jiné přepínače příkazů, apod.). Tato skripta plně pokrývají odpovědi na otázky, které se mohou objevit v zápočtovém testu č. 1 (Windows) v předmětu Operační systémy.

5 Obsah 1 Úvod do správy na Příkazovém řádku Prostředí Příkazového řádku Adresáře, soubory a pamět ová zařízení Vytvoření nového souboru Prohledávání souborů Virtuální disky Synchronizace a zálohování Údržba pamět ových zařízení Další příkazy Proměnné Dávkové soubory Pokročilejší úlohy na Příkazovém řádku Správa sítě Základní příkazy pro správu sítě Příkaz NET Příkaz NET uživatelé a skupiny Příkaz NET sdílení prostředků a správa domén Příkaz NET práce se službami a další úlohy NetShell Složené příkazy Propojení příkazů a podmíněné vyhodnocování Podmíněný příkaz Cyklus přes množinu Cyklus přes interval Hromadné zpracování dat Odlišnosti v nástrojích Příkazového řádku PowerShell v

6 vi Jak na PowerShell Pár typických úloh v PowerShellu Skripty Řízení přístupu Základní pojmy Objektový model ve Windows řady NT Objekty GDI objekty a stanice oken Model COM NET Řízení přístupu a správa uživatelů Uživatelské profily a uživatelské účty Přístupová oprávnění Navyšování přístupových oprávnění Jmenné a adresářové služby Úvod do DNS Active Directory Zásady a šablony Systémové zásady Zásady skupiny Šablony pro správu Šablony zabezpečení Služby a procesy Správa služeb Jak služby fungují Sdílené procesy služeb, Service Host Program sc.exe WBEM Princip a implementace WBEM WMI Program wmic Správa procesů Procesy ve Windows NT Úlohy a procesy Vztahy mezi procesy Priority procesů Plánování Komunikace mezi procesy

7 vii Schránka DDE OLE Zprávy Volání procedur Programové rozhraní Dynamicky linkované knihovny Lokální verze knihoven Win API Běh aplikací Kompatibilita verzí Windows Zařízení a paměti Správa zařízení Ovladače zařízení Instalace ovladačů Modely ovladačů Pamět ová zařízení Diskové kvóty Kontrola stavu disků Program diskpart Program fsutil Streamy v NTFS Správa paměti Adresování Stránkování Struktura paměti Správa paměti ve Windows od verze Vista Nasazení systému Konfigurace systému a aplikací Konfigurační soubory pro starší programy INI soubory INF soubory Registr Start systému Windows s DOS jádrem Windows 2000 a XP Windows Vista a novější Instalace Windows

8 viii Instalace Windows do verze XP Nástroje k bezobslužné instalaci Visty a novějších verzí Instalace Visty a novějších verzí Služba pro nasazení systému Windows (WDS) Aktualizace systému Chyby při běhu aplikací a systému Správa softwaru Instalace aplikací Instalační soubory aplikací IntelliMirror Přílohy 197 A Ladění programů a jádra Windows 198 A.1 Princip ladění A.2 Dr. Watson A.3 WinDbg A.3.1 Instalace a nastavení programu A.3.2 Práce se souborem výpisu při zhroucení Windows A.3.3 Práce ve WinDbg bez načtení DBG souboru A.3.4 Funkce napojení se na proces Literatura 209

9 Kapitola 1 Úvod do správy na Příkazovém řádku V této kapitole prohloubíme naše znalosti o používání Příkazového řádku. Navážeme na to, co jsme se naučili v minulém semestru, a probereme základní příkazy, které můžeme využít při správě systému, podíváme se na dávkové soubory. 1.1 Prostředí Příkazového řádku Navazujeme na učivo z předchozího semestru. Kdo měl problémy se základy Příkazového řádku, ten si urychleně zopakuje příslušnou kapitolu ze skript předmětu Praktikum z operačních systémů ( win.pdf). Víme, že Příkazový řádek lze spustit příkazem cmd.exe nebo přes nabídku Start. Příkazy, které lze spustit v Příkazovém řádku, můžeme rozdělit do dvou skupin: vnitřní příkazy jsou implementovány přímo v souboru cmd.exe, většinou se jedná o základní a jednoduché příkazy jako například kopírování souborů nebo procházení mezi adresáři (složkami), vnější příkazy jedná se o spustitelné soubory (s příponou COM, EXE, MSC, apod.), tuto skupinu příkazů můžeme libovolně rozšiřovat instalací nových programů. Je obvykle jedno, jestli příkaz napíšeme malými nebo velkými písmeny (až na výjimky). V tomto dokumentu jsou při prvním použití většinou použita velká písmena. Jen málokdo si pamatuje název a přesnou syntaxi jednotlivých příkazů, už proto, že verzi od verze těchto příkazů neustále přibývá. Proto bychom měli zvládnout vyhledání nápovědy k příkazu. To lze několika způsoby: program help, lze použít také ve tvaru help more (výpis nápovědy po stránkách, výpis přerušíme klávesou q ), nápověda k určitému příkazu ve formátu příkaz /? nebo help příkaz, systém nápovědy Windows přes tlačítko Start, vhodná klíčová slova se liší v různých verzích Windows (většinou lze použít klíčové slovo příkazy nebo příkazový řádek ). E P 1

10 1.1 PROSTŘEDÍ Příkazového řádku 2 Program help (at už s parametrem nebo bez něj) funguje pouze pro starší příkazy. U většiny příkazů (především těch pro práci se sítí) proto volíme spíše zobrazení nápovědy použitím parametru /?. Nezapomeňte, že před každým parametrem musí být mezera, ale uvnitř parametru mezera nesmí být (ani za lomítkem), pokud není uzavřen do uvozovek. Práci s Příkazovým řádkem může zjednodušit program doskey (ve Windows od verze 2000 je automaticky spuštěn). Nabízí kromě jiného možnost používat historii příkazů:, : zobrazíme (příp. i upravíme) předchozí/následující příkaz z historie,, : posun o znak doleva/doprava v zadávaném příkazu, F7 zobrazí celou historii příkazů, šipkami je možné si vybrat ze seznamu, Alt+F7 smaže historii příkazů. Příkazový řádek je možné spouštět i s parametry, tak lze určovat jeho vlastnosti nebo stanovit příkazy, které se provedou hned po spuštění příkazového řádku, viz tabulku 1.1. Pokud je použito Příklad cmd /k příkaz cmd /k CD C:\program files cmd /k C:\nastav.bat cmd /c příkaz cmd /t:xy Význam hned po spuštění příkazového řádku se provede zadaný příkaz pracovním adresářem se stane adresář uvedený v příkazu CD pokud existuje tento dávkový soubor, pak se provede hned po startu Příkazového řádku totéž jako /k, ale po provedení příkazu bude Příkazový řádek ukončen nastaví barvy pozadí (x) a textu (y) obrazovky, x a y jsou hexadecimální číslice, barvy lze měnit také příkazem color, proto možnosti barevných kombinací lze získat příkazem color /? P více přepínačů, pak /k a /c musí být poslední. Tabulka 1.1: Parametry příkazového řádku Přepínače můžeme používat při spuštění Příkazového řádku z menu Start Spustit nebo využít možnosti Windows při definování zástupců (do příkazové řádky zástupce napíšeme celý příkaz včetně parametrů). Úkoly 1. Vzpomeňte si na aplikaci Process Explorer od firmy Sysinternals, se kterou jsme se seznámili v předchozím semestru. Pokud ho nemáte k dispozici, stáhněte z internetu. Spust te Process Explorer, potom spust te Příkazový řádek a obě okna umístěte tak, aby byla obě zároveň viditelná. V Process Exploreru najděte ve stromové struktuře záznam Příkazového řádku (cmd.exe). V Příkazovém řádku spust te postupně následující příkazy a sledujte v okně Process Exploreru, co se stane s řádkem cmd.exe: C

11 1.2 ADRESÁŘE, SOUBORY A PAMĚŤOVÁ ZAŘÍZENÍ 3 netsh program netsh budeme probírat později, jde o prostředí s rozsáhlými možnostmi konfigurace především sít ových nastavení; práci v prostředí ukončíme příkazem exit, copy con d:\pokusny.txt opět budeme probírat později, příkaz copy slouží ke kopírování souborů, ale varianta s prvním parametrem con a druhým parametrem názvem souboru pracuje takto: vytvoří soubor s daným názvem (zde na disku D:), text, který od této chvíle budeme psát na klávesnici, se objeví na obrazovce (tj. zařízení con console) a pak se z obrazovky bude kopírovat do vytvořeného souboru, každý stisk klávesy Enter bude interpretován jako konec řádku, až nás přestane bavit psaní, stiskneme klávesu F6 a Enter (nebo klávesovou zkratku Ctrl+Z ) a interaktivní režim bude ukončen. Obě možnosti srovnejte. Poznáte podle zobrazovaných informací v Process Exploreru, který z těchto příkazů je vnitřní a který vnější? 2. Vytvořte na pracovní ploše zástupce s příkazem cmd /t:1e /k Z: (po spuštění poklepáním se stane pracovním diskem Z:, barvy jsou nastaveny na modré pozadí, žluté písmo). Barvu textu a pozadí upravte podle svého vkusu (vkusu!), pokud nemáte přístup na disk Z:, použijte jiné umístění. 3. Vzpomeňte si (nebo najděte v nápovědě), jakým způsobem lze příkaz dir spustit rekurzívně tedy zobrazit veškerý obsah uvnitř zadaného či pracovního adresáře včetně obsahu podadresářů, jejich podadresářů, atd., s potlačením nadbytečných informací (třeba záhlaví a zápatí). Vyzkoušejte na kořenový adresář disku C:, a zároveň vyzkoušejte klávesovou zkratku pro zastavení činnosti pracujícího programu Ctrl+C tuto zkratku si pamatujte, je velmi užitečná). 4. Vypište všechny soubory s příponou.msc nacházející se na disku C: (tj. rekurzívně). Některý z těchto souborů spust te (Pamatujete si, o jaké soubory se jedná?). 5. Proved te totéž co v předchozím úkolu, ale pro soubory s příponou.cpl, výstup přesměrujte do souboru panely.txt (umístěte do adresáře, ve kterém máte právo zápisu). 6. Vypište obsah adresáře neexistujici (případně jiného neexistujícího adresáře), výstup přesměrujte do souboru prazdny.txt, chybový výstup směrujte tamtéž (přičemž název souboru uvedete v celém příkazu pouze jednou). 7. Proved te totéž co v předchozím příkazu (využijte klávesu pro přesun v historii příkazů), ale chybový výstup přesměrujte tak, aby se nikam nezobrazil ani neuložil. 8. Výstup příkazu time /t směrujte tak, aby se uložil na konec souboru cas.txt (tj. přidávejte na jeho konec k původnímu obsahu, který zůstane zachován). Příkaz včetně směrování spust te několikrát za sebou (využijte historii příkazů), pak zkontrolujte soubor s výslednými časovými údaji.

12 1.2 ADRESÁŘE, SOUBORY A PAMĚŤOVÁ ZAŘÍZENÍ Adresáře, soubory a pamět ová zařízení Vytvoření nového souboru Nový soubor můžeme vytvořit několika způsoby. Předně se může jednat o výstup některého programu, což můžeme zajistit i ručně přesměrováním výstupu některého příkazu do souboru. Existuje však také způsob, jak vytvořit nový soubor s originálním obsahem. Příklad 1.1 V pracovním adresáři vytvoříme nový soubor s názvem soubor.txt: COPY CON soubor.txt Enter... (nějaký obsah souboru)... Ctrl+Z nebo F6, pak Enter Klávesová kombinace Ctrl+Z nebo F6 vytvoří textový znak znamenající konec souboru. Podobný postup můžeme využít, pokud chceme k existujícímu souboru připojit daší řádky: COPY soubor.txt+con soubor.txt... (řádky, které chceme připojit)... Ctrl+Z nebo F6, pak Enter Enter Výsledek můžeme samozřejmě uložit i do jiného souboru než původního. Nové řádky se přidají na konec souboru. Kdybychom obrátili pořadí operandů kolem symbolu +, přidaly by se nové řádky na začátek souboru. Úkoly 1. V adresáři, kde máte právo zápisu, vytvořte pomocí COPY CON textový soubor. Pak ho přejmenujte pomocí REN, setřid te a výsledek třídění uložte do jiného souboru, ten vypište pomocí TYPE. 2. Vytvořte v pracovním adresáři soubor pokus1.txt, napište do něj jakýkoliv text (několik řádků) a uložte. Potom ho zkopírujte do téhož adresáře na soubor s názvem pokus2.txt, otevřete, na některém řádku pozměňte jeden znak (tak aby se délka souboru nezměnila) a uložte. Dále porovnejte oba soubory postupně pomocí příkazů FC a COMP a porovnejte jejich výstupy. U příkazu COMP vyzkoušejte také uvedené přepínače. 3. Na začátek souboru pokus1.txt, který jste vytvořili v předchozím úkolu, přidejte řádek jakéhokoliv textu, a podobně také na jeho konec použijte metodu příkazu copy con uvedenou výše v druhé části příkladu 1.1. C

13 1.2 ADRESÁŘE, SOUBORY A PAMĚŤOVÁ ZAŘÍZENÍ Prohledávání souborů Zopakujeme si dva z nejdůležitějších příkazů pro zpracování textu příkazy pro vyhledávání. Víme, že ve Windows existují dva jednodušší FIND a pokročilejší FINDSTR. Používáme je nejen tehdy, když potřebujeme v existujícím textovém souboru najít řetězec odpovídající zadanému klíčovému slovu nebo regulárnímu výrazu, ale především (a nejčastěji) tehdy, když chceme zpracovat a profiltrovat výstup některého jiného příkazu. Typické použití je tedy ve formě filtru zřetězeně v rouře. Syntaxi příkazu findstr známe, případně si ji můžeme najít v nápovědě findstr /? Pro základní orientaci: prvky, které lze použít v regulárním výrazu, jsou v tabulce 1.2. Prvek Význam. Libovolný znak * Nula nebo více výskytů předcházejícího znaku nebo třídy ˆ Začátek řádku (znak stříška ) $ Konec řádku [znaky] Jakýkoli (jeden) znak z množiny v závorkách [ˆznaky] Jakýkoli znak mimo prvky množiny [x-y] Jakýkoli znak v rozsahu daném dvěma znaky (jeden znak) \<text Začátek slova text\> Konec slova Tabulka 1.2: Regulární výrazy v příkazu findstr Příklad 1.2 V předchozím semestru jsme se již s vyhledáváním trochu seznámili, ted si pro připomenutí dáme pár příkladů. V adresáři windows\system32 (což je právě náš pracovní adresář) a případně jeho podadresářích se nachází hodně programů, které lze spustit na příkazovém řádku. Chceme najít příkazy související s diskem, zřejmě budou mít v názvu podřetězec disk, přípona může být libovolná: dir /S /B findstr disk V pracovním adresáři si vytvoříme testovací soubor pokus.txt: P:\> copy con pokus.txt slovo první řádek znakový soubor druhý znak slovo třetí řádek znak, čárka čtvrtý řádek příznak slovo Stiskneme postupně klávesy F6 a Enter. Dále budeme vyhledávat v tomto souboru: findstr první řádek pokus.txt očekávali bychom, že bude nalezen a vypsán pouze první řádek souboru, ale ve skutečnosti se vypíšou všechny řádky mezeru ve výrazu totiž tento příkaz chápe jako operátor OR, tedy jsou vypsány řádky obsahující jeden nebo druhý řetězec (nepomůže ani escape sekvence opačné lomítko před mezerou)

14 1.2 ADRESÁŘE, SOUBORY A PAMĚŤOVÁ ZAŘÍZENÍ 6 findstr /c: první řádek pokus.txt vypíše se opravdu jen první řádek, řetězec mezi uvozovkami je brán jako celek (pozor, je omezen význam metaznaků) findstr znak pokus.txt vyhledá všechny výskyty řetězce znak v zadaném souboru, tedy vypíše všechny řádky (nachází se na všech) findstr znak\> pokus.txt najde slova končící řetězcem znak, tj. taková, za nimiž je některý oddělovač (mezera, čárka, tečka, středník apod.), předpona je dovolena vypíše druhý, třetí a čtvrtý řádek findstr \<znak\> pokus.txt vyhledá všechny výskyty slova znak obklopené některými oddělovači, v našem případě vypíše pouze druhý a třetí řádek (na ostatních řádcích má toto slovo ještě předponu nebo příponu) findstr znak[o,] pokus.txt vypíšou se řádky obsahující některý z řetězců znako nebo znak,, tedy první a třetí findstr znak[ˆo,] pokus.txt výsledek je opačný vzhledem k předchozímu, vypíšou se řádky obsahující řetězec znak, za kterým nenásleduje písmeno o ani čárka (tj. druhý a čtvrtý řádek) findstr ˆdru pokus.txt hledáme řádek začínající řetězcem dru, to je druhý řádek (všimněte si duality významu metaznaku ˆ ) findstr soubor$ pokus.txt vypíše se řádek, který končí řetězcem soubor findstr /c: \<znak\> pokus.txt chyba, takto je výraz brán jako literál a hledá se řetězec \<znak\>, nikoliv řetězec znak obklopený oddělovači (tj. nevypíše se nic, takový řetězec v souboru nemáme) findstr \<znak\> slovo pokus.txt vypíšou se všechny řádky, na každém je bud samostatný řetězec znak nebo řetězec slovo findstr /c: znak slovo pokus.txt získáme druhý a třetí řádek, tam jsou tyto řetězce přímo za sebou (i když první není samostatné slovo obklopené oddělovači) findstr /c: znak slovo pokus.txt findstr \<znak\> takto jsme určili řetězec, ve kterém je znak samostatné slovo a je následován řetězcem slovo krkolomné, ale funguje to findstr \<znak\> *.txt projde všechny soubory s příponou TXT nacházející se v pracovním adresáři a hledá tam zadaný řetězec, vždy napíše název souboru a pak nalezený řádek, v našem případě (předpokládejme, že se řetězec nachází ještě v dalším souboru) pokus.txt:druhý znak slovo pokus.txt:třetí řádek znak, čárka pokus2.txt:což je typický znak těchto typů programů M

15 1.2 ADRESÁŘE, SOUBORY A PAMĚŤOVÁ ZAŘÍZENÍ 7 findstr /N \<znak\> *.txt přidá se číslo řádku, výstup: pokus.txt:2:druhý znak slovo pokus.txt:3:třetí řádek znak, čárka pokus2.txt:51:což je typický znak těchto typů programů findstr /M \<znak\> *.txt nevypíšou se řádky s nalezeným řetězcem, ale pouze soubory, ve kterých se hledaný řetězec nachází, výstup může vypadat například takto: pokus.txt pokus2.txt findstr /S /M /I \<znak\> *.txt parametr /S způsobí rekurzivní chování programu prohledávají se všechny soubory vyhovující masce *.txt, a to rekurzívně v celém podstromě podadresářů pracovního adresáře, vypisují se opět pouze názvy souborů (protože jsme použili parametr /M), navíc se porovnává bez rozlišování malých a velkých písmen (parametr /I) findstr /V slovo pokus.txt vypísou se řádky, na kterých se nenachází řetězec slovo, tedy pouze třetí řádek M M Úkoly 1. Vyzkoušejte si příkazy z příkladu Zjistěte, zda v souboru C:\Windows\WindowsUpdate.log je řádek začínající řetězcem obsahujícím záznam ve tvaru rok měsíc den pro současné datum (například ). 3. Pro přemýšlivé: jak by vypadal příkaz, který by dokázal totéž, co v předchozím úkolu, provést souhrnně přes všechny LOG soubory rekurzívně v pracovním adresáři? C Virtuální disky Pokud je cesta do adresáře příliš dlouhá, můžeme si ji jednoduše zkrátit podobně jako oddílu na disku lze písmeno přidělit také adresáři. Příkaz SUBST vytvoří virtuální disk s označením X: směrovaný na zadaný adresář, označení disku volíme tak, aby nekolidovalo s existujícími disky v systému. Používáme například tehdy, když chceme tentýž adresář (s dlouhou specifikací) používat často, ale nechce se nám jeho celý název vypisovat. Použitelné také ve Windows, disk s tímto označením se objeví ve všech běžných správcích souborů. Příklad 1.3 Následující dva příkazy můžeme použít přímo za sebou (žádný disk s přiřazeným písmenem G: do této chvíle ještě neexistoval).

16 1.2 ADRESÁŘE, SOUBORY A PAMĚŤOVÁ ZAŘÍZENÍ 8 subst G: Z:\adr1\adr2\adr3 vytvoří virtuální disk s písmenem G:, který ukazuje na zadaný adresář copy soubor.xxx G: do adresáře kopírujeme soubor, můžeme používat jakkoliv běžným způsobem subst G: /d zruší přiřazení virtuálního disku, uvolní písmeno, které jsme pro něj použili (zde X) Úkoly 1. Zjistěte, které písmeno pro jednotky je ještě volné (zvolte některé spíše několik písmen před koncem abecedy). To lze například v některém souborovém manažerovi či Průzkumníkovi, v úvahu obvykle připadají písmena W, T, Y nebo podobná. Toto písmeno přiřad te virtuálnímu disku, který vytvoříte jako přístupovou jednotku pro adresář C:\Windows\system Přiřazení písmene virtuálnímu disku vytvořené v předchozím úkolu využijte při kopírování souboru charmap.exe, který je v uvedeném adresáři (a tedy i na virtuálním disku), na disk D:. 3. Zrušte přiřazení písmene virtuálního disku, které jste vytvořili v předchozích úkolech, a soubor, který jste nakopírovali na disk D:, smažte. C Synchronizace a zálohování Poměrně častým úkonem při práci s daty je synchronizace a zálohování dat. Jde o to, abychom s minimálním úsilím zajistili zjištění rozdílů mezi původním a novým umístěním a abychom měli na více místech aktuální synchronizovaná data. XCOPY kopíruje nejen soubory, ale zvládne i celé adresářové struktury. Má také další funkce, díky kterým ho lze použít pro pokročilejší zálohování xcopy d:\dopisy g:\ /s rekurzívně (parametr /s) zkopíruje celý adresář z prvního parametru na disk G: (to může být třeba USB flash disk), pokud je některý podadresář ve struktuře prázdný, nezkopíruje ho xcopy d:\dopisy g:\ /s /e totéž, ale navíc kopíruje i prázdné adresáře (empty) xcopy d:\dopisy g:\ /s /m kopíruje pouze soubory s nastaveným atributem archivovat, tento atribut po kopírování na zdroji vždy odstraní (je pak nastaven při následovné změně souboru) při opakovaném používání příkazu zálohujeme pouze ty soubory, které se od posledního zálohování změnily xcopy d:\dopisy g:\ /s /d porovnává datum poslední změny každého souboru ve zdrojovém a cílovém adresáři (také rekurzívně v podadresářích) a kopíruje jen ty soubory, které byly změněny od posledního zálohování

17 1.2 ADRESÁŘE, SOUBORY A PAMĚŤOVÁ ZAŘÍZENÍ 9 xcopy d:\dopisy g:\ /s /d: budou kopírovány pouze soubory, které byly změněny po zadaném datu ( , formát je měsíc den rok), a to rekurzívně i v podadresářích xcopy d:\dopisy g:\ /s /L > seznam.txt parametr /L znamená, že ve skutečnosti se nebude kopírovat, jen bude vypsán seznam souborů, které by byly kopírovány (zde je přesměrován do souboru) xcopy d:\dopisy g:\ /s /h /k kopíruje také skryté a systémové soubory (parametr /h) a navíc zachová atributy (například jen pro čtení, systémový, apod., parametr /k) xcopy d:\dopisy g:\ /s /u provede pouze aktualizaci (update), kopíruje ze zdroje jen ty soubory, které v cíli již existují xcopy d:\dopisy \\pocitac\evidence /s /z parametr určený pro kopírování v síti, pokud dojde k přerušení kopírování, dokáže po obnovení spojení navázat a pokračovat v kopírování (také ukazuje procento průběhu kopírování) ROBOCOPY zdroj cíl určení_souborů parametry robustní kopírování tento nástroj najdeme až od verze Vista (ale příkaz xcopy odstraněn nebyl, existují simultánně), je navržen prakticky přímo za účelem zálohování a rozsáhlých přesunů datových struktur robocopy D:\mojedata G:\zaloha jednoduše zálohuje všechny soubory z prvního umístění do druhého umístění (bez podadresářů), určení souborů je výchozí (*.*, tedy všechny) robocopy D:\mojedata \\server\d$\zaloha podobně, zálohujeme na server, jehož adresu jsme zadali ve formě UNC, všimněte si, jakým způsobem jsme zadali adresář na disku D: na serveru (vzpomínáte na skrývání názvů sdílených položek?) robocopy D:\mojedata G:\zaloha *.xlsx pouze excelovské soubory (se zadanou příponou) robocopy D:\mojedata G:\zaloha /e /np první parametr určuje, že se má kopírovat i obsah podadresářů, včetně prázdných, druhý parametr způsobí, že se během kopírování nezobrazuje průběh, což šetří čas robocopy D:\mojedata G:\zaloha /s /np /mir první parametr znamená, že budou kopírovány i podadresáře, ale narozdíl od /e se případný prázdný adresář ze zdroje v cíli neobjeví, druhý parametr již známe, třetí určuje, že se má provést zrcadlení (mirroring) celá struktura ze zdroje se zohlední v cíli (berou se v úvahu změny, souborů beze změn si příkaz nebude všímat), a pokud byl od poslední zálohy některý prvek ve zdroji smazán, bude smazán i v cíli (pozor, to může být za určitých okolností nebezpečené) robocopy D:\mojedata G:\zaloha /s /np /mir /log:zaloha.log totéž jako předchozí, navíc je proces zálohování logován do zadaného souboru (taktéž výstup příkazu nebude vypisován na obrazovku, ale pouze do log souboru) robocopy D:\mojedata G:\test /s /create jakási poloviční simulace kopírování v cílovém adresáři pouze vytvoří adresářovou strukturu stejnou jako je ve zdroji, soubory v cíli sice vytvoří, ale s nulovou délkou (tj. vpodstatě zkopíruje pouze obsah adresářů, obsah souborů nikoliv)

18 1.2 ADRESÁŘE, SOUBORY A PAMĚŤOVÁ ZAŘÍZENÍ 10 Veškeré možnosti robocopy zde nebudeme probírat je možné například pracovat s atributy souborů a adresářů (včetně atributu archivace), vylučovat určité soubory a adresáře z kopírování, filtrovat podle data změny souborů a pracovat s časovými razítky, odložit kopírování na restart systému (aby bylo možné kopírovat i ty soubory, které jsou obvykle uzamknuté systémem), přesouvat místo kopírování, optimalizovat kopírování po síti pro nižší propustnost, atd. Další informace: Úkoly 1. Zjistěte v nápovědě příkazu robocopy, jak lze zálohovat celý oddíl disku C: na server tak, aby se zálohování netýkalo souboru pagefile.sys ani adresáře System Volume Information, aby se zálohovala zrcadlila celá adresářová struktura a logovalo se do souboru vysledek.log. Poznámka: v reálu by vyloučených souborů a adresářů bylo samozřejmě více. 2. Sestavte příkaz, kterým zálohujete složku Dokumenty ze svého profilu (celou včetně obsahu rekurzívně) na disk F: (to může být třeba USB flash disk), a to tak, že jsou zálohovány pouze soubory s nastaveným atributem pro archivaci (během zálohování tento atribut odstraňujte). Použijte jeden z výše uvedených příkazů. 3. Sestavte příkaz, kterým zálohujete celou složku se všemi profily (rekurzívně) se stejným chováním k atributu pro archivaci jako v předchozím úkolu, ale cílem bude adresář nazvaný podle názvu tohoto počítače na serveru \\fileserver, a to tak, aby příkaz dokázal v případě poruchy sítě po obnovení spojení navázat na předchozí zálohování. 4. Pro příkaz robocopy existuje grafické uživatelské rozhraní (GUI) přímo od Microsoftu. Pokuste se o tomto GUI zjistit více. C R Údržba pamět ových zařízení Při údržbě pamět ových zařízení jako celku můžeme využít tyto příkazy: FDISK (pouze Windows s DOS jádrem) definuje pracovní oblasti disku (partitions, logické disky), po jeho použití je nutné logické disky zformátovat Poznámka: Ve Windows s NT jádrem používáme grafickou konzolu Správa disků (diskmgmt.msc) lokálně nebo ke správě vzdáleného počítače, kterou však nelze ovládat programově (ve skriptu). E

19 1.2 ADRESÁŘE, SOUBORY A PAMĚŤOVÁ ZAŘÍZENÍ 11 FORMAT X: zformátuje zadaný disk X: (připraví k použití, vytvoří souborový systém, tedy umožní na disk ukládat soubory), obsah disku samozřejmě vymaže. Pracuje se souborovým systémem FAT (po zadání určitých parametrů také FAT32). Výchozí nastavení (chování) tohoto příkazu je odlišné v systémech s DOS a NT jádrem. format X: /S (pouze Windows s DOS jádrem, ale může nedokumentovaně fungovat i na některých NT verzích) vytvoří systémový disk (nahraje nezbytnou část operačního systému) format X: /U (Windows s DOS jádrem; v NT je tato volba výchozí) hluboké formátování; u běžného formátování je pouze přepsána FAT (tabulka obsazení disku), tedy soubory je možné ještě obnovit, u hlubokého formátování je celý disk přepsán symboly s ASCII kódem #0 format X: /Q (Windows s NT jádrem, v DOS je výchozí) rychlé formátování, nemažou se data format X: /FS:souborový_systém (Windows s NT jádrem) formátuje na zadaný souborový systém, můžeme použít FAT, FAT32 nebo NTFS MOUNTVOL pracuje s přípojnými body diskových oddílů (je to obdobná funkce jako přípojné body v unixových systémech). Účelem je připojovat diskové oddíly (ale také výměnná zařízení) bez nutnosti přiřazování písmen. Můžeme vytvořit nebo zrušit přípojný bod, a nebo jen zobrazit diskové oddíly, které lze připojit. mountvol vypíše krátkou nápovědu a seznam diskových oddílů, které jsou k dispozici (at už připojené nebo nepřipojené), u připojených vidíme také přidělené písmeno jednotky nebo adresář bodu připojení mountvol c:\disky\prvni /L zjistíme, co konkrétně je v zadaném adresáři připojeno (pokud se jedná o bod připojení) mountvol c: /L zjistíme, kterému oddílu je zadané písmeno jednotky přiřazeno (je to vpodstatě varianta předchozího příkazu) mountvol c:\disky\prvni \\označenísvazku připojíme svazek (jeho označení zjistíme předchozími vypisovacími příkazy) do adresáře prvni (tento adresář musí už existovat), v tomto adresáři pak najdeme v adresářové struktuře obsah připojeného svazku mountvol c:\disky\prvni /D zrušíme přípojný bod (odpojíme) Diskové oddíly, které lze připojit, jsou označeny takto: \\?\Volume{označení GUID}\ kde označení GUID (Global Unique Identifier) je jednoznačné určení zařízení nebo jeho části (zde oddílu na disku), například \\?\Volume{865f1ff0-a863-11d9-9f02-806d f}\ Pozor, mountvol pracuje na nižší úrovni (na úrovni jádra) než příkaz subst pro virtuální disky. Důsledkem je, že potřebujeme vyšší přístupová oprávnění, označení disků není zrovna intuitivní a také mountvol nevidí virtuální disky vytvořené příkazem subst. E

20 1.2 ADRESÁŘE, SOUBORY A PAMĚŤOVÁ ZAŘÍZENÍ 12 Úkoly 1. Zjistěte, které oddíly disku jsou připojeny a pod jakými písmeny. Existují nějaké nepřipojené oddíly? 2. Vyberte si jakýkoliv oddíl z výpisu předchozího příkladu a zjistěte, kde v registru se jeho GUID nachází. C Další příkazy START Abychom spustili nějaký program v Příkazovém řádku, stačí napsat jeho jméno (příp. s cestou k tomuto programu) a potvrdit klávesou Enter. Tento příkaz však při spouštění programu rozšiřuje naše možnosti především tak, že umožňuje spuštění programu řídit pomocí parametrů. Například program notepad.exe je Windows aplikace Poznámkový blok. V Příkazovém řádku tuto aplikaci můžeme spustit několika způsoby: notepad.exe spustí Poznámkový blok, jakobychom použili grafické prostředí, Příkazový řádek nečeká na ukončení aplikace a hned zobrazí prompt START notepad.exe provede totéž START /wait notepad.exe spustí aplikaci a počká na její ukončení, teprve pak zobrazí prompt a očekává příkazy START /min notepad.exe aplikace se spustí minimalizovaná (přepínač může mít v někt. Windows tvar /m) START /max notepad.exe aplikace se spustí maximalizovaná START /low notepad.exe aplikace se spustí s nízkou prioritou (vysoká priorita se určuje parametrem /high) START notepad.exe soub.txt spustí aplikaci a předá jí zbytek řádku jako parametry START soub.txt spustí aplikaci ve Windows asociovanou s příponou TXT (obvykle Poznámkový blok) a jako parametr jí předá soubor soub.txt START /i cmd spustí nové okno Příkazového řádku (cmd.exe) jako by bylo spuštěno přímo z Windows (nové okno apod.) START explorer.exe /e,d:\clanky spustí Průzkumníka Windows se zadanými parametry parametr /e patří již programu explorer.exe, ne start, způsobí, že hned po startu je zadaný adresář (nebo disk, zde d:\clanky) aktivní ASSOC, FTYPE příkazy pro definování asociací přípon souborů a programů. První příkaz slouží k přiřazení typu souboru dané příponě, druhý pak k přiřazení aplikace danému typu souboru. Syntaxe: ASSOC přípona=typ FTYPE typ=aplikace Například: assoc vypíše seznam asociací přípon a typů souborů

21 1.3 PROMĚNNÉ 13 ftype vypíše seznam přiřazení typů souborů a aplikací assoc.htm=textfile souborům s příponou HTM je přiřazen typ textfile, to znamená, že soubor s touto příponou se po poklepání otevře v programu určeném pro tento typ (obvykle Poznámkový blok) assoc.html=htmlsoubor pro soubory s příponou HTML jsme vytvořili nový souborový typ assoc.abc= odstranili jsme asociaci definovanou pro příponu ABC ftype htmlsoubor=pspad.exe %1 souborovému typu vytvořenému v předchozím příkazu jsme přiřadili aplikaci PSPad, má se vždy spustit s jedním parametrem, kterým je název otevíraného souboru (tj. když v grafickém rozhraní poklepeme na soubor s danou příponou, otevře se v této aplikaci) ftype htmlsoubor= odstranili jsme nadefinovaný souborový typ EXPAND rozbalení souborů s příponou CAB (jde o archivy podobně jako například ZIP) expand zdroj.cab d:\cíl rozbalí zadaný soubor do adresáře, který je druhým parametrem příkazu expand zal*.cab f:\rozbalene rozbalí soubory s názvem zadaným maskou do adresáře, který je druhým parametrem Zajímavý seznam příkazů s vysvětlením je například na Úkoly 1. Spust te některou menší aplikaci s grafickým rozhraním (notepad.exe, calc.exe, apod.) s nižší a potom naopak vyšší prioritou, a to s minimalizovaným oknem. Výsledek zkontrolujte ve Správci úloh nebo Process Exploreru. 2. V nápovědě příkazu start zjistěte, jaké další přepínače lze použít pro nastavení priority spouštěné aplikace. 3. Vyzkoušejte všechny uvedené příklady spouštění aplikací a souborů s asociovanou příponou. 4. Asociujte příponu.xxx s typem txtfile. Pak vytvořte v pracovním adresáři nový soubor s touto příponou (vzpomeňte si na copy con) a z Příkazového řádku tento soubor otevřete (pak zase uzavřete). 5. Asociaci vytvořenou v předchozím úkolu zkontrolujte v registru (najděte klíč s názvem.xxx). 6. Vytvořte nový souborový typ textovysoubor a přiřad te mu kteroukoliv aplikaci, která umí zobrazit textové soubory (nezapomeňte na parametr za názvem aplikace). Pak s tímto souborovým typem asociujte příponu.xxx a výsledek opět zkontrolujte v registru. 7. Uklid te po sobě soubor s příponou XXX, který jste vytvořili v předchozích úkolech, smažte. Potom odstraňte také vytvořenou asociaci a souborový typ. C R

22 1.3 PROMĚNNÉ Proměnné Z předchozího semestru již víme, že na Příkazovém řádku lze používat proměnné, které obvykle chápeme jako řetězcové. Víme také, že existují systémové proměnné definované v systému, společné pro všechny uživatele, v registru je najdeme v klíči HKLM/System/CurrentControlSet/Control/Session Manager/Environment uživatelské proměnné totéž, ale definované uživatelem a platné jen pro něj, v registru je najdeme v klíčích HKCU/Environment HKCU/Volatile Environment dynamické proměnné jejich obsah je při každém volání generován dynamicky (nejsou nikde fyzicky uloženy), nelze do nich ukládat ani vytvářet vlastní nové, jsou to např. TIME, RANDOM, ERRORLEVEL a další, nejsou uloženy v registru. Proces má své vlastní prostředí, ve kterém běží a kde má uloženo vše, co potřebuje a k čemu má přístup. Odtud máme název proměnné prostředí jsou to prostě proměnné, které má proces namapovány ve svém prostředí. Jde bud o proměnné, které si proces importoval ze systémových či od uživatele, ale také o proměnné, které si proces vytvořil pro svou vlastní potřebu. Dynamické proměnné nejsou mapovány do prostředí procesu, pouze systémové a uživatelské. V Příkazovém řádku pracujeme s proměnnými (kromě dynamických) pomocí příkazu set, který slouží k výpisu seznamu proměnných (případně lze vypsat jen některé proměnné zadáme řetězec, který se má vyskytovat v jejich názvu), a dále k vytváření nových proměnných či změně jejich obsahu. Dále využíváme příkaz echo, který vypisuje jakékoliv řetězce včetně proměnných. Pro výpis dynamických proměnných nelze použít příkaz set, proto například píšeme echo %random%, pokud chceme vypsat Thunderbird v Process Exploreru Obrázek 1.1: Proměnné prostředí procesu náhodné číslo. Obecně platí, že pokud chceme hodnotu dynamické proměnné, musíme ji uzavřít do znaků %, například v parametru příkazu echo. P Příklad 1.4 Několik ukázek pro připomenutí: set vypíše seznam definovaných proměnných (kromě dynamických) i s jejich obsahy set computername vypíše obsah proměnné computername (z názvu proměnné je zřejmé, že jde o název počítače)

23 1.3 PROMĚNNÉ 15 set mojeprom = abc vytvoří novou proměnnou s názvem mojeprom a iniciuje ji řetězcem abc, pokud již existuje, tak pouze změní její hodnotu echo Název počítače: %computername% vypíše zadaný řetězec, místo názvu proměnné dosadí hodnotu zadané proměnné (obklopení symboly % určuje řetězec k interpretaci, vyhodnocení) set prom=právě přihlášen: %username% do proměnné můžeme uložit i momentální obsah jiné proměnné, také v kombinaci s čímkoliv dalším set pomocna = %random% do proměnné pomocna jsme načetli náhodné číslo (všimněte si, že proměnná random, která je dynamická, je sice na řádku se zakázaným příkazem set, ale tímto příkazem vlastně není vypisována, příkaz pouze využívá její předem získanou hodnotu) dir %WINDIR% %systemdrive% cd %USERPROFILE% přesun do adresáře s instalací Windows přesun na systémový disk SET PATH=%PATH%;X:\MUJ_PROG přesun do vlastního profilu přidáváme další cestu do proměnné PATH Počítáme. U příkazu set lze použít parametr /a. Následující řetězec pak bude považován za matematický výraz. Můžeme používat běžné aritmetické operátory a také některé bitové operace, seznam najdeme ve výpisu set /?. Pokud chceme uvnitř výrazu (za přiřazovacím operátorem) použít proměnnou, umístíme výraz do uvozovek (potom všechny písmenné řetězce vpravo od přiřazovacího operátoru budou považovány za číselné proměnné a nahrazeny svou hodnotou). Příklad 1.5 Ukážeme si několik příkladů: set pom=2 vytvoříme novou proměnnou a inicializujeme ji na 2 set /a pom=2*(4-3+2) na pravé straně přiřazovacího příkazu je výraz, proto musíme použít parametr /a, díky kterému se s výrazem nezachází jako s řetězcem, ale před přiřazením se vypočte na pravé straně máme proměnnou, proto celý řetězec umístíme do uvo- set /a abc=30-pom zovek set /a abc=30 % pom použili jsme operátor pro zbytek po celočíselném dělení (modulo) set /a pom+=2 další z forem přiřazení (k proměnné se přičte číslo 2) set /a 152*4 vypíše výsledek výpočtu (608), použijeme pro rychlé výpočty set /a %random%+50 dynamické proměnné musíme uzavřít mezi symboly procenta (ostatní proměnné můžeme, ale nemusíme), jinak je za ně dosazeno číslo 0; v tomto příkazu jsme určili spodní hranici pro generovaná náhodná čísla set /a 0x2af7 převede zadané hexadecimální číslo na desítkové (zde 10999)

24 1.4 DÁVKOVÉ SOUBORY 16 Úkoly 1. Vyzkoušejte si příkazy z příkladu 1.5 (vytvořené proměnné budou existovat jen do vypnutí či restartu počítače, takže jich můžete vytvořit kolik chcete). 2. V nápovědě příkazu set najděte seznam podporovaných operátorů (je třeba použít nápovědu v textovém režimu set /?). 3. V příkladu 1.5 je uveden příkaz, kterým lze stanovit spodní hranici pro generování náhodných čísel proměnnou %random%. Zamyslete se nad tím, jak lze generovaná čísla omezit shora. Nápověda: můžete použít zbytek po celočíselném dělení, neztrat te se v symbolech procent. C R 1.4 Dávkové soubory Dávkové soubory jsou soubory s příponou BAT (z anglického batch file). V dávkovém souboru můžeme vytvořit tzv. dávku příkazů, tedy posloupnost příkazů, která se má provést. Jde o textové soubory, které můžeme editovat například pomocí programu EDIT či notepad (nebo jakéhokoliv jiného programu pracujícího s ASCII soubory), ale přitom to jsou spustitelné soubory jako třeba EXE (ve skutečnosti jsou interně spouštěny jako parametr příkazu cmd). Lze je spustit z Příkazové řádky nebo přímo ve Windows poklepáním jako kterékoliv jiné spustitelné soubory. Dávkový soubor může mít také parametry (při spuštění se píšou za název BAT souboru, oddělují se mezerou), uvnitř souboru se k nim dostaneme přes proměnné %0, %1,..., %9, kde %0 je samotný název dávkového souboru, %1 je první parametr, atd. Pokud nebyl parametr zadán, je v příslušné proměnné prázdný řetězec. REM Příkazy píšeme každý na nový řádek. Kromě dříve uvedených příkazů používáme: komentář (remark); všechno od tohoto příkazu do konce řádku je považováno za komentář (v některých konfiguračních souborech se místo příkazu rem používá středník) ECHO tento příkaz už trochu známe, slouží k řízení výpisu hlášení na obrazovku: ECHO text vypíše na obrazovku text (není třeba ho ohraničit uvozovkami) ECHO. zařádkuje na obrazovce (vypíše prázdný řádek) ECHO ON zapne výpis výstupů příkazů na obrazovku (implicitní nastavení), například pokud v následující posloupnosti příkazů je příkaz COPY..., na obrazovku se vypíše řádek s tímto příkazem a dále vše, co samotný příkaz posílá na výstup, ECHO OFF vypne výpis výstupů příkazů na obrazovku ECHO Název tohoto souboru je %0, první parametr je %1 vypíše název a první parametr dávkového souboru, ve kterém je tento vypne výpis na obrazovku u toho příkazu, jehož řádek tímto znakem začíná obvyklé použití OFF (příkaz sice vypíná výstup na obrazovku, ale až od následujícího řádku, P P

25 1.4 DÁVKOVÉ SOUBORY 17 proto na tento řádek musíme použít aby se nezobrazil), tímto řádkem začíná většina dávkových souborů CALL soubor.bat spuštění jiného dávkového souboru; programy EXE a COM lze spustit zadáním jejich jména, ale kdybychom totéž provedli s BAT souborem, tak po jeho provedení by původní dávkový soubor (ve kterém byl tento BAT soubor volán) byl násilně ukončen, proto je nutné použít příkaz CALL PAUSE pozastaví provádění dávkového souboru, používáme, když chceme, aby si uživatel přečetl text vypsaný na obrazovce (vykonávání dalších příkazů pokračuje po stisknutí kterékoliv klávesy) GOTO :návěští příkaz skoku (narozdíl od vyšších programovacích jazyků je v dávkových souborech nezbytný), lze odskočit na kterýkoliv řádek souboru, který označíme návěštím REM ukázka odskoku na řádek s návěštím :konec :zacatek... goto :zacatek... :konec M Návěští musí vždy začínat dvojtečkou (a neobsahuje mezery, ani za tou dvojtečkou), v příkazu goto je mezera před celým návěštím (tj. před dvojtečkou). SET /p proměnná=výzva vypíše na obrazovku výzvu, počká až uživatel něco napíše a stiskne Enter, pak to, co uživatel zadal, uloží do proměnné: SET /p soub=zadejte soubor, se kterým budeme dále pracovat: SHIFT posun obsahu parametrů souboru to, co bylo uloženo v %1, se přesune do %0, obsah %2 se přesune do %1 atd., do %9 se místo původního obsahu načte následující parametr, používá se, pokud má dávkový soubor více než 9 parametrů (dostaneme se tak i k desátému a následujícím). SETLOCAL, ENDLOCAL při použití v dávkovém souboru jsou všechny proměnné vytvořené mezi těmito dvěma příkazy pouze lokální (přesněji lokální jsou všechny změny související s příkazovým prostředím, obvykle jde o proměnné), platí jen v tomto bloku, a po ukončení interpretace tohoto dávkového souboru (nebo uvedení příkazu endlocal) přestanou existovat. Příklad 1.6 Ukážeme si použití příkazů setlocal a off... setlocal

26 1.4 DÁVKOVÉ SOUBORY 18 set path=%programfiles%\mujprogram;%path% set mojeprom= Moje proměnná set /p retezec=zadejte řetězec, který má být později vypsán: rem (ted uživatel něco napsal a stiskl Enter) echo Zadali jste: %retezec%... rem používáme vlastní nastavení proměnné path a proměnnou mojeprom... endlocal rem ted už má proměnná path původní hodnotu (bez našeho přídavku) rem a proměnné mojeprom a retezec neexistují Příkazy setlocal a endlocal mají také parametry, například lze vypnout či znovu zapnout tzv. rozšíření příkazů. 1 Podrobnosti o rozšíření příkazů můžeme zjistit například v nápovědě příkazu cmd. Nejen binární spustitelné soubory, ale také dávkové soubory mohou do dynamické proměnné errorlevel uložit svůj ukončovací kód. Provádí se to příkazem EXIT /B číslo Například když chceme v dávkovém souboru ukončit jeho běh, můžeme na daný řádek umístit příkaz exit /B 0 (to znamená, že jde o regulérní ukončení, k žádné chybě nedošlo). Pokud se rozhodneme pomocí proměnné errorlevel rozlišit různé typy chyb, tak například při problému s přístupem k souboru vypíšeme hlášení a provedeme exit /B 1, při nesprávně ukončeném kopírování exit /B 2, atd. podle vlastního rozhodnutí. Na stránce najdete krátké ukázky dávkových souborů. Dále je zajímavá stránka s vysvětlením parametrů dávkových souborů Úkoly 1. Vytvořte dávkový soubor, který na disku, kde máte právo zápisu, vytvoří adresář a do něho zkopíruje všechny soubory s příponou TXT z adresáře C:\. 2. Vytvořte dávkový soubor, ve kterém zajistěte, aby nadbytečné výstupy příkazů nebyly vypisovány, prompt nastavte na název právě přihlášeného uživatele (použijte příslušnou proměnnou), vypište právě přihlášeného uživatele (dopište ještě nějaký vysvětlující řetězec) pokud si nemůžete vzpomenout, jak se jmenuje proměnná obsahující název přihlášeného uživatele, E C 1 Rozšíření příkazů ovlivňuje poměrně mnoho příkazů (například for, assoc, cd, md, prompt, set, atd.). Obvykle rozšiřuje množství parametrů těchto příkazů nebo obohacuje jejich chování. Standardně jsou rozšíření příkazů zapnuta, což lze ovlivnit bud ručním zadáním příslušného přepínače v příkazu cmd při spuštění Příkazového řádku, a nebo změnou proměnné comspec.

27 1.4 DÁVKOVÉ SOUBORY 19 využijte faktu, že příkaz set vypisuje seznam všech proměnných obsahujících zadaný řetězec (tedy stačí zadat set user a zjistíme názvy všech proměnných, které mají co dělat s uživateli), požádejte o zadání řetězce s cestou k některému adresáři (pomocí proměnné), předpokládejte, že uživatel zadal platnou (skutečnou, správnou) cestu k některému adresáři a tento údaj využijte: nejdřív vypište hlášení o tom, že bude následovat strom s adresářovou strukturou v zadaném adresáři, pak vypište stromovou strukturu v zadaném adresáři (použijte obsah proměnné, kterou jste vytvořili při načtení řetězce od uživatele). 3. Zjistěte, jak lze spustit Příkazový řádek bez funkce rozšíření příkazů. Zjistěte (třeba v nápovědě), jak se zapnutí či vypnutí rozšíření příkazů projeví na funkcích příkazu start. R

28 Kapitola 2 Pokročilejší úlohy na Příkazovém řádku Pokračujeme v úlohách na Příkazovém řádku. Zaměříme se na správu počítače a zejména na správu sítě včetně vytváření skriptů, nahlédneme také do PowerShellu. 2.1 Správa sítě Upozornění: podrobnější informace k následujícím příkazům a samozřejmě další příkazy a příklady najdeme ve skriptech (v jejich přílohách) do předmětu Počítačové sítě a decentralizované systémy jsou na mých stránkách Základní příkazy pro správu sítě Důležité informace, které můžeme potřebovat i jako parametry některých následujících příkazů, najdeme v souborech obsažených v adresáři...\system32\drivers\etc (jsou to textové soubory, třebaže nemají příponu): P networks obsahuje doménové a IP adresy lokálních sítí, hosts je soubor urychlující mapování IP adres na známé doménové adresy, services obsahuje informace o známých sít ových službách, protocol totéž o známých sít ových protokolech. Tyto soubory vznikly z důvodu užitné kompatibility sít ového rozhraní se stroji s jinými operačními systémy. Soubory hosts a networks můžeme využít pro urychlení překladu názvů, který je za normálních okolností prováděn DNS serverem. Jestliže u některé často používané adresy známe dvojici název IP adresa a víme, že IP adresa je staticky přidělena (tudíž se nemůže změnit), můžeme tuto dvojici zaznamenat do souboru hosts (pokud jde o adresu konkrétního uzlu v síti) a nebo networks (pokud jde o adresu sítě či podsítě) a pak o překlad nemusí být zdlouhavě žádán DNS server. 20

29 2.1 SPRÁVA SÍTĚ 21 Dostat se k těmto souborům může být trochu problém, pokud pracujeme v 64bitových Windows a jsme v 32bitovém procesu (což je většina souborových manažerů třetích stran). V 64bitovém systému je totiž adresář System32 také 64bitový (navzdory svému názvu) a při přístupu z 32bitového procesu dochází k přesměrování. Rozhodně bychom se do adresáře etc nedostali postupným procházením adresářovou strukturou, pouze přímým zapsáním celé cesty k tomu souboru, se kterým chceme pracovat (například C:\windows\system32\drivers\etc\hosts), a nebo prací v 64bitovém procesu. Typické úlohy, se kterými se při práci se sítěmi běžně setkáváme, obvykle sestávají z práce s MAC a IP adresami, zjišt ování dostupnosti uzlů sítě, monitorování a dalších. Zde si ukážeme jen několik nejtypičtějších úloh, s dalšími se setkáme v předmětu Počítačová sít a internet. Na obrázku 2.1 je naznačen vztah mezi jednotlivými vrstvami sít ové komunikace, umístění typických protokolů do jednotlivých vrstev a adresace, která se na daných vrstvách používá. L Relační model ISO/OSI Relační model TCP/IP L7 L6 L5 Aplikační vrstva Prezentační vrstva Relační vrstva Aplikační vrstva POP3, IMAP FTP, SFTP SMTP atd. HTTP, HTTPS DHCP DNS L4 Transportní vrstva Transportní vrstva TCP, UDP porty L3 Sít ová vrstva Sít ová vrstva ICMP, IGMP IPv4, IPv6 IP adresy L2 L1 Linková vrstva Fyzická vrstva LLC MAC Vrstva sít ového rozhraní LLC (IEEE 802.2) Ethernet, Wi-fi,... MAC adresy Obrázek 2.1: Modely ISO/OSI, TCP/IP, protokoly a adresy Dále projdeme několik užitečných příkazů pro práci se sítěmi. IPCONFIG zobrazí konfiguraci protokolu TCP/IP a umožňuje také jeho (omezenou) konfiguraci ipconfig /all zjištění všech potřebných informací o sít ových kartách včetně IP adresy, brány, masky podsítě a MAC adresy ipconfig /release název_karty uvolnění IP adresy přidělené zadané sít ové kartě (když neuvedeme název karty, jsou uvolněny IP adresy všech karet) ipconfig /renew název_karty obnovení přidělení IP adresy pro zadanou sít ovou kartu (když není název karty uveden, provede se pro všechny karty)

30 2.1 SPRÁVA SÍTĚ 22 ipconfig /displaydns zobrazí záznamy adres přidělených v systému DNS (informace k příslušným DNS jménům včetně hodnoty TTL 1 ), a to jak ve směru doménové jméno IP adresa, tak i ve směru opačném (reverzní adresy, ty jsou v záhlaví označeny řetězcem in-addr.arpa ); vždy jsou zobrazeny alespoň dva záznamy (localhost a jeho reverzní adresa) Příklad 2.1 Chceme zjistit údaje o své sít ové kartě svou IP adresu, fyzickou (MAC) adresu, masku podsítě, adresu svého DNS serveru a další: ipconfig /all Zjistíme, že je nějaký problém máme zřejmě špatně přiřazenu IP adresu (například stejnou jako jiný počítač v síti, to se občas může stát), proto IP adresu uvolníme a pak znovu kartu aktivujeme (znovu požádáme o IP adresu) předpokládejme, že IP adresu dostáváme přes DHCP, potom si znovu ověříme, jakou máme adresu: ipconfig /release ipconfig /renew ipconfig /all PING ověřuje průchodnost připojení k zadanému počítači v síti, odesílá k tomuto počítači pakety a podle zaslaných odpovědí určuje, zda je počítač dostupný a jaká je odezva připojení (pokud má vzdálený počítač firewall nakonfigurovaný tak, aby požadavky ping byly ignorovány, může se počítač jevit jako nedostupný) ping zjistí, zda je zadaný server dostupný (je dostupný prakticky vždy, tedy pokud se zobrazí hláška, že tomu tak není, zřejmě nejsme připojeni k síti nebo je někde na cestě porucha) ping -n 2 tento parametr omezí (nebo u většího čísla navýší) počet odesílaných testovacích paketů, zde na 2; výchozí hodnota je 4 pakety ping -t počet odesílaných paketů není stanoven, posílají se opakovaně až do přerušení klávesovou zkratkou Ctrl+C Příklad 2.2 Jako parametr příkazu ping lze použít i číselnou IP adresu. Dokonce to může být i adresa loopback, což je vlastně zpětná smyčka, díky této adrese může počítač komunikovat i sám se sebou (resp. procesy na témže počítači mezi sebou) přes sít ové protokoly. Adresa loopback je , tedy můžeme otestovat: ping TTL (Time to Live) je čítač uložený v hlavičce IP datagramu, který se při průchodu kteréhokoliv směrovače na cestě snižuje (nejméně) o 1. Hlavním účelem je omezení počtu bloudících datagramů. Pokud hodnota TTL vyprší (klesne na 0), směrovač, který vypršení zjistí, už dál datagram neposílá, ale odešle zdroji datagramu informaci o překročení povoleného TTL.

31 2.1 SPRÁVA SÍTĚ 23 Tento příkaz je užitečný například tehdy, když chceme zjistit, zda je naše sít ová karta funkční. Pokud by příkaz hlásil nedostupnost, máme problém se sít ovou kartou. Jestliže máme správně přidělenu IP adresu, ale spojení v některých sít ových aplikacích přesto nefunguje (typicky v internetovém prohlížeči), může být problém v nesprávné adrese DNS serveru (to je server, který překládá doménové slovní adresy na číselné IP adresy a případně zpět). Ověříme si příkazem, ve kterém použijeme číselnou adresu, například ping (to je adresa veřejného DNS serveru Googlu; použijeme ji, protože je dobře zapamatovatelná a obvykle bez problémů funguje). Pokud příkaz nehlásí chyby, pak je určitě problém právě v DNS serveru. Můžeme si nastavit jiný DNS server (jde o i přes okna ), třeba zrovna tento (jen upozorňuji, že je celkem vytížený, má horší propustnost). ROUTE pracuje se směrovacími tabulkami (routing tables); tam je především uvedena výchozí brána (tj. když není stanoveno jinak v pravidlech směrovací tabulky, je paket směrován právě na tuto bránu) a taky směrovací pravidla ( pakety s cílem xxx ved na bránu yyy ). route print vypíše směrovací tabulky (lze zadat také upřesňující parametry) route add IP adresa cíle MASK maska podsítě brána METRIC 1 přidá do směrovací tabulky záznam se zadanou IP adresou, maskou podsítě, bránou a metrikou (zde je metrika 1), také je možné zadat rozhraní (to je IP adresa sít ové karty v tomto počítači), lomené závorky samozřejmě nepíšeme, jsou zde jen pro usnadnění orientace route delete IP adresa odstraní ze směrovací tabulky záznam pro zadanou IP adresu Příklad 2.3 Směrovací tabulka určuje, kam má být který odchozí paket směrován. Na desktopu (Windows XP) může směrovací tabulka vypadat třeba takto: C:\> route print ============================================================================ Seznam rozhraní 0x1... MS TCP Loopback interface 0x f fe a... Broadcom NetXtreme Gigabit Ethernet - Packet Scheduler Miniport ============================================================================ ============================================================================ Aktivní směrování: Cíl v síti Sít ová maska Brána Rozhraní Metrika M

32 2.1 SPRÁVA SÍTĚ Výchozí brána: ============================================================================ Trvalé trasy: Žádné Počítač má v tuto chvíli přidělenu IP adresu Podívejte se, kde v tabulce se tato adresa nachází. Všimněte si, že pakety adresované sobě samému jsou směrovány na loopback ( ). Brána pro místní segment lokální sítě je Tuto adresu najdeme především v údaji Výchozí brána. TRACERT určuje trasu k zadaným počítačům včetně její délky pomocí protokolu ICMP: v paketu ICMP využívá hodnotu TTL, podle případné reakce směrovačů odhadne délku trasy, nejdřív vyšle paket s TTL=1, při předčasném vypršení TTL je vyslán paket s TTL=2, pak TTL=3, atd., dokud neobdrží kladnou odezvu. Parametrem -h můžeme omezit počet směrování, aby při nemožnosti dosažení cíle příkaz nepracoval zbytečně dlouho. tracert zobrazí cestu k danému serveru včetně časových údajů (nejkratší, průměrná a nejdelší doba) tracert -h 5 zajímá nás pouze prvních 5 skoků přes směrovače na cestě PATHPING vypíše cestu k zadané adrese a vypočítá statistiky související s jednotlivými úseky cesty (vpodstatě náročnost úseků cesty). Jde o kombinaci funkcí příkazů ping a tracert je nejen určena trasa přes směrovače k danému cíli, ale ke každému směrovači jsou posílány pakety podobně jako u příkazu ping. Takto lze zjistit spolehlivost cest k jednotlivým směrovačům (počet ztracených paketů, dobu odezvy apod.) a tím například odhadnout, kde na cestě dochází k problémům s doručováním paketů. pathping zjistí stav cesty k zadanému serveru, vypíše podrobnou statistiku cesty (generování statistiky může trvat i několik minut) Výstup můžeme upřesnit zadáním parametrů, také lze stanovit jiný výchozí počítač. Příkaz je užitečný například tehdy, když cesta k některému cíli vykazuje hodně špatnou propustnost, a my potřebujeme zjistit, na kterém úseku je problém. NETSTAT tento program zobrazuje statistiku protokolů TCP/IP netstat vypíše základní statistiku (nevšímá si aplikací, které pouze naslouchají, vypisuje pouze TCP spojení) netstat -a vypíše celou statistiku

33 2.1 SPRÁVA SÍTĚ 25 ARP netstat -a -o vypíše celou statistiku, přidá sloupec s PID příslušného procesu netstat -ao totéž (přepínače můžeme sdružovat do jediného řetězce) netstat -ano navíc místo doménových vypisuje IP adresy netstat -ab > seznam.log vypíše všechny procesy (názvy i PID), které právě komunikují se sítí (jakkoliv), výsledek uloží do zadaného souboru (opět jsme přepínače shrnuli k jedné pomlčce) netstat -e základní statistika pro Ethernet (počet odeslaných a přijatých paketů, počet chyb apod. týká se protokolů rodiny TCP/IP) netstat -es podrobná statistika všech protokolů z rodiny TCP/IP netstat 2 vypisuje svůj výstup opakovaně každé dvě sekundy (můžeme zadat jakýkoliv interval), činnost příkazu lze ukončit jen klávesovou zkratkou Ctrl+C Arp je protokol převádějící IP adresy na fyzické (MAC) adresy, tento příkaz tedy souvisí s překladem adres. Fyzická adresa je v síti zjišt ována odesíláním tzv. Arp paketů s dotazy. Aby nebylo nutné opakovaně posílat tyto pakety, udržuje každé sít ové zařízení (tj. také zvlášt každá sít ová karta) mezipamět, do které ukládá dosud zjištěné dvojice IP a fyzických adres (ARP tabulky). ARP tabulku je možné prohlížet a přidávat i mazat záznamy. arp -a zobrazí ARP tabulku, také vidíme, které záznamy jsou dynamické (automaticky vytvořené z komunikace) a které statické (ručně vložené) arp -s A přidá do ARP tabulky statický záznam se vztahem zadané IP adresy a MAC (fyzické) adresy, MAC adresa se zadává v hexadecimálních číslech s pomlčkami arp -d odstraní z ARP tabulky záznam pro zadanou IP adresu arp -d * odstraní z ARP tabulky všechny záznamy Lze také přidat parametr s určením IP adresy sít ové karty, pro kterou daná ARP tabulka platí (každá karta má svou tabulku), což má smysl pouze v případě, kdy je v provozu více než jedna sít ová karta. Příklad 2.4 Na desktopu s jedinou sít ovou kartou je dost pravděpodobné, že ARP tabulka (tedy tabulka sousedů) bude vypadat takto: C:\> arp -a Rozhraní: x2 internetová adresa fyzická adresa typ d-66-2c-7a-00 dynamická M Je to z toho důvodu, že v současných ethernetových sítích mívají tyto uzly jediného souseda přepínač nebo směrovač, ke kterému jsou připojeny (a to je také jim přiřazená brána, přes kterou kumunikují se světem, všimněte si adresy).

34 2.1 SPRÁVA SÍTĚ 26 Úkoly 1. Prohlédněte si obsah souborů networks, hosts, services a protocols v adresáři...\system32\drivers\etc (pozor, pokud pracujete na 64bitovém systému). 2. Zjistěte svou IP a MAC adresu, a také masku podsítě. 3. Zobrazte seznam informací o DNS názvech (včetně příslušné IP adresy, evidovaných hodnot TTL atd.). 4. Vyberte si jakýkoliv server na síti (třeba svůj mail server nebo server, který používáte při vyhledávání) a zjistěte jeho dostupnost, při testu použijte pouze dva pakety. 5. Vypište směrovací tabulky na vašem počítači. Všimněte si, jakou metriku má zařízení s IP adresou začínající čísly Porovnejte výpisy příkazů tracert a pathping pro tentýž server. 7. K serveru použitému v úkolu 4 zjistěte trasu (adresy) včetně určení časové náročnosti trasy k jednotlivým uzlům (směrovačům) na cestě. 8. Zjistěte, které procesy (všechny) právě pracují se sítí. Zjistěte, jak přidáním příslušného filtru vypsat pouze ty procesy, které naslouchají na některém portu. 9. Zjistěte, kolik je odeslaných a přijatých unicast paketů, kolik jiných než unicast a zda nejsou hlášeny některé poškozené pakety (chyby) souhrnně přes TCP/IP (Ethernet). Dále se zaměřte na vypsané statistiky pro jednotlivé protokoly a ověřte, zda nejsou hlášeny některé chyby nebo neúspěšné operace. 10. Projděte si nápovědu příkazu netstat (v Příkazovém řádku) a zjistěte, kterým přepínačem lze omezit výpis z předchozího úkolu pouze na protokol TCP. 11. Zobrazte ARP tabulku sít ové karty na vašem počítači. C Příkaz NET Příkaz NET je komplexní nástroj pro práci především se sítí, ale taky je určen pro některé úkoly související se správou počítače a uživatelů (Windows řady NT). Jeho první parametr obvykle určuje oblast, které se budou další parametry týkat, můžeme ho chápat jako vnořený příkaz. Zde si uvedeme některé z nich podle případného vztahu k nástrojům s grafickým rozhraním. Je poměrně dobře zdokumentován v nápovědě i v grafickém režimu (v rejstříku zadáme net). K jednotlivým variantám příkazu získáme krátkou nápovědu v textovém režimu (například net user /? (stručný popis syntaxe), podrobnější nápovědu najdeme v grafickém režimu, když do vyhledávacího okna napíšeme net user Příkaz NET uživatelé a skupiny Pro správu uživatelů a skupin slouží podpříkazy user, localgroup, group a accounts příkazu net.

35 2.1 SPRÁVA SÍTĚ 27 NET USER (podobně ve Správě počítače, položka Místní uživatelé a skupiny Uživatelé) práce s uživateli (vypsání informací u uživateli, změna hesla, nový uživatel, deaktivace uživatele, možnost stanovit dobu, kdy se uživatel může přihlašovat,... ). net user vypíše seznam uživatelů (v několika sloupcích) net user novak vypíše podrobné informace o uživateli novak, včetně skupin, do kterých patří, údajů o hesle (jestli smí uživatel měnit heslo, kdy bylo nastaveno, kdy vyprší, apod.), kdy se uživatel naposledy přihlásil, zda je účet aktivní, atd. net user novak heslo nastavíme uživateli novak zadané heslo net user novak * jako předchozí, ale na heslo jsme dotázáni, při jeho zadávání se nezobrazují znaky net user administrator heslo nastaví heslo administrátora na zadaný řetězec; tímto způsobem zcela zaktivníme účet administrátora i ve variantách Home (také pro funkce, kdy je vyžadováno zadání hesla administrátora pokud není definováno, k těmto funkcím se nedostaneme); případně můžeme místo hesla do příkazu napsat hvězdičku net user novak /active:no zneaktivníme účet uživatele (zaktivnění se provádí parametrem /active:yes) net user novak /passwordchg:no od této chvíle zadaný uživatel nemá možnost změnit své heslo (toto nastavení je typické například pro účet host) net user novak heslo /add /fullname: Jan Novák vytvoří nového uživatele se zadaným přihlašovacím jménem, heslem a zobrazovaným jménem net user novak * /add /fullname: Jan Novák totéž, ale na heslo jsme interaktivně dotázáni, při zadávání se nezobrazují znaky net user novak /scriptpath:souborskriptu zadáme se skriptem, který se má provést při přihlášení uživatele (cesta ke skriptu nesmí být absolutní, musí být relativní vzhledem k adresáři... \System32\Repl\Import\Scripts, ale může obsahovat také přechody do nadřízeného adresáře..) net user novak /delete odstraní uživatele net user novak /times:po-pá,6-16 umožní danému uživateli být přihlášen pouze v zadaných dnech a hodinách (zde v pracovních dnech mezi 6. a 16. hodinou, další možnosti najdeme v nápovědě). Lze také použít parametr /domain, pak pracujeme s účtem na primárním řadiči domény (když tento parametr nezadáme, pracujeme s lokálním účtem). Příkaz net user se dá využít také pro automatizaci přidávání nových uživatelů (údaje předem uložíme do souboru a pak je v cyklu načítáme naučíme se to později v sekci 2.3 o hromadném zpracování dat na straně 53). NET LOCALGROUP (podobně ve Správě počítače, položka Místní uživatelé a skupiny Skupiny) práce se skupinami (nová skupina, uživatelé ve skupině,... ). S tímto příkazem pracujeme podobně jako s předchozím. net localgroup vypíše seznam uživatelských skupin

36 2.1 SPRÁVA SÍTĚ 28 net localgroup power users vypíše informaci o skupině Power Users (název skupiny obsahuje mezeru, proto musí být uzavřen do uvozovek) pouze komentář a seznam členů skupiny net localgroup uctarna /add vytvoří novou skupinu se zadaným názvem (na lokálním počítači) net localgroup uctarna novak koutova /add do skupiny uctarna přidá (předem vytvořené) uživatele novak a koutova net localgroup uctarna marketing\zlatnik /add do skupiny uctarna bude přidán uživatel zlatnik z domény marketing net localgroup uctarna novak /delete odstraníme uživatele ze skupiny net localgroup uctarna /delete zrušíme skupinu Opět používáme parametr /domain, pokud chceme pracovat se skupinami na úrovni domény. Ke skutečné práci se skupinami na úrovni domény pak používáme příkaz net group (tento příkaz však lze použít pouze na serveru, který je doménovým řadičem). NET ACCOUNTS (podobně v Místních zásadách zabezpečení, položka Zásady účtů) správa uživatelských účtů na obecné úrovni (stanovíme požadavky na vlastnosti účtů, např. minimální délka hesla, nutnost změnit heslo po určité době, můžeme zde zajistit, aby při změně hesla uživatel jako nové heslo zvolil to, co už někdy dříve jako heslo používal určujeme, kolik změn hesla v minulosti má být tako sledováno,... ) net accounts vypíše momentálně nadefinované vlastnosti uživatelských účtů net accounts /minpwlen:8 nastaví minimální požadovanou délku hesla uživatele na 8 znaků (v mnoha parametrech se vyskytuje zkratka pw, to znamená, že se vztahují k nastavení hesla pasword) net accounts /maxpwage:120 heslo platí vždy nejvýše 120 dnů, po této době si uživatel musí zvolit nové heslo net accounts /maxpwage:unlimited uživatel není nucen pravidelně měnit své heslo, jeho časová platnost není prakticky omezena net accounts /uniquepw:4 uživatel smí zvolit heslo, které už měl někdy v minulosti, ale až po nejméně 4 změnách hesla net accounts /maxpwage:30 /uniquepw:6 heslo platí vždy maximálně 30 dnů, uživatel (při této poměrně restriktivní době) smí zvolit i takové heslo, které už měl, ale až po nejméně 6 změnách hesla Příklad 2.5 Zobrazíme seznam uživatelů (Windows 7 Pro na desktopu), zobrazilo se jich 6: C:\> net user Uživatelské účty pro \\DOMACIPC Administrator Druhyuzivatel Guest Prvniuzivatel Tretiuzivatel User Příkaz byl úspěšně dokončen. M

37 2.1 SPRÁVA SÍTĚ 29 Vytvoříme novou skupinu a ověříme si, zda je v seznamu skupin, jsou podle abecedy: C:\> net localgroup tiskpovolen /add C:\> net localgroup Aliasy pro \\DOMACIPC *Administrators *Backup Operators *Cryptographic Operators *Distributed COM Users *Event Log Readers *Guests *HomeUsers *IIS_IUSRS *Network Configuration Operators *Performance Log Users *Performance Monitor Users *Power Users *Remote Desktop Users *Replicator *tiskpovolen *Users Príkaz byl úspešne dokoncen. M Do nové skupiny zařadíme dva uživatele (můžeme najednou, v jediném příkazu) a pak vypíšeme seznam členů skupiny: C:\> net localgroup tiskpovolen prvniuzivatel druhyuzivatel /add C:\> net localgroup tiskpovolen Název aliasu Komentár tiskpovolen Clenové druhyuzivatel prvniuzivatel Príkaz byl úspešne dokoncen. M Tak ted jsme si to rozmysleli, novou skupinu odstraníme: C:\> net localgroup tiskpovolen /delete Úkoly 1. Vypište seznam uživatelů, kteří se mohou na počítači přihlásit. Najděte v seznamu své přihlašovací jméno a vypište informace o sobě (s využitím svého přihlašovacího jména). 2. Sestavte příkaz, kterým přidáte nového uživatele se zadáním jména, hesla, vypisovaného jména a parametru, který zajistí, že po uživateli nebude heslo vyžadováno (tento parametr najdete v nápovědě). 3. Vypište seznam skupin, které jsou vytvořeny na vašem počítači. C

38 2.1 SPRÁVA SÍTĚ Pokud máte příslušná přístupová oprávnění, vytvořte nového uživatele s názvem TestovaciUzivatel, dále novou skupinu s názvem PokusnaSkupina a nového uživatele do ní zařad te. Potom tohoto uživatele ze skupiny odstraňte a skupinu zrušte. 5. Zjistěte, jaké zásady jsou nastaveny pro uživatelské účty na vašem počítači. Především zkontrolujte, jaká musí být minimální délka hesla uživatele Příkaz NET sdílení prostředků a správa domén Každý by měl mít přehled o tom, co je na jeho počítači nasdíleno ven a je tedy dostupné z jiného počítače, podobně by měl vědět, jak zjistit, co je dostupné na jiných počítačích a jak se k tomu dostat. Opět se podíváme na několik podpříkazů příkazu net. NET SHARE (podobně ve Správě počítače, položka Sdílené složky Sdílené položky) práce se sdílenými prostředky (obvykle adresáři/složkami nebo tiskárnami) na našem počítači (nasdílet prostředek, ukončit sdílení, bez dalších parametrů zobrazí seznam nasdílených prostředků), umožňuje také omezit sdílení jen na určitý počet uživatelů net share zobrazí seznam všech prostředků (složek, tiskáren apod.), které jsou na tomto počítači nasdíleny (jsou přístupné z jiného počítače na síti). V seznamu jsou také položky neviditelné v nástroji Místa v síti (končí symbolem $). net share fakturydod=d:\faktury /remark: Faktury dodavatelů vytvoří nové sdílení adresář d:\faktury bude na síti přístupný, a to bud přes nástroje s grafickým rozhraním nebo přes UNC adresu \\pocitac\fakturydod (předpokládáme, že pracujeme na počítači pocitac), je také připojen komentář prostředku net share fakturydod /delete odstraní sdílený prostředek, ten přestane být přístupný ze sítě NET FILE (podobně ve Správě počítače, položka Sdílené složky Otevřené soubory) práce se sdílenými otevřenými soubory (soubory, které náš počítač nabízí ke sdílení a zrovna s nimi někdo pracuje). net file vypíše seznam otevřených sdílených souborů s informací (uživatel na síti, který soubor používá, cesta k souboru, apod.), taky zde zjistíme ID (identifikační číslo) nasdíleného souboru net file 2 vypíše informace o využívání nasdíleného souboru, jehož ID je 2 (to jsme zjistili z předchozího výpisu) net file 2 /close uzavřeme soubor (se zadaným ID), který někdo otevřel ze sítě, tím také soubor odblokujeme (soubor používaný ze sítě je uzamčen, blokován proti změnám) NET SESSION (podobně ve Správě počítače, položka Sdílené složky Relace) práce s vnějšími připojeními na náš počítač (session neboli relace je navázané připojení mezi naším počítačem a jiným počítačem v síti)

39 2.1 SPRÁVA SÍTĚ 31 net session vypíše seznam počítačů, ze kterých jsou navázány relace na náš počítač (včetně dalších informací uživatele, jeho operační systém, počet prostředků, se kterými na našem počítači pracuje a dobu nečinnosti) net session \\pocitac podrobnější informace o relaci navázané ze zadaného počítače net session \\pocitac /delete ukončení relace (pokud nezadáme název počítače, ukončí se všechny navázané relace) NET VIEW zobrazí seznam sdílených prostředků na určeném počítači v doméně net view zobrazí seznam počítačů v doméně net view \\pocitac vypíše seznam sdílených prostředků, které nabízí daný počítač net view /domain vypíše seznam domén v síti net view /domain:ucetni vypíše seznam počítačů, které jsou v zadané doméně net view /network:nw vypíše seznam serverů v síti Novell Netware net view /network:nw \\pocitac v síti Novell Netware vypíše prostředky dostupné na zadaném počítači NET USE práce se sdílenými prostředky na ostatních počítačích v síti net use zobrazí existující sít ová připojení (cesta na síti, ale pokud je prostředek namapován jako logická jednotka s písmenem, pak i označení jednotky) net use W: \\pocitac\fakturydod přiřadíme písmeno W zadanému prostředku ze sítě, od této chvíle můžeme k tomuto prostředku přistupovat přes W: net use W: \\pocitac\fakturydod /user:uživatel podobně, ale na cílovém počítači budeme k jednotce přistupovat jako zadaný uživatel (vyžaduje zadání hesla), pokud je cílový počítač v jiné doméně, musíme zadat i tuto doménu net use W: \\pocitac\fakturydod /delete odstraníme vazbu net use W: /delete totéž (název prostředku nemusíme zadávat) net use /persistent:a momentálně platná připojení budou uložena a zůstanou platná i po restartu (příp. vypnutí a dalších startech) počítače NET COMPUTER přidá nebo odstraní počítač z domény net computer \\pocitac /add přidá zadaný počítač do domény net computer \\pocitac /del odstraní zadaný počítač z domény Příklad 2.6 Předpokládejme, že máme v lokální síti dva počítače desktop a notebook. Zjistíme, co je z desktopu viditelné v lokální síti: C:\> net share Název sdílené položky Prostredek Poznámka ADMIN$ C:\Windows Vzdálený správce C$ C:\ Výchozí sdílená položka M

40 2.1 SPRÁVA SÍTĚ 32 print$ C:\Windows\system32\spool\drivers Ovladace tiskárny IPC$ Vzdálený IPC themes P:\zaloha\themes Users C:\Users zaloha P:\zaloha EPSON BX620FWD Series USB001 Zarazeno EPSON BX620FWD Series EPSON BX620FWD Series(FAX) USB001 Zarazeno EPSON BX620FWD Series (FAX) Príkaz byl úspešne dokoncen. U notebooku to bude podobné, jen v seznamu nebude tiskárna, fax ani položka print$, protože k notebooku není připojena tiskárna. Ted se podíváme, co je ve skutečnosti vidět z jiného počítače. To můžeme provést dvěma způsoby. Pokud chceme zůstat u téhož počítače a jen se na sebe podívat zvenčí, stačí použít příkaz net view (nebo dosadíme svou konkrétní IP adresu). To sice funguje, ale bohužel i tehdy, když samotná sít není zcela vpořádku a může to vytvořit falešný pocit jistoty, že je vše funkční. Jinou možností je sednout si k jinému počítači v síti a provést následující postup (začátek je relevantní jen tehdy, pokud je předem nutné zfunkčnit sdílení v lokální síti). Povolíme služby související s lokální sítí (především Prohledávání počítačů, může být třeba povolit ještě několik dalších). Počítače v lokální síti by měly být ve stejné pracovní skupině (ověříme) a dále může být problém ve vynucení přístupu s heslem (bud správně nastavíme heslo na počítačích nebo tuto možnost vypneme, například ve Windows 7 v Centru sít ových připojení a sdílení Změnit pokročilé nastavení sdílení, ve Vistě přímo v dotyčném Centru, v XP tato možnost není). Od verze Vista můžeme povolit přístup konkrétním uživatelům a nebo uživateli everyone, který je definován společně pro celou sít. Seznam viditelných počítačů v lokální síti bude stejný na obou počítačích, pořadí je podle abecedy. C:\> net view Název serveru Poznámka \\DOMACIPC \\NOTEBOOK Príkaz byl úspešne dokoncen. M Podíváme se, co konkrétně je viditelné na desktopu (sedíme u notebooku). Počítač můžeme určit bud jeho lokálním názvem (tím, který je ve výpisu výše) a nebo jeho IP adresou. Ukážeme si přístup pomocí IP adresy (předpokládejme, že jsou používány soukromé IP adresy třídy A, desktop má , notebook ): C:\> net view \\ Sdílené prostředky na \\ Název sdílené položky Typ Použito jako Komentář EPSON BX620FWD Series Tisk EPSON BX620FWD Series EPSON BX620FWD Series (FAX) Tisk EPSON BX620FWD Series (FAX) themes Disk M

41 2.1 SPRÁVA SÍTĚ 33 Users zaloha Příkaz byl úspěšně dokončen. Disk Disk V seznamu je tiskárna, fax a pak tři sdílené složky. Všimněte si, že položky z net share začínající symbolem $ zde nejsou. Můžeme to provést také naopak (na desktopu si vypsat seznam položek z notebooku): C:\> net view notebook Sdílené prostredky na notebook Název sdílené položky Typ Použito jako Komentár Public Disk Users Disk zaloha Disk Príkaz byl úspešne dokoncen. M Zůstaneme na desktopu. Pokud máme příslušná přístupová oprávnění, lze nasdílené položky z jiného počítače volně využívat. Například si můžeme vypsat obsah adresáře nasdíleného na jiném počítači a otevřít některý ze souborů ve sdíleném adresáři: C:\> dir \\notebook\zaloha Svazek v jednotce \\notebook\zaloha je DATA. Sériové císlo svazku je 5A37-8E6F. Výpis adresáre \\notebook\zaloha M :39 <DIR> :39 <DIR> : disk6.zip :39 <DIR> nejnovejsi : ukazka1.pas : ukazka2.pas Souboru: 2, Bajtu: Adresáru: 3, Volných bajtu: C:\> notepad \\notebook\zaloha\ukazka1.pas Pozor, stejným způsobem se dají využívat prostředky, které ve výpisu net view nejsou vidět (končí symbolem $): dir \\notebook\admin$ Na notebooku si zkontrolujeme, které položky a soubory využívá někdo z jiného počítače: C:\> net file ID Cesta Uživatelské jméno Počet uzamčení D:\_pocitac\zaloha\ Guest 0 59 D:\_pocitac\zaloha\ukazka1.pas Guest 0 Příkaz byl úspěšně dokončen. M

42 2.1 SPRÁVA SÍTĚ 34 Vidíme, že někdo přistupoval ke sdílenému adresáři a pak také k jednomu souboru. Žádná položka není uzamčena (což je normální, protože žádný z použitých příkazů uzamčení nepožaduje). V případě, že soubor otevřeme v programu, který soubory uzamyká (například ve Wordu), můžeme zkusit příkaz net session a zjistit, ze kterých počítačů v síti jsou využívány prostředky našeho počítače. C:\> net session Počítač Uživatel Typ klienta Otevření Doba nečinnosti \\ Guest 2 00:03:27 Příkaz byl úspěšně dokončen. M Zjistíme si údaje pro dotyčný počítač, o kterém ted víme, že využívá prostředky našeho počítače: C:\> net session \\ Uživatelské jméno Guest Počítač Přihlášení hosta Ne Typ klienta Doba relace 00:04:40 Doba nečinnosti 00:03:36 M Název sdílené položky Typ Počet otevření zaloha Disk 2 Příkaz byl úspěšně dokončen. Uživatel z cizího počítače zřejmě dvakrát přistupoval k nasdílenému adresáři, soubor už žádný otevřený nemá. Všimněte si, že se na náš počítač vlastně ani nepřihlašoval, pracuje pod uživatelským účtem Guest (host). Kdybychom měli zakázán účet hosta, uživatel by takto naše prostředky nemohl využívat. Úkoly 1. Zobrazte seznam všech prostředků, které jsou z vašeho počítače přístupny v síti (které máte nasdíleny). 2. Na disku, kde máte právo zápisu (předpokládejme D:, může to být i hlouběji v adresářové struktuře) vytvořte adresář s názvem Pokusný adresář (do něj umístěte nějaké nepříliš důležité soubory a adresáře). Potom tento adresář zpřístupněte na síti pod názvem pokusny. Zkontrolujte, zda je opravdu dostupný (název svého počítače zřejmě znáte, pokud ne, zjistěte ho). Nakonec zrušte sdílení a adresář odstraňte z disku. Rušení můžete odložit na dobu po provedení následujících úkolů v této posloupnosti. 3. Zjistěte, zda na některém počítači v síti nejsou nějaké sdílené prostředky (týká se i vašeho počítače). Dále si vyberte některý počítač a zobrazte seznam prostředků, které na síti nabízí. Pokud je některým z těchto prostředků adresář, připojte si ho jako disk pod nějakým vhodným volným písmenem a pak si obsah tohoto adresáře prohlédněte v některém souborovém C

43 2.1 SPRÁVA SÍTĚ 35 manažerovi (případně Průzkumníkovi) s využitím takto vytvořeného přístupu k sít ovému disku. Potom připojení zrušte (můžete odložit na dobu po provedení posledního úkolu v této posloupnosti). 4. Zjistěte, jestli z některého počítače na síti vede relace do vašeho počítače (zda někdo zvenčí používá prostředky vašeho počítače). O zjištěné relaci zjistěte podrobnější informace (z předchozího výpisu znáte název počítače, ze kterého relace vede) Příkaz NET práce se službami a další úlohy Příkaz net má speciální podpříkazy pro práci se službami server a workstation, ale také další podpříkazy pro práci se službami obecně (především spuštění a zastavení služby z příkazového řádku). NET CONFIG umožňuje konfigurovat službu Server nebo Workstation (podle dalšího parametru, ta druhá se v české variantě systému může jmenovat Pracovní stanice) net config workstation zobrazí momentální konfiguraci služby Workstation (například název počítače, doména, a také parametry pro posílání dat na sít ) net config workstation /charcount:32 zajistí, aby při shromažd ování dat posílaných na sít systém vyčkal, dokud data nejsou v uvedeném množství (zde 32 B) net config server zobrazí momentální konfiguraci služby Server (narozdíl od Workstation se většinou týkají relací přihlášených uživatelů kolik uživatelů maximálně může být přihlášeno, kolik souborů může být otevřeno v rámci jedné relace, zda je server skrytý, apod.) net config server /autodisconnect:10 /hidden:yes nečinná relace je po 10 minutách nečinnosti ukončena, a také zajišt ujeme, že nás server není vidět v seznamu počítačů v síti (ale dá se k němu dostat, podle přístupových oprávnění uživatelů, když víme, jak se jmenuje) net config server /srvcomment: Počítač v garáži /hidden:no nastavíme řetězec, který se zobrazuje vedle identifikace serveru (například také při použití příkazu net view), chceme, aby byl počítač běžně viditelný v síti (ovšem to je výchozí hodnota, obvykle není nutné ji měnit) Příklad 2.7 Ukážeme si, jak vypadá výpis příkazu net config server na desktopu (předpokládejme, že služba Server je spuštěna, jinak by nebylo možné konfiguraci vypsat). C:\> net config server Název serveru \\PC152 Komentář serveru PC152 Verze softwaru Windows 2002 M

44 2.1 SPRÁVA SÍTĚ 36 Server je aktivní na NetbiosSmb ( ) NetBT_Tcpip_63B A1AC9706 (000ffe5ea237) Skrytý server Ne Maximum přihlášených uživatelů 10 Maximum otevřených souborů na relaci Trvání nečinné relace (minuty) 15 Příkaz byl úspěšně dokončen. Z výpisu je zřejmé, jak se počítač jmenuje, jaký je na něm operační systém (Windows 2002 znamená Windows XP), základní údaje o protokolech pro provoz místní sítě (NetBIOS, NetBT), u NetBT vidíme v lomené závorce ID sít ové karty a v závorce MAC adresu (je bez oddělovačů, ty si musíme domyslet). Dále zjistíme, že server je v síti viditelný, maximálně 10 uživatelů na něm může být najednou přihlášeno (tj. je schopen vést max. 10 relací) a existuje také limit na množství otevřených souborů na jednu relaci. Po 15 minutách je neaktivní relace automaticky ukončena. Tyto hodnoty jsou typické pro desktopovou instalaci a vpodstatě nám nic nebrání je změnit. Na skutečném serveru by stanovené limity byly značně kontraproduktivní, serverové varianty Windows je mají stanoveny značně odlišně. NET STATISTICS vypíše veškeré protokolované informace (tj. z protokolů) služby Server nebo Workstation (další parametr je workstation nebo server) o počtu přijatých nebo odeslaných dat, navázaná připojení, spuštěné relace, úspěšné a neúspěšné operace, chybná zadání hesla, různé typy chyb, atd. net statistic workstation vypíše se statistika služby workstation (kolik dat bylo přeneseno, chyby přenosu, počet navázání spojení, relací, atd.) NET START spustí zadanou službu net start zobrazí seznam všech služeb, které jsou právě spuštěné net start terminálová služba spustí službu Terminálová služba (její spuštění musí být nastaveno na Ručně nebo Automaticky ; kdyby byl typ spouštění služby nastaven na Zakázáno, spuštění selže) net start indexing service spustí službu Indexing Service pokud název obsahuje mezery, musí být uzavřen do uvozovek net start cisvc provede totéž (každá služba má kromě lidského dlouhého názvu v češtině nebo angličtině také krátký univerzální název bez mezer a diakritiky, tedy se nemusíme obtěžovat s uvozovkami) NET STOP zastaví zadanou službu net stop indexing service zastaví službu Indexing Service

45 2.1 SPRÁVA SÍTĚ 37 net stop cisvc provede totéž (zastaví službu Indexing Service), zadali jsme zkrácený název služby, který je stejný ve všech jazykových variantách Windows Úkoly 1. Zjistěte momentální konfiguraci služeb Workstation a Server. 2. Vypište statistiky související se službami Workstation a Server. Zjistěte, zda někdo nezadal chybné heslo. 3. Vypište seznam spuštěných služeb. Dále si (například v nástroji services.msc) vyberte některou službu, která není spuštěná, ale zároveň její spuštění není zakázáno, a pomocí příslušného příkazu ji spust te (nezapomeňte krátký název). Potom ji ukončete. C Ostatní: NET PRINT řízení tisku po síti můžeme prohlížet a ovládat tiskové úlohy net print \\pocitac\hplaserjet vypíše tiskové úlohy probíhající na tiskárně HPLaserJet na zadaném počítači (název tiskárny je vlastně názvem sdíleného prostředku, který můžeme zjistit například příkazem net view) net print \\pocitac 2 vypíše informace o tiskové úloze č. 2, která probíhá na zadaném počítači (číslo úlohy zjistíme z výpisu předchozího příkazu) net print \\pocitac 2 /delete odstraníme zadanou tiskovou úlohu (příp. lze pomocí jiných parametrů úlohu pouze pozastavit a pak kdykoliv obnovit) NET HELPMSG poskytuje nápovědu k chybovým zprávám Windows (parametrem je číslo zprávy) net helpmsg 2182 pokud se nám při spouštění některé služby objevila hláška s číslem chyby 2182, použijeme tento příkaz, který nám zobrazí podrobnější komentář, v tomto případě informace, že jsme se pokusili spustit službu, která je již spuštěna Některé zprávy jsou poněkud kuriózní při neúspěšném pokusu o spuštění jedné ze služeb můžete být odkázáni na chybu číslo 3534, ale po zobrazení příslušné informace zjistíte, že to znamená Služba neoznámila chybu. NET SEND pokud je spuštěna služba Messenger, lze zasílat zprávy jiným uživatelům v síti (při testech je používání tohoto příkazu zakázáno) NET TIME synchronizace hodin počítače s hodinami jiného počítače nebo domény, nebo můžeme zobrazit aktuální čas na jiném počítači net time \\CasovyServer synchronizujeme systémové hodiny s hodinami zadaného časového serveru net time /domain synchronizujeme čas s doménou (také můžeme zadat konkrétní doménu, pokud je jich více)

46 2.1 SPRÁVA SÍTĚ 38 net time /querysntp zobrazí název serveru NTP (Network Time Protocol), který je používán (také lze jiným parametrem určit jeden nebo více NTP serverů, podle kterých budou hodiny synchronizovány) Úkoly 1. Prověřte, zda na některém počítači v síti není nasdílena tiskárna (využijte příkazy, které jste používali v předchozích úkolech). Některou si vyberte a vypište její tiskové úlohy. Pokud nějaké existují (tj. něco je v její tiskové frontě), zjistěte bližší informace o některé tiskové úloze (číslo úlohy zjistíte v předchozím výpisu tiskových úloh tiskárny). 2. Zjistěte, k čemu slouží příkazy net pause a net continue. Najděte (třeba v nápovědě) informaci o tom, co se stane, když první z uvedených příkazů použijete na službu Server. 3. Zjistěte, co znamená chybová zpráva č (vypíše se při použití příkazu net group na lokálním počítači), č (vypíše se při pokusu o spuštění některých služeb), č a 3913 (vypíšou se při nesprávných způsobech získání informací o synchronizaci hodin). 4. Pokud jste připojeni k síti, pokuste se zjistit, zda jsou systémové hodiny na vašem počítači synchronizovány s některým serverem (může jít o server v doméně nebo na internetu, může nebo nemusí to být server s protokolem NTP). C R NetShell Příkazem NETSH spustíme textovou konzolovou aplikaci NetShell (Network Services Shell). Tato konzola slouží ke konfiguraci některých částí systému většinou souvisejících se sítí. Pracujeme s moduly (také helper, obvykle dynamické knihovny) a kontexty (sada úloh příkazů pro jednotlivé moduly, každý kontext může odpovídat jednomu modulu, některé kontexty mohou mít další podkontexty). Takže se vlastně jedná o jakési společné pracovní a programové prostředí pro běh kontextů uložených v dynamicky linkovaných knihovnách, na momentálním vybavení systému těmito knihovnami záleží, které kontexty budeme mít k dispozici. To, se kterými kontexty můžeme pracovat, tedy závisí na verzi, vybavenosti a nastavení operačního systému. Velký rozdíl je zejména mezi Windows XP a Windows 7. Obvykle jsou kromě jiných dostupné tyto kontexty: P interface konfigurace protokolů rodiny TCP/IP (tj. sít ového rozhraní), má podkontext ip a případně také ipv6 (pro IP verze 6) routing funkce související se směrováním, konfigurace směrovacích serverů, má tyto podkontexty: ip konfigurace protokolů IP, obsahuje kontexty autodhcp, dnsproxy, igmp, nat, ospf, relay, rip, routerdiscovery (opět podle názvu poznáme jejich funkci) ipx konfigurace IPX, obsahuje kontexty netbios, rip, sap

47 2.1 SPRÁVA SÍTĚ 39 ras konfigurace RAS (Remote Access Server, server vzdáleného přístupu), má tyto podkontexty: ip, ipx, netbeui, appletalk aaaa práce s databází AAAA (zkratka z Authentication, Authorization, Accounting, Auditing prokázání identity, autorizace, práce s účty, audit), která se používá například při autentifikaci na síti dhcp používá se na DHCP serveru ke konfiguraci DHCP (je v serverových variantách Windows), lze například přidat nový DHCP server do seznamu autorizovaných serverů http (konfigurace protokolu HTTP a HTTPS), ipsec (pracujeme se zásadami a statistikami protokolu IPSec), atd. pro další protokoly firewall od Windows XP výše, konfigurace vestavěného firewallu advfirewall od Visty výše, konfigurace rozšířených možností firewallu lan, wlan (wireless), mbn (mobile) konfigurace ethernetové, bezdrátové a mobilní sítě případně další, tento nástroj lze snadno rozšiřovat Do vybraného kontextu se přepneme zadáním jeho názvu (pohybujeme se ve stromové struktuře ), do nadřízeného kontextu se dostaneme zadáním.. (dvě tečky, o úroveň výše). Pracuje se zde v textovém režimu, používáme pouze příkazy specifické pro NetShell. Každý kontext má svou sadu příkazů, část je stejná ve všech kontextech, například (mnohé příkazy se někdy používají s dalšími parametry) help zobrazí všechny použitelné příkazy, je možné také použít symbol? exit odchod z netsh, také je možné použít příkaz bye show zobrazí informace o kontextu set nastavení konfigurace pro daný kontext add přidá položku konfigurace do seznamu (skriptu) delete odstraní položku konfigurace dump zobrazí konfigurační skript, přesměrováním ho můžeme uložit do souboru exec spustí soubor skriptu (obvykle jde o načtení konfigurace, kterou jsme předchozím příkazem někdy v minulosti uložili do souboru) Příklad 2.8 Příkazem netsh spustíme prostředí NetShellu; zobrazí se typický prompt netsh> (při změně kontextu je promptem momentální kontext) a dále zadáváme tyto příkazy: routing? zobrazíme nápovědu ke kontextu routing routing přesuneme se do kontextu routing, prompt se změní na routing> a můžeme zadávat příkazy patřící do vybraného kontextu show zobrazí se informace o tom, co v tomto kontextu můžeme zjistit show helper zobrazí se seznam základních příkazů typických jen pro tento kontext s informací pro tyto příkazy (jakých DLL knihoven se týkají a jejich GUID), příkazy jsou ip a ipx

48 2.1 SPRÁVA SÍTĚ 40 ip show přesuneme se do kontextu ip uvnitř kontextu routing zobrazí se informace o tom, co v tomto kontextu můžeme zjistit (protože jsme v kontextu routing a v jeho podkontextu ip, jedná se většinou o různé směrovací informace týkající se protokolu IP) show rtmdestinations v předchozím výpisu jsme zjistili, že můžeme použít tento příkaz vypíšeme seznam adres ve směrovací tabulce (ke každé položce IP adresa, brána, MAC adresa, metrika apod.).. přesuneme se o úroveň výše (opustíme kontext ip, jsme v kontextu routing).. přesuneme se o úroveň výše (opustíme kontext routing) interface ip show přesuneme se do kontextu interface přesuneme se do kontextu ip uvnitř kontextu interface (oba poslední příkazy můžeme sjednotit v jediném příkazu, a to interface ip) zobrazí se informace o tom, co v tomto kontextu můžeme zjistit (všimněte si, že možnosti jsou jiné než v kontextu ip uvnitř routing, ted jde o informace týkající se rozhraní protokolu IP) show config zobrazíme základní konfiguraci rozhraní protokolu IP show tcpconn zobrazí se tabulka existujících připojení přes protokol TCP (TCP connections) 2 dump zobrazí se konfigurace rozhraní protokolu IP exec? zobrazíme nápovědu k příkazu, který slouží k obnově konfigurace ze zálohy (načtení skriptu s kontextem) exit ukončíme práci v interaktivním rozhraní NetShellu Kterýkoliv z výše uvedených příkazů můžeme zadat i mimo prostředí NetShellu, například: netsh -c interface show config zobrazí konfiguraci rozhraní IP bez nutnosti přechodu do prostředí NetShellu (přepínač -c slouží k zadání kontextu). Další příkaz netsh -c ras aaaa show authserver zobrazí RADIUS server, který se používá k ověřování identity (pokud ovšem takový server používáme, autentizaci lze provádět různými způsoby). To byla krátká ukázka základního ovládání NetShellu. V následujících příkladech se zaměříme na konkrétní úlohy. Příklad 2.9 Kterýkoliv kontext (jako celek) můžeme zálohovat (záloha se však provádí zvenčí, abychom mohli přesměrovávat výstup): netsh -c interface ip dump > kontextinterip.dat 2 Všimněte si, že se v záhlaví výpisu (také u některých jiných příkazů) objevuje řetězec MIB-II. Jedná se o objektovou databázi, ve které jsou uloženy informace o uzlech v síti. S touto databází pracuje protokol SNMP (pokud používáme správu sítě přes TCP/IP) a pokud umíme k MIB II přistupovat (a máme přístupová oprávnění), můžeme získat hodně zajímavých informací o síti.

49 2.1 SPRÁVA SÍTĚ 41 Výsledek je uložen do textového souboru a umístěn do pracovního adresáře, pokud nezadáme cestu. Tento textový soubor můžeme bud pouze zálohovat, nebo exportovat a načíst na jiném počítači, a nebo pozměnit a načíst se změnami. Výsledkem předchozího příkazu je textový soubor, který má přibližně tento obsah (na počítači s jednou sít ovou kartou, jejíž MAC adresu vidíme pozměněnou, IP adresa je přiřazována přes DHCP): # # Konfigurace rozhraní protokolu IP # pushd interface ip # Konfigurace protokolu IP rozhraní pro 418DA6F5-8B14-4F21-B6AD-43452BF31CA7 set address name = 418DA6F5-8B14-4F21-B6AD-43452BF31CA7 source = dhcp set dns name = 418DA6F5-8B14-4F21-B6AD-43452BF31CA7 source = dhcp set wins name = 418DA6F5-8B14-4F21-B6AD-43452BF31CA7 source = dhcp popd # Konec konfigurace protokolu IP rozhraní M Příkazy pushd a popd slouží k uložení původního kontextu, načtení nového a opětovném návratu k původnímu kontextu. Ze zálohy můžeme kontext kdykoliv obnovit (načíst), a to i zvenčí: netsh -c interface ip exec kontextinterip.dat Protože je přechod do určitého kontextu součástí skriptu, lze skript načíst (spustit) také jinak pomocí parametru -f: netsh -f kontextinterip.dat Příklad 2.10 Kdykoliv můžeme získat nápovědu, a to i k syntaxi jednotlivých příkazů. Například pokud jsme v kontextu ip uvnitř kontextu interface, lze se zeptat: show? show dns? Zjistíme, že dotaz na nastavení DNS serveru můžeme formulovat jednoduše tako: show dns Zjistili jsme, jaké DNS servery jsou nastaveny (může jich být i více, pokud jde o statické adresy). Zjistíme, co lze nastavovat příkaz set slouží k nastavování existujících vlastností. set? Vybereme si nastavení prostředí DNS, ale protože neznáme syntaxi, zeptáme se: set dns? Vypíše se krátký popis včetně ukázkových příkladů. Ted už by nám mělo být všechno jasné. Pokud chceme nastavit statickou adresu DNS serveru, použijeme příkaz set dns Připojení místní sítě static (doplníme řetězec označení svého rozhraní a skutečnou IP adresu DNS serveru).

50 2.1 SPRÁVA SÍTĚ 42 NetShell je součástí Windows od verze 2000 (na serverech i desktopech) a různé verze se liší vybavením moduly. Například od verze XP přibývá modul (helper) s kontextem firewall. Příklad 2.11 Prohlédneme si konfiguraci firewallu ve Windows XP (pokud máte novější verzi, přesuňte se k příkladu 2.12). netsh spustíme NetShell firewall přesun do kontextu firewall, všechny následující příkazy provádíme v tomto kontextu show nejdřív si ověříme, co vše lze zobrazit show config zobrazíme konfiguraci firewallu (je celkem obsáhlá) show state zobrazí se momentální stav firewallu, může vypadat takto: Stav brány firewall: Profil = Standardní Provozní režim = Povolit Režim výjimek = Povolit Režim odezvy na vícesměrové nebo všesměrové vysílání = Povolit Režim upozornění = Povolit Verze zásad skupiny = Brána Windows Firewall Režim vzdálené správy = Zakázat M Porty, které jsou aktuálně otevřeny na všech sít ových rozhraních: Port Protokol Verze Program Na všech sít ových rozhraních nejsou aktuálně otevřeny žádné porty. show opmode zobrazí se provozní (operační) režim (porovnejte, co se rozumí stavem z předchozího příkazu a provozním režimem z tohoto příkazu) set? tímto příkazem zjistíme, co vše lze nastavovat příkazem set (tj. daná vlastnost už je definována, ale my ji můžeme změnit) set opmode enable nastavíme provozní mód na dostupný show allowedprogram zobrazí aplikace, které mají povoleno přistupovat ven do sítě add allowedprogram? zajímá nás, jak lze do seznamu přidat další aplikaci show portopening zjistíme porty s nastavenou výjimkou (otevřené) delete portopening? ze seznamu zjistíme, že je v něm port, který by tam neměl být, tedy nás zajímá, jak ho uzavřít show service vypíšou se služby přistupující na sít exit skončíme Od verze Vista tento kontext sice existuje, ale doporučuje se použít kontext advfirewall firewall.

51 2.1 SPRÁVA SÍTĚ 43 Příklad 2.12 Od verze Vista se s firewallem zachází trochu jinak. Předně se už nerozlišují povolené/zakázané aplikace, protokoly a porty, ale vše jsou pravidla (rules). Tedy zobrazujeme pravidla, přidáváme pravidla, odstraňujeme je. advfirewall firewall přesuneme se do kontextu advfirewall a hned v tomtéž příkazu do jeho podkontextu firewall show show rule? ověříme, co vše lze zobrazit, zjistíme, že použitelné je show rule požádáme o podrobnosti show rule name=all pokusíme si nechat vypsat všechna nastavená pravidla, ale seznam je příliš dlouhý, pravidla vypadají nějak takto: Název pravidla: Windows Live Messenger (UPnP-In) Povoleno: Ano Směr: In Profily: Doména,Privátní,Veřejná Seskupení: Windows Live Messenger LocalIP: Any Vzdálená IP adresa: LocalSubnet Protokol: TCP Místní port: 2869 Vzdálený port: Any Funkce Edge traversal: No Akce: Allow M Podobně vypadají i další pravidla. Pravidlo je povoleno, směr je In, tedy se jedná pravidlo pro příchozí provoz (pro odchozí by bylo Out ), jsou stanoveny sít ové profily, pro které pravidlo platí, pravidla jsou seskupována (group) pro snazší správu, dále jsou určeny adresy, protokol, port. Pokud nám nestačí konec výpisu (záleží na velikosti vyrovnávací paměti Příkazového řádku, kolik údajů bude viditelných), pak musíme příkaz spustit mimo prostředí NetShellu a výstup směrovat do souboru: netsh advfirewall firewall show rule name=all > d:\vystupfirewall.txt (ale pak je třeba použít editor, který zvládá znakovou sadu Latin2, například PSPad (je třeba nastavit v menu Zobrazit Zobrazení znaků MSDOS) Bohužel musíme zadat bud all nebo konkrétní název pravidla, dále lze filtrovat omezovat výpis (ale moc možností nemáme) show rule name=all type=dynamic dir=in profile=public zkonkrétnili jsme dotaz, chceme všechna pravidla, která jsou dynamicky vytvořená, pro příchozí provoz a veřejnou sít add rule name= povolit udp 5000 dir=out protocol=udp localport=5000 action=allow povolili jsme odchozí komunikaci na UDP portu 5000 add rule name= šifrovat 80 protocol=tcp dir=in localport=80 security=authdynenc action=allow takto jsme si vynutili šifrování příchozí komunikace na TCP portu 80 (o jaký port se asi tak jedná?)

52 2.1 SPRÁVA SÍTĚ 44 Příklad 2.13 Pro notebook, který přenášíme mezi umístěními se statickou a dynamickou IP adresou, si můžeme vytvořit dva zástupce nebo dávkové soubory (to se budeme učit později textové spustitelné soubory s příkazy, které se mají provést při spuštění takového souboru). Nejdřív si v nápovědě ověříme formát příkazu: netsh -c interface ip set? netsh -c interface ip set address? Ted už víme, které parametry a v jakém pořadí máme zadat, tedy vytvoříme zástupce nebo dávkové soubory (podle potřeby) s následujícími příkazy. První z nich je určen ke spuštění na umístění se statickou adresou: netsh -c interface ip set address name= Připojení místni sítě source=static addr= mask= gateway= gwmetric=1 Celý příkaz by měl být na jednom řádku. Takto nastavíme statickou IP adresu, masku podsítě, bránu, doplníme vlastní skutečné údaje. Další je pro umístění, na kterém používáme dynamickou adresu získanou od DHCP serveru: netsh interface ip set address name= Připojení místni sítě source=dhcp Nastavíme dynamickou IP adresu, která bude získávána z DHCP. Vytvoříme dva zástupce na pracovní ploše jednoho pro statickou adresu a druhého pro dynamickou adresu, do příkazového řádku zástupců napíšeme výše uvedené příkazy a oba zástupce vhodně pojmenujeme. Pak stačí jen poklepat na jednoho ze zástupců. Prostředí NetShell je svými možnostmi přizpůsobeno práci v síti. Počítá se přirozeně i s tím, že příkaz (prostředí) budeme chtít využít ke vzdálené správě počítačů. Přesun na jiný počítač můžeme provést bud při spouštění příkazu netsh přepínačem -r, a nebo přímo v interaktivním prostředí příkazem set: netsh -r počítač umožní pracovat v interaktivním prostředí vzdáleně na jiném počítači netsh -r počítač příkaz tento přepínač můžeme použít v neinteraktivní formě příkazu, když chceme provést některou jednorázovou akci na jiném počítači (přidáme jakýkoliv příkaz platný v NetShellu) použité v interaktivním režimu v prostředí NetShellu slouží k přesou- set machine počítač vání mezi počítači set machine pokud nezadáme cílový počítač, přesuneme se na náš, lokální, počítač Úkoly 1. Spust te prostředí NetShell a vyzkoušejte z příkladu 2.8 vše, co půjde (na co máte přístupová oprávnění). Ke každému příkazu, který vyzkoušíte, zobrazte nápovědu, abyste měli přehled o možnostech příkazu. 2. Vypište seznam cílů ve směrovací tabulce vašeho počítače. 3. Vypište tabulku existujících spojení přes protokol TCP. C

53 2.2 SLOŽENÉ PŘÍKAZY Zjistěte, zda se pro autentifikaci používá nějaký RADIUS server (pokud ano, zjistěte, který). 5. Přesuňte se do kteréhokoliv kontextu (raději hlouběji ve struktuře kontextů) a vypište jeho konfiguraci. Potom opust te prostředí NetShell a proved te totéž, výstup přesměrujte do souboru vypisnetsh.dmp (umístěte tam, kde máte právo zápisu). Tento soubor si pak prohlédněte v některém textovém editoru. 6. Pokud pracujete na počítači s Windows XP nebo vyššími, vypište konfiguraci firewallu. Zjistěte, které aplikace mají povoleno pracovat se sítí, které služby naslouchají na portech a které porty jsou otevřené. Můžete vyzkoušet výpis čehokoliv, co pro tento kontext lze vypsat. U otevřených portů a povolených aplikací se tytéž informace pokuste zjistit i v grafickém prostředí. 7. Podle příkladu 2.13 zobrazte nápovědu pro případ, že chcete interaktivně za běhu systému nastavit způsob získání IP adresy a dalších potřebných parametrů. Zkontrolujte, které parametry jsou povinné a které se nemusejí nebo za určitých okolností nemohou zadávat. Pokuste se tento příkaz sestavit podle nastavení vašeho počítače. 8. Sestavte dvojici příkazů, která bude určovat parametry DNS serveru taktéž podle umístění počítače, podobně jako tomu bylo v příkladu 2.13 (jedná se o stejný kontext, jen nenastavujete adresu, ale dns použijte nápovědu). R R 2.2 Složené příkazy Propojení příkazů a podmíněné vyhodnocování Pokud chceme na jeden řádek umístit více příkazů, musíme je spojit znakem &. Jednou z možností použití tohoto zřetězení příkazů je v Zástupcích, také se používá ve složených příkazech (seznámíme se s nimi v následující podsekci). Příklad 2.14 REM vyčistíme obrazovku, vypíšeme hlášku, prázdný řádek, REM pak obsah pracovního adresáře: CLS & ECHO Výpis pracovního adresáře: & ECHO. & DIR Další způsob propojení příkazů už známe rouru: Příklad 2.15 REM chceme zjistit údaje týkající se hesla uživatele novak: net user novak find /i heslo (vypíšou se údaje o tom, kdy bylo heslo naposledy změněno, kdy vyprší, zda uživatel smí měnit heslo, apod.)

54 2.2 SLOŽENÉ PŘÍKAZY 46 Příklad 2.16 Vytřídíme soubory a adresáře podle atributů. Příkaz vypisuje postupně všechny tři skupiny souborů a adresářů. ECHO Skryté: & DIR /a:h & ECHO Systémové: & DIR /a:s & ECHO Pro čtení: & DIR /a:r Z unixových systémů byla do Windows řady NT převzata možnost využití výše uvedených symbolů pro podmíněné vyhodnocování. Pokud symboly & a zdvojíme, budou se chovat trochu jinak. dvojsymbol && znamená konjunkci: pokud předchozí příkaz skončil s úspěchem (true), bude vyhodnocen i následující příkaz, pokud předchozí příkaz skončil s neúspěchem (false), nebude následující příkaz vyhodnocován (protože false v konjunkci s čímkoliv znamená vždy false v celém výrazu), P dvojsymbol znamená disjunkci (mezi znaky nesmí být mezera): pokud předchozí příkaz skončil s úspěchem (true), další příkaz již nebude vyhodnocován (protože jedno true v disjunkci znamená true v celém výrazu), pokud předchozí příkaz skončil s neúspěchem (false), bude vyhodnocen i další příkaz. Oba operátory můžeme také kombinovat. Typické použití je vypisování hlášení při správném nebo nesprávném provedení prvního příkazu v pořadí. Příklad 2.17 Chceme vypsat hlášení při chybě: net start fax ECHO Službu Fax Service se nepodařilo spustit. Chceme vypsat hlášení při bezchybném provedení příkazu: net start fax && ECHO Služba Fax Service byla spuštěna. Chceme obojí: ECHO Spouštím službu Fax Service: net start fax && ECHO Služba spuštěna. ECHO Službu nelze spustit. Příklad 2.18 Upravíme příkaz z příkladu Protože ted už příkaz bude velmi dlouhý a nevejde se na celý řádek, použijeme jeden z mála způsobů, jak složený příkaz rozdělit do více řádků, závorky (mezi závorkami může být symbol konce řádku): ECHO Skryté: & dir /b /a:h 2>nul && ( ECHO Systémové: & dir /b /a:s 2>nul ) && ( ECHO Pro čtení: & dir /b /a:r 2>nul ) Pokud jsou v pracovním adresáři všechny tři typy vypisovaných souborů (především první dva skryté a systémové), vypíšou se všechny tři typy (bez záhlaví a zápatí, pouze seznam souborů a adresářů). Chybový výstup není vypisován.

55 2.2 SLOŽENÉ PŘÍKAZY 47 Jestliže však v pracovním adresáři nejsou žádné skryté nebo systémové soubory, příkaz nebude dokončen. Můžeme vyzkoušet například v kořenovém adresáři systémového disku (tam jsou všechny tři typy) a v adresáři pro dokumenty uživatele (tam nejsou žádné skryté ani systémové). Bohužel se vypíše první řetězec Skryté:, tomu se případně dá předejít použitím příkazů, které se naučíme na následujících stránkách. Příklad 2.19 Porovnáme tyto dva příkazy: net user neexistujici ECHO Neexistující uživatel net user neexistujici ECHO Neexistující uživatel První příkaz je samozřejmě nesmyslný, hláška se vypíše i při úspěšném vypsání údajů o uživateli, kdežto druhý příkaz vypíše hlášku pouze při chybě (uživatel neexistuje). Zajímavé je však to, v jakém pořadí se vypisují výstupy příkazů. V prvním případě se nejdřív objeví výstup ECHO a pak až chybové hlášení NET, v druhém případě právě naopak. Je to z toho důvodu, že v prvním případě se chybový kód vytváří pro řádek jako celek. Pokud chceme tuto chybovou hlášku použít jako výchozí, můžeme příkaz poupravit: net user neexistujici 2>nul ECHO Neexistující uživatel Příklad 2.20 Chceme ukončit dávkový soubor při výskytu chyby a zároveň do proměnné errorlevel uložit číslo, ze kterého by bylo možné poznat, jaká chyba off... dir /b 2>nul exit /B 1 copy *.txt exit /B 2 Pokud došlo k chybě u příkazu dir, v proměnné errorlevel bude hodnota 1, jestliže chyba nastala v dalším příkazu, bude v errorlevel hodnota 2, atd. Když nedojde k žádné chybě, hodnota errorlevel bude obsahovat 0. Pokud budeme chtít i něco vypsat (nebo provést jiný příkaz), můžeme příkazy zřetězit: dir /b 2>nul echo Nastala chyba & exit /B 1 Úkoly 1. Příkaz dir je jedním z příkazů používajících proměnnou errorlevel pro uložení typu chyby. Sestavte příkaz, který v případě chyby vypíše hodnotu proměnné errorlevel (použijte podmíněné propojení příkazů, výpis proměnné errorlevel proved te pomocí echo). 2. Sestavte příkaz, který bud vypíše všechny skryté soubory a podadresáře v pracovním adresáři, a nebo (když tam žádné nejsou) hlášení, že v zadaném adresáři žádné skryté soubory nejsou. Můžete využít postup z příkladu C

56 2.2 SLOŽENÉ PŘÍKAZY Příkaz z předchozího úkolu obohat te v případě, že ve výpisu skrytých souborů a podadresářů bude alespoň jedna položka (tj. skončí úspěchem, bez chyby), pro porovnání spust te výpis obsahu pracovního adresáře bez dalších parametrů. 4. Zjistěte, jaká hodnota se objeví v proměnné errorlevel, když se pokusíte vypsat sdílené prostředky na (jiném) počítači v síti, který neexistuje (pro název počítače použijte sice správnou syntaxi, ale nesmyslný název počítače, třeba \\ABC) Podmíněný příkaz Příkaz IF používáme v dávkových souborech k větvení programu. Existuje ve více variantách: IF EXIST testujeme, zda existuje soubor IF EXIST soubor příkaz pokud existuje uvedený soubor, provede zadaný příkaz IF EXIST dopis.txt TYPE dopis.txt MORE pokud existuje dopis.txt, bude vypsán, a to po stránkách IF NOT EXIST dopis.txt ECHO soubor dopis.txt neexistuje pokud zadaný soubor neexistuje, vypíše se chybové hlášení IF EXIST dopis.txt (TYPE dopis.txt) ELSE ECHO soubor neexistuje pokud existuje soubor dopis.txt, bude vypsán, jinak se vypíše chybové hlášení; všimněte si, že příkaz před else je uzavřen do závorek, protože obsahuje mezeru (jinak by else bylo považováno za parametr příkazu z první větve, nebylo by nalezeno) IF DEFINED zjistí, jestli je definovaná zadaná proměnná IF DEFINED userprofile CD /D %userprofile% pokud je definována proměnná userprofile, přesuneme se pomocí ní do uživatelského profilu (parametr /D změní nejen pracovní adresář, ale i pracovní disk, viz nápovědu příkazu CD) IF DEFINED date ECHO %date% pokud je definována proměnná date, vypíše její hodnotu (příkaz if defined je jediným příkazem, který dokáže pracovat s dynamickými proměnnými i bez jejich obklopení symboly %) IF DEFINED vlastni_cesta CD %vlastni_cesta% příkaz přesunu do adresáře uloženého v proměnné bude proveden jen tehdy, pokud proměnná existuje IF NOT DEFINED cesta set cesta=%cd% pokud není definována proměnná cesta, vytvoříme ji a inicializujeme na cestu k pracovnímu adresáři IF ERRORLEVEL testuje, zda se proměnná errorlevel rovná danému číslu; do proměnné errorlevel ukládají programy číslo určující způsob jejich ukončení (0 znamená OK, vyšší číslo některý druh ukončení s chybou), tento příkaz se často kombinuje s příkazem skoku a při testování různých hodnot naskládáme víc příkazů if errorlevel pod sebou IF ERRORLEVEL číslo příkaz pokud je v errorlevel uložena hodnota větší nebo rovna zadanému číslu, provede se příkaz a zároveň se proměnná vynuluje

57 2.2 SLOŽENÉ PŘÍKAZY 49 IF ERRORLEVEL 2 GOTO :NAV2 pokud poslední spuštěný program vrátil hodnotu 2 nebo vyšší, vyhodnotí podmínku jako true (provede odskok na dané návěští a vynuluje proměnnou errorlevel), jinak false (odskok neprovede a pokračuje následujícím příkazem) IF ERRORLEVEL 1 GOTO :NAV1 podobně pokud naposledy spuštěný program skončil s hodnotou 1 nebo vyšší, provede odskok a vynuluje errorlevel, jinak příkaz nic neprovede a pokračujeme dále IF ERRORLEVEL 1 exit /B 1 předáme chybový kód o úroveň výše (dávkový soubor, ve kterém pracujeme, bude ukončen s chybovým kódem 1) IF op1 OPERÁTOR op2 porovná řetězce nebo čísla (řetězce by měly být v uvozovkách) podle zadaného operátoru. Možné operátory jsou v tabulce 2.1 (pokud jsou oba operandy čísla, je s nimi také vnitřně zacházeno jako s čísly) Operátor Význam == rovná se (pro řetězce) EQU rovná se (pro čísla) NEQ nerovná se Operátor LSS LEQ GTR GEQ Význam menší než menší nebo rovno větší než větší nebo rovno Tabulka 2.1: Operátory pro příkaz IF IF %1 == MD novy_adr pokud první parametr dávkového souboru obsahujícího tento příkaz je prázdný řetězec (tj. nebyl zadán, v tomto případě nebyl zadán žádný parametr kromě samotného názvu souboru), pak vytvoříme nový adresář IF %1 == (MD novy_adr) ELSE MD %1 podobně jako předchozí, ale pokud soubor neexistuje, provede se větev else IF NOT %prom% == %1 ECHO nerovná se pro porovnávání řetězců používáme jen zdvojené rovnítko, jestliže chceme testovat nerovná se, použijeme klíčové slovo not IF %prom% GEQ 0 (ECHO nezáporné) ELSE ECHO záporné zjistí, jestli je hodnota proměnné větší nebo rovna nule Nesmíme zapomenout, že pokud je v proměnné errorlevel číslo větší nebo rovno uvedenému číslu (testování dopadne s hodnotou true), proměnná se vynuluje, proto tyto řádky nesmíme vyměnit, testování začíná od nejvyššího čísla, které nás zajímá. Příklad 2.21 Chceme v dávkovém souboru se souborem provést postupně několik operací, ale jen pokud existuje. IF EXIST ab.txt ( ECHO Soubor ab.txt: & TYPE ab.txt & DEL ab.txt & GOTO :hotovo ) ECHO Soubor ab.txt neexistuje :hotovo Pokud zadaný soubor existuje, vypíše se o tom hláška, soubor je vypsán a následně smazán, pokud neexistuje, pouze se o tom vypíše hláška na obrazovku)

58 2.2 SLOŽENÉ PŘÍKAZY 50 Příklad 2.22 Následující úseky kódu z dávkového souboru provedou totéž načtou od uživatele vstup, a pokud je to prázdný řetězec, vypíšou hodnotu proměnné errorlevel. Mimo dávkový soubor bude fungovat alespoň první možnost. 1. set /p vypis= Zadej řetězec: ECHO Errorlevel = %errorlevel% 2. set /p vypis= Zadej řetězec: if errorlevel 1 ECHO Errorlevel = %errorlevel% 3. set /p vypis= Zadej řetězec: if %vypis%== ECHO Errorlevel = %errorlevel% Úkoly 1. Vyzkoušejte výše uvedené příklady (pokud to jde). Vytvořte si dvě vlastní proměnné, uložte do nich různá čísla a vyzkoušejte také porovnávání číselných proměnných. 2. Na stránce si všimněte využití testování chybových kódů (proměnná errorlevel u příkazu robocopy. Jsou zde uvedeny přímo úseky z dávkových souborů využívajících k zálohování příkaz robocopy. 3. Vytvořte dávkový soubor, který bude zkoušet sčítání. Proměnná random vrací hodnotu v rozmezí , což je poměrně hodně, tedy v příkazech generujících operandy upravte maximální hodnotu například pomocí operace dělení (aby sčítání bylo proveditelné rychle zpaměti). Cyklus implementujte pomocí příkazu goto (zeptejte se, zda chce uživatel pokračovat, když ne, proved te skok na konec souboru). V cyklu do proměnných vygenerujte dvě náhodná čísla z vhodného intervalu, vypište první číslo + druhé číslo= a očekávejte výsledek. Ten pak otestujte a vypište hodnocení. C R Cyklus přes množinu V Příkazovém řádku a v dávkovém souboru můžeme použít příkaz FOR s množinami řetězců. Zadáváme vždy proměnnou, přes kterou probíhá cyklus, množinu, ze které jsou brány řetězce (lze použít i zástupné znaky) a příkaz, který se má opakovaně provést. Do proměnné jsou postupně dosazovány všechny prvky množiny. Před proměnnou píšeme jeden symbol procenta %, pokud příkaz zadáváme přímo na Příkazovém řádku, dva symboly procenta %%, pokud příkaz píšeme do dávkového souboru (aby nedošlo k záměně s jinými vnitřními proměnnými, které předchází jeden symbol %), další symbol procenta % přidáváme ve vnořeném cyklu (tj. pokud máme v dávkovém souboru cyklus for vnořený v jiném cyklu for, vnitřní proměnná vnitřního cyklu for bude mít tři symboly procenta, atd.). P

59 2.2 SLOŽENÉ PŘÍKAZY 51 FOR %C IN (*.BAT *.COM *.EXE) DO DEL %C smažeme všechny soubory s příponou BAT, COM a EXE v pracovním adresáři (použito přímo na Příkazovém řádku) FOR %%C IN (*.BAT *.COM *.EXE) DO DEL %%C totéž (použito v dávkovém souboru) FOR %%a IN (*.TXT) DO ECHO %%a & COPY %%a Kopie\%%a postupně vypisuje názvy všech souborů s příponou TXT v pracovním adresáři a v podadresáři Kopie od každého vytvoří kopii. Můžeme pracovat samozřejmě také s adresáři, nejen se soubory (použito v dávkovém souboru) Příklad 2.23 Množina nemusí nutně obsahovat jen názvy souborů. Pokud uvádíme jmenovitě více položek, oddělíme je čárkou nebo jen mezerou. Sestavíme příkaz, který postupně vypíše čísla od 1 do 4: for %i in ( ) %i E Poznámka: U příkazu for bychom si měli dávat pozor především na to, že pokud příkaz v těle ovlivňuje množinu, nad kterou celý příkaz pracuje, může se stát, že výpočet půjde do nekonečna. Kromě znalosti důležité klávesové zkratky Ctrl+C bychom proto měli vždy dbát o to, aby v takovém případě byl výstup vnořeného příkazu směrován jinam (třeba do podadresáře). Příklad 2.24 Porovnáme funkčnost těchto dvou příkazů: for %i in (*.doc *.txt) do copy %i Zaloha_%i for %i in (*.doc *.txt) do copy %i Zaloha\%i První příkaz je chybný, způsobí zacyklení. Je sice užitečné, že všechny soubory se zadanými příponami budou zálohovány, ale protože jsou vytvořené zálohy uloženy v témže adresáři, začnou se postupně vytvářet i zálohy záloh, atd., například pro soubor soub.txt vzniknou postupně tyto soubory: Zaloha_soub.txt Zaloha_Zaloha_soub.txt Zaloha_Zaloha_Zaloha_soub.txt atd. Oproti tomu druhý uvedený příkaz funguje dobře, protože vytváří nové soubory v podadresáři. Příklad 2.25 Budeme počítat zkopírované soubory, následující kód je v dávkovém off set pocet=0 echo Kopírujeme všechny soubory s příponou ini: M

60 2.2 SLOŽENÉ PŘÍKAZY 52 set /p adresar= Zadejte cílový adresář s celou cestou: if not exist %adresar% goto :neexistujeadr for %%i in (*.ini) do ( xcopy /s /q %%i %adresar% set /a pocet+=1 ) goto :ok :neexistujeadr echo Zadaný adresář %adresar% neexistuje. goto :konec :ok Echo Kopírování dokončeno, bylo zkopírováno %pocet% souborů. :konec Příkaz FOR má ve skutečnosti mnohem širší možnosti použití (zjistíme pomocí for /? nebo v grafické nápovědě). Najdeme tady několik různých přepínačů, a také modifikátory, kterými se dostaneme k částem řetězce dosazeného za proměnnou. Příklad 2.26 Například u některých konverzních programů je třeba zadat tentýž název souboru, jako původní, ale s jinou příponou, zde vidíme použití přímo na příkazovém řádku: for %i in (*.png) do convert %i %~ni.eps (program convert je součástí balíku programů Image Magick) uvedený příkaz provede konverzi všech souborů s příponou PNG v pracovním adresáři na stejně pojmenované soubory, ale s příponou (a také typem) EPS, modifikátor ~n způsobí u proměnné odtržení přípony včetně tečky, a tedy řetězec %~ni vrátí tentýž název souboru jako %i, ale bez přípony. Úkoly 1. Vytvořte dávkový soubor, který postupně všechny své parametry vypíše na samostatné řádky, pokud žádný parametr není zadán, vypíše pouze řetězec Žádný parametr nebyl zadán (využijte příkazy IF, GOTO, FOR, SHIFT, ECHO, neexistující parametr zjistíte tak, že příslušná proměnná je prázdný řetězec). 2. Vytvořte dávkový soubor, který vypíše obsah zadaného adresáře (tento adresář bude zadán jako první parametr souboru). Dále se zeptá, které soubory má vypsat, načte řetězec zadaný uživatelem (příkaz SET /p) a použije v příkazu FOR s příkazem DIR. 3. V příkazu uvedeném v příkladu 2.23 odstraňte před echo. Jaký vliv má uvedení či neuvedení tohoto symbolu? C

61 2.3 HROMADNÉ ZPRACOVÁNÍ DAT Cyklus přes interval Pokud chceme použít cyklus for tak, jak je obvykle používán v programovacích jazycích, máme k dispozici přepínač /L. Základní syntaxe je: for /L %prom in (začátek,krok,konec) do příkaz Je to podobné, jako když například v Pascalu napíšeme příkaz for prom=začátek to konec do Navíc máme možnost určit délku kroku jinou než 1, to znamená, že proměnná prom bude v každém dalším volání zvýšena o zadanou hodnotu. Příklad 2.27 Vypíšeme lichá čísla z intervalu od 1 do 20: for /L %i in (1,2,20) %i Vypočteme faktoriál zadaného čísla: set /p konec= Zadej číslo: set vypocet=1 for /L %i in (1,1,%konec%) /a vypocet*=%i & echo. Úkoly 1. Na Příkazovém řádku vypočtěte aritmetický průměr ze zadaného počtu zadaných čísel (využijte postup z příkladu 2.27). 2. Podobně vypište řadu Fibbonacciho čísel o délce zadané uživatelem. C 2.3 Hromadné zpracování dat Přepínač /F příkazu for můžeme použít ke zpracování textového souboru. To využijeme například tehdy, když do souboru uložíme posloupnost záznamů, na které chceme postupně uplatnit některý příkaz. P Příklad 2.28 Předpokládejme, že máme k dispozici CSV soubor (tj. textový soubor, ve kterém je uložena tabulka, buňky na řádku odděleny středníkem, lze otevřít v jednoduchém textovém editoru nebo v tabulkových editorech), ve kterém jsou uloženy údaje o objednávkách různých zařízení předpokládejme, že jde o notebooky. Sloupce mají tento význam (nejsou v souboru přímo popsány, najdeme tam jen samotná data o objednávkách): 1. identifikátor, každý řádek má jiný (můžeme brát jako číslování řádků ) 2. číslo objednávky; řádky vztahující se ke stejné objednávce zde mají stejnou hodnotu

62 2.3 HROMADNÉ ZPRACOVÁNÍ DAT název zařízení 4. počet objednaných kusů tohoto zařízení 5. dodavatel 6. datum objednávky 7. komentář k zařízení Chceme zjistit seznam zařízení, která jsou součástí objednávky číslo , vypíšeme název zařízení a počet objednaných kusů: for /F delims=; tokens=2-4 %a in (objednavky.csv) do ( if %a == (echo %b: %c kusů )) Vidíme, že hned za přepínačem /F je upřesnění formátu načítaného souboru (zadáváme, které části souboru má příkaz brát v úvazu a jakým způsobem). Zadali jsme oddělovač (středník) a pak sloupce, které má příkaz vidět (tj. od druhého do čtvrtého sloupce, první nás nezajímá). Následuje proměnná %a, která bude přiřazena prvnímu z viditelných sloupců, tedy vlastně druhému sloupci ze souboru. Následující sloupec zpracovávaného řádku (třetí ze souboru) bude přístupný v proměnné %b, další v proměnné %c. Konstrukce in (objednavky.csv) určuje soubor, který má být zpracován, musí následovat klíčové slovo do a pak příkaz, který se má provést pro každý nalezený řádek zvlášt. Vnitřním příkazem je příkaz if, který otestuje, zda daný řádek chceme (patří k objednávce, která nás zajímá), a když ano, vypíše požadované údaje z tohoto řádku (název zařízení a počet objednaných kusů). Všimněte si, že příkaz zabírá dva řádky. To není problém, jen je třeba dbát na to, abychom na konec řádku, která má mít pokračování, napsali levou závorku (pak Příkazový řádek automaticky počítá s tím, že příkaz není kompletní a pokračuje na dalším řádku). Příklad 2.29 Opět budeme prohledávat soubor, který je popsán v předchozím příkladu. Zajímají nás dodavatelé dodávající notebooky Lenovo řady IdeaPad. Víme, že součástí názvu výrobku bude řetězec IdeaPad, tedy pro filtrování použijeme příkaz find (v podmínce příkazu if se zjišt uje pouze rovnost či nerovnost). for /F delims=; tokens=2-5 %a in (objednavky.csv) do ( echo objednavka: %a, dodavatel: %d, zarizeni: %b find /i ideapad ) Vypíšou se záznamy obsahující hledaný řetězec, ke každému nejdřív číslo objednávky, název dodavatele a pak název zařízení. Úlohu bychom také mohli řešit příkazem findstr použitým přímo na soubor objednavky.csv, ale výše uvedeným způsobem si vybereme, které části řádku budou vypsány a které mají být ignorovány.

63 2.3 HROMADNÉ ZPRACOVÁNÍ DAT 55 Příklad 2.30 Při použití příkazu for v dávkovém souboru je třeba k proměnným přidat druhý symbol %, abychom odlišili tyto vnitřní proměnné od jiných typů proměnných, především parametrů dávkového souboru. Předpokládejme, že v evidenci testů do různých předmětů na některé škole máme tyto tři soubory: tests.csv obsahující seznamy čísel otázek ke každému testu, význam jednotlivých sloupců v souboru je následující: 1. číslo (identifikátor) testu, každý test má jiné 2. číslo (identifikátor) předmětu, do něhož test patří 3. seznam čísel otázek tohoto testu (čísla jsou oddělena mezerami) 4. komentář k testu questions.csv obsahující texty otázek: 1. číslo (identifikátor) otázky, v tabulce tests.scv tyto identifikátory najdeme v 3. sloupci 2. text otázky answers.csv obsahující seznam odpovědí k otázkám, studenti mají označovat ty odpovědi, které jsou správné: 1. číslo (identifikátor) odpovědi 2. číslo otázky, ke které odpověd patří, je to vlastně odkaz do prvního sloupce předchozí tabulky 3. text odpovědi 4. komentář k odpovědi Chceme vytvořit soubor vysledek1056.csv obsahující otázky testu č a odsazeně také odpovědi. Protože takto budeme chtít zpracovat víc různých testů, vytvoříme dávkový soubor, který bude mít jako první parametr název souboru pro výstup, a jako druhý parametr číslo otázky. Na konec zadaného souboru vloží řádek s otázkou a hned za tento řádek přidá řádky s odpověd mi, za poslední odpověd k otázce přidá prázdný řádek. Obsah off rem řádek s otázkou - v prvním sloupci porovnáme číslo otázky, pokud souhlasí, rem přidáme ji na konec souboru for /F delims=; tokens=1-2 %%a in (questions.csv) do ( if %%a == %2 ( echo %%b >> %1 ) ) M rem řádky s odpověd mi, budou odsazeny (přidáváme na začátek oddělovač) for /F delims=; tokens=1-3 %%a in (answers.csv) do ( if %%a == %2 ( echo ; %%c >> %1 ) ) rem prázdný řádek: echo ; >> %1 Soubor uložíme pod názvem testy.bat. Abychom to příliš nekomplikovali, seznam čísel otázek k danému testu zjistíme ručně v souboru tests.csv. Předpokládejme, že tento seznam je

64 2.3 HROMADNÉ ZPRACOVÁNÍ DAT 56 Použijeme cyklus přes množinu: for %i in ( ) testy.bat vysledek1056.csv %i ) Seznam čísel otázek můžeme do příkazu vkopírovat (připomeňme si, že do Příkazového řádku vkládáme přes kontextové menu titulku okna Úpravy Vložit). Všimněte si, že před volaný příkaz jsme dali aby se nevypisovaly prováděné příkazy. Volaný spustitelný (dávkový) soubor má dva parametry výsledný soubor a pak číslo otázky z množiny, přes kterou probíhá lokální proměnná %i. Příklad 2.31 Chceme přidat několik desítek (nebo stovek, to je jedno) nových uživatelů (studentů), ale nechce se nám to dělat ručně. Všichni mají být zařazeni do nové skupiny studenti2010. Seznam jsme dostali v souboru (sice ne textovém, ale text bez problémů vytáhneme). Předpokládejme, že jsme podle původního souboru vytvořili soubor uzivatele2010.txt, kde na každém řádku souboru je jeden student a pro něj vždy tři údaje jako první je identifikační číslo, pak příjmení, a potom jméno. Všechny tři údaje na řádku jsou odděleny mezerou. Ve stejném adresáři, ve kterém máme soubor uzivatele2010.txt, vytvoříme dávkový soubor, který chceme volat (spouštět) se dvěma parametry takto: pridejuziv.bat studenti2010 uzivatele2010.txt První parametr je název nové skupiny, druhý parametr je název souboru se seznamem uživatelů. Vytvoříme tedy dávkový soubor pridejuziv.bat s tímto off REM vytvorime skupinu uzivatelu s nazvem, ktery vezmeme z prvniho parametru: net localgroup %1 /add if errorlevel 1 goto :chyba M REM bereme v uvahu existenci tri sloupcu, REM na zpracovavanem radku je vzdy prvek z prvniho sloupce %%a, z druheho %%b, z tretiho %%c: for /F tokens=1-3 %%a in (%2) do ( REM prvni prvek je prihlasovaci jmeno -- id. cislo, druhe prijmeni, treti krestni jmeno: net user %%a %%a /add /fullname: %%c %%b net localgroup %1 %%a /add ) goto :konec :chyba Echo Chyba při zpracování :konec Ve skutečnosti bychom nové uživatele přidávali spíše na serveru do domény (příkaz net group apod.), zde pro zjednodušení použijeme lokální skupinu. Vytvořený dávkový soubor pak můžeme používat každoročně, stačí jen zaměnit soubor s uživateli za nový a v parametru napsat název jiné skupiny. Studenti mají nastaveno heslo totožné se svým přihlašovacím jménem (to je identifikační číslo). Dále bychom měli správně přiřadit vhodná

65 2.3 HROMADNÉ ZPRACOVÁNÍ DAT 57 přístupová oprávnění (nové skupině, není třeba je přidělovat zvlášt všem novým uživatelům). To by také mohlo být součástí skriptu. Pokud budeme chtít pro kontrolu vypsat všechna jména a příjmení (jen na Příkazovém řádku, ne v dávkovém souboru), zadáme: for /F tokens=2,3 %a in (uzivatele2010.txt) %b %a Příklad 2.32 Textové soubory s uživateli přidanými v jednotlivých letech si můžeme archivovat a po uplynutí maximální doby studia pomocí obsahu souboru všechny uživatele z daného roku odstranit: for /F tokens=1-3 %a in (uzivatele2010.txt) do net user %a /delete net localgroup studenti2010 /delete Je zřejmé, že tyto příkazy jsme zadávali přímo na Příkazovém řádku, není nutné k tomu tvořit dávkový soubor (i když i to by šlo). Na příkladech vidíme syntaxi za parametrem /F je řídicí řetězec, který říká, co konkrétně ze souboru máme použít. Následuje vnitřní proměnná, do které bude dosazen první oznámený prvek na každém řádku (většinou chápán jako prvek v prvním sloupci, resp. v tom, který zadáme v rozsahu tokens). Dále zadáme název souboru, který se má zpracovávat, a zbytek už známe (příkaz). Podle počtu deklarovaných sloupců (v části tokens) jsou vytvořeny další vnitřní proměnné (následující podle abecedy za tou první), přes ně pak přistupujeme k dalším prvkům na řádku. První je dostupný přes %a nebo %%a, druhý přes %b nebo %%b, atd. Velmi důležitý je řídicí řetězec. V příkladech je tokens=1-3, to znamená, že zpracováváme první až třetí sloupec. Sloupce mohou být zadány také výčtem, některý můžeme i přeskočit (to má vliv na přidělování položek řádku k vnitřním proměnným příkazu). Řídicí řetězec může vypadat i takto: for /F delims=: tokens=1,3-5 %%a... (oddělovačem položek na řádku je dvojtečka, zpracováváme pouze první a třetí až pátou položku na řádku, druhou a případně šestou přeskočíme). Všimněte si, že celý řídicí řetězec musí být v uvozovkách. Úkoly Možností je více, podrobnosti získáme zadáním for /? na Příkazovém řádku. 1. Projděte si pořádně příklady Podle prvního z těchto příkladů sestavte postup, kterým vytvoříte obdobné soubory pro celou sérii objednávek z rozsahu (číslo objednávky bude součástí názvu souboru). Použijte jednu z forem příkazu for, která je blízká pojetí příkazu v klasickém programování (najdete v předchozím textu). P C R

66 2.5 POWERSHELL Nyní trochu rozvineme příklad Pokuste se zautomatizovat volání dávkového souboru pro seznam čísel otázek daného testu. Vytvořte dávkový soubor, jehož parametrem bude číslo testu, v dávkovém souboru pak pomocí cyklu for /F vytáhněte ze souboru tests.csv posloupnost čísel otázek tohoto testu (můžete ji prozatímně uložit do proměnné) a pak zavolejte již vytvořený dávkový soubor testy.bat s příslušnými parametry (druhý parametr je posloupnost, kterou jste zjistili předchozím příkazem, první parametr název cílového souboru vytvořte zřetězením s parametrem souboru, který právě tvoříte, což je číslo testu). Vzpomeňte si, jak je třeba volat dávkový soubor uvnitř jiného dávkového souboru! (viz str. 1.4) R 2.4 Odlišnosti v nástrojích Příkazového řádku Různé verze (ale i varianty v rámci jedné verze) se liší svým vybavením nástroji pro Příkazový řádek. Odlišnosti jsou také mezi desktopovými a serverovými variantami. Obecně se dá říct, že se stoupající verzí sice některé starší nástroje zmizí, ale pokaždé jich více přibývá, tedy množství nástrojů má stoupající tendendci. Ve Windows Server od verze 2008 je velmi doporučována instalace tzv. Server Core (tj. není nainstalováno grafické rozhraní, pracujeme pouze a jenom v textovém rozhraní podobně jako v nejstarších unixových systémech). Hlavním důvodem je zvýšení bezpečnosti (moduly grafického rozhraní běží v kontextu jádra, a cokoliv běží v kontextu jádra a je napadnutelné, to znamená bezpečnostní riziko), další důvod by mohl být zvýšení propustnosti a snížení zátěže serveru (grafické rozhraní je výpočetně náročné). Zřejmě proto zvláště ve verzích XP a Vista (zároveň se Server 2003 a 2008) přibylo množství nových příkazů. V tomto dokumentu není ani zdaleka uvedeno vše, co lze na Příkazovém řádku použít. Základní přehled o nových příkazech (obecně přes všechny verze) získáme bud na internetu a nebo v nápovědě, když zadáme nové nástroje příkazového řádku. Někdy nepomůže ani to (ve variantách Home je nápověda neskutečně osekaná, až na hranici použitelnosti). Úkoly 1. Zjistěte, jak funguje příkaz ipseccmd (od verze XP). Pomocí tohoto příkazu vypište statistiky (většinou chybová hlášení) protokolu IPSec, filtrů, zásad, atd. 2. Zjistěte, jak funguje a k čemu slouží příkaz driverquery (taktéž od verze XP). 3. Najděte seznam příkazů, který byl nově přidán do verze Windows, kterou právě používáte. Vyberte si několik příkazů a zjistěte, k čemu slouží a jaká je jejich syntaxe. C

67 2.5 POWERSHELL PowerShell PowerShell je obdoba Příkazového řádku ve Windows Vista (Příkazový řádek však zůstává zachován, obě řešení existují vedle sebe). Je součástí Windows 7 a Windows Server 2008, lze ho doinstalovat i do Windows XP SP2 a SP3 a Windows Vista. Momentálně existují verze 1.0 a Jak na PowerShell PowerShell je postaven na technologii.net (později se o této technologii dovíme více). Vzhledově se velmi podobá Příkazovému řádku, rozdíl je v možnosti používání myši a samozřejmě také v příkazech. Existují také grafická prostředí. Používáme tyto typy příkazů: příkazy typu CMDLET jde o nativní příkazy PowerShellu, jiným způsobem se k nim nedostaneme, jsou uloženy v dynamických knihovnách dodávaných s PowerShellem, aplikace, tedy spustitelné soubory (třeba.exe) stačí napsat název souboru (případně s cestou), stejně jako v Příkazovém řádku, protože mnohé z dříve probíraných příkazů jsou vlastně spustitelné soubory, aliasy zastupují příkazy jiných typů (obvykle s dlouhým či hůře zapamatovatelným názvem), také existují některé aliasy s názvem vnitřního příkazu Příkazového řádku, které vnitřně volají příkaz typu CMDLET (například dir), funkce pojmenované skupiny příkazů (podobně jako v jazyce C). Obvyklá syntaxe příkazů CMDLET je sloveso-podstatné_jméno parametry. Parametry typu přepínačů začínají pomlčkou, stejně jako v unixových systémech. Uvedeme si několik příkazů pro ukázku: P Příkaz GET-PROCESS GET-ALIAS STOP-PROCESS SET-VARIABLE GET-COMMAND Význam seznam spuštěných procesů včetně základních informací (jako parametr můžeme použít regulární výraz pro masku názvu procesů) bez dalších parametrů zobrazí seznam aliasů zastaví spuštěný proces (název dodáme jako parametr) nastaví proměnnou na danou hodnotu bez dalších parametrů vypíše seznam příkazů Tabulka 2.2: Některé příkazy PowerShellu Příklad 2.33 Ukážeme si vyvolání výpisu seznamu příkazů v PowerShellu. Pokud nemáme PowerShell k dispozici (v XP nebo Vistě), najdeme si instalační soubor na webu Microsoftu, vybereme pro náš operační systém (XP nebo Vista, pozor, u Visty je důležité vědět, zda máme 32bitový nebo 64bitový systém). Po spuštění (Start Programy Windows PowerShell, případně může být v Příslušenství) se objeví úvodní hlášení a prompt: Windows PowerShell Copyright (C) 2009 Microsoft Corporation. All rights reserved. PS C:\Documents and Settings\Šárka> M

68 2.5 POWERSHELL 60 Skutečnou podobu okna (Windows XP) vidíme na obrázku 2.2. Všimněte si, že se rozhraní sice trochu podobá Příkazovému řádku, ale poznáme, že máme spuštěný PowerShell. Obrázek 2.2: Okno PowerShellu Zadáme příkaz, který by měl vypsat seznam příkazů typu CMDLET a případně nadefinovaných aliasů a funkcí: PS C:\Users\Šárka> get-command CommandType Name Definition Alias % ForEach-Object Alias? Where-Object Cmdlet Add-Content Add-Content [-Path] <String[]> [-Value] <Object[... Cmdlet Add-History Add-History [[-InputObject] <PSObject[]>] [-Pass... Cmdlet Add-Member Add-Member [-MemberType] <PSMemberTypes> [-Name]... Cmdlet Add-PSSnapin Add-PSSnapin [-Name] <String[]> [-PassThru] [-Ve... Alias cat Get-Content Alias cd Set-Location Function cd.. Set-Location.. Function cd\ Set-Location \ Cmdlet Clear-Content Clear-Content [-Path] <String[]> [-Filter <Strin... Cmdlet Clear-Item Clear-Item [-Path] <String[]> [-Force] [-Filter... Cmdlet Clear-ItemProperty Clear-ItemProperty [-Path] <String[]> [-Name] <S... Cmdlet Clear-Variable Clear-Variable [-Name] <String[]> [-Include <Str... Cmdlet Compare-Object Compare-Object [-ReferenceObject] <PSObject[]> [... Cmdlet ConvertFrom-SecureString ConvertFrom-SecureString [-SecureString] <Secure... Cmdlet Convert-Path Convert-Path [-Path] <String[]> [-Verbose] [-Deb... Cmdlet ConvertTo-Html ConvertTo-Html [[-Property] <Object[]>] [-InputO... Cmdlet ConvertTo-SecureString ConvertTo-SecureString [-String] <String> [[-Sec... Cmdlet Copy-Item Copy-Item [-Path] <String[]> [[-Destination] <St... Cmdlet Copy-ItemProperty Copy-ItemProperty [-Path] <String[]> [-Destinati... Cmdlet Export-Alias Export-Alias [-Path] <String> [[-Name] <String[]... Cmdlet Export-Clixml Export-Clixml [-Path] <String> [-Depth <Int32>]... Cmdlet ForEach-Object ForEach-Object [-Process] <ScriptBlock[]> [-Inpu... Cmdlet Format-List Format-List [[-Property] <Object[]>] [-GroupBy <... Cmdlet Get-Acl Get-Acl [[-Path] <String[]>] [-Audit] [-Filter < M (skutečný výpis je velmi dlouhý). Je to pouze orientační seznam příkazů, který pomůže, když si nemůžeme vzpomenout na název příkazu.

69 2.5 POWERSHELL 61 Často je používán pomocný příkaz FORMAT-LIST, zkráceně FL, který vhodně zformátuje výstup. Výstup zformátovaný pomocí FL bývá u většiny příkazů mnohem širší, tj. mnohé položky zobrazení nejsou ignorovány. Například GET_SERVICE FORMAT-LIST vypíše mnohem obsáhlejší výstup než bez směrování přes formátovací příkaz (výstupem jsou podrobné informace o službách). Příkazy lze spojovat rourou, například pro GET_SERVICE GET_MEMBER část před rourou vrátí seznam.net objektů služeb, příkaz za rourou zobrazí vlastnosti a metody těchto objektů. Oproti Příkazovému řádku se liší syntaxe používání proměnných. Když k proměnné přistupujeme, neobklopujeme její název symboly %, ale před název dáme symbol $ (to je ostatně syntaxe obvyklá v unixových systémech), také je někdy nutné přidat řetězec env:. Například: $env:path += ;novy_adresar adresáře jsou odděleny středníkem). (na konec proměnné path přidá další adresář, jak vidíme, V PowerShellu můžeme bez problémů využívat i příkazy, které známe z Příkazového řádku. Na výchozím promptu ostatně jistou podobnost vidíme. Taktéž existuje pracovní adresář (složka) a mezi adresáři (složkami) se můžeme pohybovat jak pomocí CMDLETu set-location, tak i pomocí staršího příkazu cd (pokud je nadefinován alias cd, což obvykle je). Můžeme například vypsat sít ové adresy příkazem ipconfig /all či vypsat seznam uživatelů příkazem net user a vše klidně přesměrovat do souboru. Příklad 2.34 Některé původní příkazy dávají v PowerShellu stejný výstup jako na Příkazovém řádku, ale u jiných tomu tak nemusí být. Například příkaz dir může být definován jako alias příkazu get-childitem, a v tom případě je jeho výstup v úplně jiném formátu než na Příkazovém řádku: PS C:\Users\Šárka> dir Directory: C:\Users\Šárka Mode LastWriteTime Length Name d :52.gimp-2.6 d :04.VirtualBox d-r :05 Contacts d-r :05 Desktop d-r :49 Documents d-r :05 Favorites d-r :05 Links d-r :17 Pictures d :01 programy d :34 VirtualBox VMs -a : recently-used.xbel -a : gsview64.ini -a :18 0 Sti_Trace.log L M Výstup vám určitě připomene výstup linuxového příkazu ls, jen je zde poněkud méně informací. V prvním sloupci najdeme řetězec obsahující nastavené atributy (písmeno d znamená directory, tedy adresář, dále u některých položek máme r (read-only), a (archivate), případně by zde mohly být atributy h nebo s (hidden, system), ale není zapnuto zobrazování těchto typů souborů.

70 2.5 POWERSHELL Pár typických úloh v PowerShellu Nápovědu získáme takto: GET-COMMAND vypíše seznam příkazů GET-COMMAND FL navíc vhodně zformátuje jako seznam položek GET-HELP vypíše obecnou nápovědu GET-HELP příkaz vypíše nápovědu pro daný příkaz, například GET-HELP GET-PROCESS GET-HELP příkaz -detailed vypíše podrobnější nápovědu příkazu GET-HELP příkaz -full vypíše plnou nápovědu pro daný příkaz GET-HELP příkaz -examples příklady použití pro daný příkaz GET-HELP GET-* vypíše nápovědu ke všem příkazům začínajícím GET- Příklad 2.35 Víme, že existuje příkaz get-process, ale chceme více informací. Tyto informace získáme takto: PS C:\Users\Šárka> get-help get-process NAME Get-Process M SYNOPSIS Gets the processes that are running on the local computer. SYNTAX Get-Process [[-name] <string[]>] [<CommonParameters>] Get-Process -id <Int32[]> [<CommonParameters>] Get-Process -inputobject <Process[]> [<CommonParameters>] DETAILED DESCRIPTION The Get-Process cmdlet retrieves a process object for each process. Without parameters, Get-Process gets all of the processes on the computer, as though you typed Get-Process *. You can also identify a particular process by process name or process ID (PID), or pass a process object through the pipeline to Get-Process. For Get-Process, thedefault method is by process name. For Stop-Process, the default method is by process ID. RELATED LINKS Stop-Process REMARKS For more information, type: get-help Get-Process -detailed. For technical information, type: get-help Get-Process -full. Všimněte si podobnosti koncepce stránky s manuálovými stránkami v unixových systémech. Z výpisu zjistíme, že tento příkaz vypisuje běžící procesy, následuje popis syntaxe (tj. parametry, které lze použít, jejich pořadí a možné kombinace). V následujícím odstavci je příkaz popsán podrobněji. Zjistíme, že vlastně přistupujeme k objektům typu proces a můžeme vypsat bud všechny procesy,

71 2.5 POWERSHELL 63 nebo zadat konkrétní proces, který nás zajímá (názvem nebo jeho identifikačním číslem PID) a nebo můžeme příkazu poslat objekt typu proces přes rouru. Na konci výpisu nám příkaz poradí, jakým způsobem získat ještě podrobnější nápovědu (v podrobnější nápovědě především najdeme seznam a vysvětlení parametrů, a také ukázkové příklady). Příklad 2.36 Některé příkazy včetně parametrů jsou v PowerShellu zbytečně upovídané dlouhé, a pokud je často používáme, není od věci si pro ně vytvořit krátký alias nebo funkci. get-help get-alias get-help get-alias -examples nejdřív zjistíme, jakým způsobem se aliasy vytvářejí pro jistotu se ještě podíváme na příklady použití příkazu get-alias seznam get-childitem vytvořili jsme alias seznam, můžeme ho volně používat místo příkazu get-childitem (po uzavření okna PowerShellu však přestane existovat) Aliasy mají jednu nevýhodu reprezentují pouze řetězce, ve kterých nesmí být mezera, tedy pouze jedno slovo (k zastupovanému příkazu také nelze přidat parametry). Tedy pokud chceme vytvořit vlastní příkaz, a to takový, který zastupuje jiný příkaz včetně parametrů, vytvoříme funkci: PS C:\Users\Šárka> function seznamx Prompt se změní na >> a můžeme psát tělo funkce (jako v jazyce C, v lomených závorkách): { } get-children -force Pozor na mezery u pomlček; zatímco kolem první pomlčky žádná mezera není (get-children je vlastně souvislé klíčové slovo), před druhou pomlčkou mezera je, protože jde o vyznačení přepínače -force. Vytvořili jsme funkci, která vypisuje všechny soubory a podadresáře včetně skrytých. Vkládání funkce ukončíme jednoduše tak, že vytvoříme prázdný řádek dvakrát klepneme na klávesu Enter. Příklad 2.37 Ukážeme si pár příkazů (cmdlet) pro práci s procesy a službami: get-process vypíše seznam spuštěných procesů se základními parametry get-process firefox takto zjistíme údaje o procesu s názvem firefox, například jeho PID, výstup může vypadat třeba takto: Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName , firefox M get-process Apache* vypíše tyto údaje pouze o procesech, jejichž název začíná Apache (konkrétně pokud máme nainstalován WWW server Apache, zjistíme název jeho obslužného procesu)

72 2.5 POWERSHELL 64 get-process -pid 3632 podobně, jen je proces určen číslem PID místo názvu (to bude zřejmě jiný proces než u předchozího příkazu) get-process -pid module podobně jako předchozí, ale k procesu se zobrazí seznam modulů (dynamicky linkovaných knihoven) get-command *service* zajímá nás, jaké existují příkazy pro práci se službami (ve výpisu jeou kromě jiného nám známé programy services.exe a services.msc) get-service *workstation* nevíme, jak se jmenuje služba, která se v češtině nazývá delším jménem Pracovní stanice, tak si to zjistíme (název služby obsahuje řetězec workstation ) get-service *station where-object {$_.status -eq running } chceme službu, jejíž název končí zadaným řetězcem a zároveň běží; všimněte si syntaxe druhé části dotazu, podobá se SQL syntaxi (vpodstatě pracujeme s databází), řetězec $_ představuje konkrétní objekt, který k příkazu where-object doputoval rourou, lomené závorky jsou nutné get-process get-member zaujal nás CMDLET where-object a chtěli bychom zjistit, na které vlastnosti se můžeme ptát u objektu procesu, tímto způsobem získáme výpis všech vlastností typu objektu, který k CMDLETu get-member dojde přes rouru (nás zajímají především řádky obsahující v druhém sloupci property), výstup může obsahovat například tyto řádky: TypeName: System.Diagnostics.Process Name MemberType Definition Handles AliasProperty Handles = Handlecount Name AliasProperty Name = ProcessName CloseMainWindow Method System.Boolean CloseMainWindow() GetType Method System.Type GetType() get_basepriority Method System.Int32 get_basepriority() get_handle Method System.IntPtr get_handle() Kill Method System.Void Kill() Start Method System.Boolean Start() BasePriority Property System.Int32 BasePriority {get;} Handle Property System.IntPtr Handle {get;} HandleCount Property System.Int32 HandleCount {get;} Id Property System.Int32 Id {get;} MachineName Property System.String MachineName {get;} MainModule Property System.Diagnostics.ProcessModule MainModule {get;} ProcessName Property System.String ProcessName {get;} ProcessorAffinity Property System.IntPtr ProcessorAffinity {get;set;} Responding Property System.Boolean Responding {get;} StartTime Property System.DateTime StartTime {get;} Threads Property System.Diagnostics.ProcessThreadCollection Thre... TotalProcessorTime Property System.TimeSpan TotalProcessorTime {get;} CPU ScriptProperty System.Object CPU {get=$this.totalprocessortime... Path ScriptProperty System.Object Path {get=$this.mainmodule.filena M (výstup byl značně zkrácen) get-process svchost where-object {$_.cpu -ge 2} chceme vypsat procesy svchost, jejichž čas na procesoru je větší nebo roven 2 sekundám (vlastnost cpu jsme zjistili předchozím příkazem)

73 2.6 SKRIPTY 65 get-process where {$_.basepriority -gt 8} místo where-object můžeme použít kratší where (je to alias), zde vypisujeme procesy, jejichž priorita je vyšší než 8 get-process select-object name,handlecount,starttime,threads tímto způsobem můžeme ke každému objektu procesu, který je nalezen prvním příkazem v rouře, vypsat požadované vlastnosti (název, počet držených objektů například otevřených souborů, čas spuštění, seznam vláken procesu TID) get-process select-object name,handlecount,starttime,threads ft výstup bude prakticky stejný jako předchozí, jen jinak zformátovaný (poslední příkaz v rouře výstup zformátuje do tabulky) PowerShell nabízí zajímavé funkce pro zpracování řetězců a také se zdá být velmi silným nástrojem pro psaní skriptů. Zde se těmto vlastnostem již nebudeme věnovat, další informace najdeme například v těchto zdrojích: PowerShell Existuje jiný projekt se jménem PowerShell emulátor X11 (základ grafického prostředí pro unixové systémy), dostupný na powershell.sourceforge.net. Úkoly 1. Zjistěte, jak se na vašem počítači spouští PowerShell. Pokud není nainstalován, doinstalujte ho podle návodu v předchozím textu (pokud máte příslušná oprávnění). 2. Procvičte si příkazy pro získání nápovědy a vyzkoušejte podle možností příkazy, které jsou v příkladech 2.35, 2.36 a Zjistěte, jaké vlastnosti lze zjišt ovat u služeb (stejným způsobem, jak jsme zjistili vlastnosti procesů v příkladu 2.37) a u souborů (připomeňme si, že seznam souborů lze zobrazit CMDLE- Tem get-childitem). Některé z vlastností vypište podobně, jako jsme to udělali na konci příkladu 2.37 u procesů. C 2.6 Skripty Skripty jsou textové spustitelné soubory obsahující příkazy, pro jejichž spuštění (provedení) je zapotřebí některý další program (překladač, interpret). Jedním z typů skriptů jsou i dávkové soubory s příponou BAT (viz kapitolu Příkazový řádek), v novějších verzích Windows můžeme používat také SCF soubory (jejich použitelnost je však omezená) a modul Windows Scripting Host.

74 2.6 SKRIPTY 66 SCF soubory: Windows od verze 98 nabízejí jistou omeze- P [Shell] nou možnost psaní skriptů s příponou SCF (Shell Command Command=2 File). Z existujících je to například Zobrazit plochu.scf nebo IconFile=explorer.exe,3 explorer.scf. Máme zde možnost určit, kdo má skript interpretovat (2=Windows, 3=Internet Explorer), jak bude vypa- [Taskbar] Command=ToggleDesktop dat ikonka souboru skriptu (ICO soubor nebo odkaz na ikonu Obrázek 2.3: Obsah souboru v knihovně či spustitelném souboru) a dále co se má provést po Zobrazit plochu.scf spuštění skriptu. Windows Scripting Host (WSH): tento modul umožňuje spouštět skripty napsané v JScriptu P a VBScriptu, poskytuje také vlastní skriptovací jazyk umožňující používat i prvky ActiveX (obvykle pracujeme s objekty, také WMI objekty). Skript pomocí WSH spustíme jedním ze dvou příkazů wscript nebo cscript. Syntaxe obou příkazů je jednoduchá: wscript název_souboru_skriptu spustí soubor skriptu v prostředí Windows, používá se v Start Spustit nebo v Zástupci, bez uvedení názvu souboru skriptu se spustí jednoduchý nástroj na konfiguraci WSH, když je spuštěný, můžeme skripty spouštět jako jiné spustitelné soubory poklepáním například v Průzkumníkovi 3, cscript název_souboru_skriptu také v dávkovém souboru. spustí soubor skriptu v Příkazovém řádku, můžeme použít Mezi oběma příkazy je jeden podstatný rozdíl pokud skript spustíme pomocí wscriptu, veškerá hlášení programu se zobrazují v okýnkách, která musíme potvrzovat klepnutím na potvrzovací tlačítko. To je ovšem nemyslitelné, pokud například spouštíme skript na jiném počítači, naplánovaný na určitou hodinu (třeba takovou, ve které u počítače nikdo nesedí) nebo v dávkovém souboru. V takových případech rozhodně použijeme cscript, který případná hlášení pouze zobrazí na příkazovém řádku bez nutnosti potvrzování. V obou případech můžeme za název skriptu přidat parametry, které řídí provedení skriptu, seznam parametrů se zobrazí v nápovědě wscript /? resp. cscript /?. O WSH najdeme informace na různých stránkách na internetu, například Skripty v Perlu: Abychom mohli spouštět skripty psané v Perlu, musíme mít nainstalován modul pro jeho interpretaci, bez toho by skripty nebylo možné spustit. Modul pro Perl se jmenuje ActivePerl a je volně ke stažení na adrese (jde o MSI soubor). Obvykle musíme nastavit cestu ke spustitelnému souboru (standardně c:\perl\bin). Obrázek 2.4: Skripty při spuštění a ukončení běhu Windows Skripty definované v Zásadách skupiny: mohou zde P být určeny přihlašovací a odhlašovací skripty (pro uživatele nebo jiný objekt) a spouštěcí a ukončovací skripty (pro počítač). 3 Pokud se skript po poklepání nespustí, v zobrazeném okně Otevřít v programu provedeme přiřazení přípony skriptu programu Windows Based Scripting Host (wscript.exe), tedy tento program vybereme ze seznamu.

75 2.6 SKRIPTY 67 Mohou být psány v jakémkoliv skriptovacím jazyce, které dokáže interpretovat Windows Scripting Host (JS, VBS, BAT,... ). Až samotný skript sestavíme, otevřeme Zásady skupiny (gpedit.msc), najdeme uzel Skripty (bud ve větvi Konfigurace počítače Nastavení systému Windows, pokud se mají spouštět při spuštění či ukončení systému, a nebo ve větvi Konfigurace uživatele Nastavení systému Windows, pokud se mají spouštět při přihlášení či odhlášení konkrétního uživatele). Úkoly 1. Najděte některý SCF soubor a prohlédněte si jeho obsah (například v Poznámkovém bloku, jde o textový soubor). 2. Na stránce si prohlédněte ukázkové kódy v JScriptu. 3. Podívejte se na místo, kde bývají uvedeny přihlašovací/odhlašovací skripty uživatele a spouštěcí/ukončovací skripty pro počítač. Pokud máte dostačující přístupová oprávnění, pokuste se vytvořit skript (může to být dávkový soubor), který zobrazí uvítací frázi (třeba Hello World) a počká na stisknutí klávesy uživatelem. Tento skript pak umístěte jako přihlašovací skript (nejdřív uložte a pak v Zásadách skupiny vytvořte příslušnou zásadu). 4. Na stránce basics.htm najdete tutoriál o propojení VBScriptu a WMI. Prohlédněte si některý zde uvedený příklad. C R R

76 Kapitola 3 Řízení přístupu V této kapitole probereme technologie, na kterých je založeno řízení přístupu k objektům. Zaměříme se především na Active Directory, správu uživatelů, používání bezpečnostních zásad a správu služeb a ovladačů. 3.1 Základní pojmy Nejdřív několik pojmů: Důvěrnost (Confidentality) některá data jsou označena jako důvěrná, tj. určená pouze pro vymezený okruh uživatelů (příp. procesů). Dostupnost (Availability) uživatelům je zajištěn (bezproblémový) přístup ke všem datům, ke kterým jsou oprávněni přistupovat. Autenticita (Authenticity) Nepopiratelnost (Non-repudiation) popření původu dat. je možnost ověření původu dat. k možnosti ověření původu dat přidává vlastnost nemožnosti Integrita (Integrity) data jsou správná a úplná, nebyla pozměněna (například při transportu přes sít ), integrita dat může být narušena bud úmyslně (při transportu, malwarem apod.) nebo neúmyslně (hardwarovou nebo softwarovou chybou). Autentizace je proces ověřování přístupových oprávnění uživatele k datům (obecně k objektu). Autentizační protokol je protokol (tedy popis postupu) autentizace jakým způsobem má probíhat komunikace během autentizace, typické příklady autentizačních protokolů jsou Kerberos nebo RADIUS. SID (Security ID) je identifikátor zabezpečení, který jednoznačně (v lokální síti) identifikuje uživatele, skupinu, službu nebo počítač v síti, systém tento identifikátor přiřazuje při vytvoření uživatele (skupiny, služby, připojení počítače). Některé identifikátory SID jsou předdefinované (obvykle; nemusí tomu tak být na všech počítačích v síti). 1 P 1 Seznam obvyklých SID pro uživatele a skupiny najdeme na 68

77 3.1 ZÁKLADNÍ POJMY 69 Poznámka: V následujícím textu budeme místy využívat nástroje, které nejsou součástí stan- L dardní instalace Windows. Většinou se jedná o nástroje firmy Sysinternals, které najdete na adrese vlevo odkaz Utilities Index. Z tohoto zdroje již dobře známe například Process Explorer. Příklad 3.1 Asi nejjednodušší způsob, jak zjistit SID některého uživatele nebo skupiny, je použití programu PsGetSID z balíku programů PSTools od firmy Sysinternals. psgetsid vypíše SID počítače, například S (místo sekvence velmi pravděpodobně budou jiné číslice) psgetsid uživatel vypíše SID zadaného uživatele, například S (místo sekvence taktéž budou jiné číslice, ale stejné, jaké bychom dostali ve výstupu předchozího příkazu) psgetsid administrator vypíše SID administrátora (lokálního počítače), například S psgetsid guest vypíše SID účtu guest (host), například S (je zajímavé, že účty Administrator a Guest mají téměř stejné SID, liší se jen v poslední číslici) psgetsid everyone SID skupiny everyone, tj. S psgetsid local service SID účtu Local Service, tj. S , jedná se o účet pro služby pracující na počítači lokálně bez nutnosti autorizovaného přístupu na sít, profil je v Documents and Settings\LocalService psgetsid network service SID účtu Network Service, tj. S , pod tímto účtem pracují sít ové služby, jejich profil je v Documents and Settings\NetworkService Účet Local System má SID S , ale příkazem psgetsid ho nezjistíme (SID na tento účet není veřejně namapován). Namapování není potřeba kromě jiného ani proto, že účet Local System nemá přiřazen žádný profil (také to lze chápat tak, že SID ve skutečnosti může souviset s profilem účtu). Příkaz psgetsid může být použit také naopak, pro zjištění účtu určeného číslem SID, lze ho také využívat v síti (pracujeme s účty na vzdáleném počítači v síti). Pokračujeme v pojmech: LSA (Local Security Authority, Místní úřad zabezpečení) je komponenta Windows (jedná se o soubor lsass.exe), která zajišt uje autorizaci (například ověřuje heslo při přihlášení uživatele nebo ověřuje přístupová oprávnění při přístupu k některému objektu). ACE (Access Control Entry) je položka řízení přístupu, je to vlastnost, kterou lze uživateli (procesu) povolit nebo zakázat (například číst, zapisovat, otevřít složku, atd.). P

78 3.1 ZÁKLADNÍ POJMY 70 seznam řízení přístupu, je to seznam položek ACE (přidělená opráv- ACL (Access Control List) nění). DACL (Discretionary ACL) volitelný seznam řízení přístupu, který má každý objekt zvlášt pro každého uživatele nebo skupinu, pro které byla definována oprávnění k danému objektu (uživatelé a skupiny jsou zde určeni svými SID); v praxi se často místo zkratky DACL píše jednoduše ACL, tyto pojmy jsou do určité míry zaměnitelné. SACL (System Access Control List) podobně jako DACL (také seznam položek zvlášt pro různé uživatele a skupiny), ale určuje, co se má u daného objektu pro konkrétního uživatele či člena skupiny auditovat (zaznamenávat). Popisovač zabezpečení (Security Descriptor, bezpečnostní deskriptor) tuto strukturu má každý objekt, obsahuje všechny údaje důležité při přidělování oprávnění (SID vlastníka, SID skupiny, seznamy DACL, seznamy SACL, atd.), používá se při kontrole každého pokusu o přístup k danému objektu. Ve Windows (obvykle na diskovém oddílu se souborovým systémem NTFS) má každý objekt svůj popisovač zabezpečení, ve kterém je určen vlastník objektu, jeho skupina a přidružená přístupová oprávnění (DACL seznamy) pro různé uživatele a skupiny. Zjednodušenou strukturu deskriptoru zabezpečení vidíme na obrázku 3.1. Deskriptor zabezpečení SID vlastníka objektu SID skupiny objektu seznamy DACL (SID uživ1 ; oprávnění uživ1) (SID uživ2 ; oprávnění uživ2). seznamy SACL. Obrázek 3.1: Zjednodušená struktura deskriptoru zabezpečení některého objektu Se seznamy DACL (ACL) lze manipulovat také v grafickém rozhraní, a to ve vlastnostech objektu (souboru nebo jakéhokoliv jiného objektu), karta Zabezpečení. Pokud je zapnuto Zjednodušené sdílení souborů (v Možnostech složky), máme silně omezenou možnost zasahovat do ACL souborů, proto alespoň pro účely procvičení je dobré tuto vlastnost vypnout. Přihlašovací údaje jsou ověřovány moduly SAM (Security Accounts Manager) a LSASS, pokud jde o lokální účet, službou Active Directory na řadiči domény, pokud jde o doménový účet v síti. SAM udržuje na počítači místní databázi zabezpečení obsahující údaje o zásadách pro účty, a to v souboru secedit.sdb ve složce...\windows\security\database.

79 3.2 OBJEKTOVÝ MODEL VE WINDOWS ŘADY NT 71 Úkoly 1. Procvičte si to, co znáte z předchozího semestru najděte v grafickém rozhraní (některém správci souborů, případně v Průzkumníku) ACL složky Program Files. 2. Pokuste se zjistit své SID. V registru zjistěte, čí SID jsou v klíči HKU. C 3.2 Objektový model ve Windows řady NT Objekty Windows NT nejsou čistě objektovým operačním systémem, ale používají objekty pro reprezentaci systémových zdrojů (pozor, není to totéž co objekty v objektovém programování, zde jsou vlastnosti objektů pevně stanoveny). Systému to umožňuje pracovat se všemi objekty jednotným způsobem včetně zajištění bezpečnosti. Z pohledu jádra systému se objekty dělí do dvou kategorií: Objekty jádra jsou jednoduché nízkoúrovnové objekty viditelné pouze v privilegovaném režimu (jenom pro jádro), tj. procesy běžící v uživatelském režimu s těmito objekty nemohou přímo pracovat. Objekty exekutivy (řídicího programu jádra) jsou tvořeny obvykle jedním nebo více objekty jádra, dalšími daty a rozhraním (přístupovými metodami), např.: proces a podproces (vlákno procesu), událost, párová událost (párová pro meziprocesovou komunikaci), job (úloha) = skupina procesů sdílejících společné kvóty (stanovení maximálního využívání určitých prostředků), lze s nimi pracovat jako s celkem (například skupina úzce spolupracujících procesů), sekce (úsek) = oblast sdílené paměti, soubor (přesněji struktura určující otevřený soubor), port (přístupový bod pro volání procedur jiných procesů, umožňuje informovat jiný proces o dokončení I/O operace), semafor (obecný semafor počitadlo pro regulaci počtu procesů používajících určitý prostředek), mutex (pro realizaci vzájemného vyloučení procesů v kritických sekcích, vnitřně se nazývá mutant), adresář objektů (jakýsi kontejner), klíč registru, ukazatel na jiný objekt (symbolický odkaz, Symbolic Link), typ objektu, atd. Všimněte si, že v seznamu objektů není uživatel ani skupina. Procesy a systém ke svým vlastním objektům obvykle přistupují přes manipulátor (handle), který získají při vytvoření objektu (obvykle se jedná o návratovou hodnotu příslušné API funkce). Jde o nepřímý ukazatel, který (zjednodušeně) znamená index v tabulce manipulátorů pro daný proces. P P

80 3.2 OBJEKTOVÝ MODEL VE WINDOWS ŘADY NT 72 Tento manipulátor (zachycený do vhodné proměnné) procesy mohou používat jako parametr API funkcí objekt zpracovávajících. K objektu lze také přistupovat přes jeho název (pokud ho známe), ale je to pomalejší než přes manipulátor (systém pokaždé překládá název na manipulátor). Jádro (včetně exekutivy) může k objektům přistupovat přímo (bez manipulátoru či názvu). Hlavička (záhlaví) objektu obsahuje všechny důležité informace týkající se objektu, jako je jméno objektu (pokud ho má přiděleno; jméno má smysl pouze u objektů sdílených, proces nebo systém k vlastním objektům může přistupovat přes manipulátor), adresář objektu v hierarchické struktuře objektů, popisovač zabezpečení s uvedením vlastníka, skupiny a přístupových oprávnění, režim, ve kterém je objekt používán (privilegovaný nebo uživatelský), ukazatel na objekt typu (objekty určitého typu mají některé vlastnosti společné, nemusí být ukládány u každého objektu zvlášt, tedy máme speciální objekty, které shrnují společné vlastnosti, které dědí jejich potomci), atd. P Každý objekt má svůj bázový typ a dále své atributy a metody. Například atributem objektu typu proces může být PID procesu, jeho priorita, ukazatel na bezpečnostní deskriptor, atd., k jeho metodám patří například metody open a close. Obrázek 3.2: Objekty v aplikaci WinObj

81 3.2 OBJEKTOVÝ MODEL VE WINDOWS ŘADY NT 73 K objektům se lze dostat několika způsoby. Můžeme použít aplikaci WinObj 2 od firmy Sysinternals (obrázek 3.2). Dostaneme se pouze k obecným základním vlastnostem objektů (ne všech, například u objektů zařízení to není možné), například počtu manipulátorů (handle) na tento objekt a přístupových oprávnění. Dále mnohé aplikace pracující s procesy dokážou zobrazit seznam manipulátorů vlastněných procesem. Například v Process Exploreru se k těmto údajům dostaneme tak, že ve spodním podokně zobrazíme manipulátory (View Lower Pane View Handles), pokud ovšem toto podokno máme zobrazeno. Od firmy Sysinternals také pochází program handle.exe, 3 který je přímo určen pro různé úlohy související s manipulátory. Mnohem sofistikovanější a úplnější přístup k objektům nabízejí programy pro ladění jádra, například aplikace WinDbg (tyto postupy najdeme v příloze). Správa objektů především spravuje prostor jmen objektů (také obor názvů) s názvy všech pojmenovaných objektů, přes který jsou objekty přístupné v různých procesech, tento prostor je globální a viditelný pro všechny procesy. Objekty, které nemají být viditelné pro jiné procesy, zde nesmí být, a proto ani nemají jméno. Objekty jsou organizovány v hierarchické struktuře v paměti systému, v tzv. adresářové struktuře objektů (adresář objektů je také objekt). Tuto strukturu vidíme (alespoň částečně) na obrázku 3.2 v aplikaci WinObj. Strukturu objektů udržuje komponenta nazvaná Správce objektů (Object Manager). Pouze objekty z adresářů \BaseNamedObjects a \GLOBAL?? jsou viditelné procesům v uživatelském režimu. První z nich obsahuje objekty událostí, objekty synchronizačních mechanismů (mutexy a semafory), časovače a objekty sdílené paměti, tedy vše potřebné ke komunikaci procesů navzájem nebo procesů s jádrem. Druhý z nich obsahuje objekty odkazů na zařízení (většina z nich odkazuje na objekty zařízení v adresáři \Devices) s poněkud srozumitelnějšími názvy než objekty, na které odkazují (také se označují jako Dos Devices). Každý pojmenovaný (viditelný) objekt je zařazen ve stromové struktuře objektů a je adresován cestou od kořene této struktury (kořen je označen \). Například \ObjectTypes\Process je objekt typu typ objektu (určuje typ objektu proces), \Registry\System\CurrentControlSet je objekt typu klíč registru, a to HKLM/System/CurrentControlSet, \Device\HardDiskVolume1 je objekt reprezentující první oddíl na prvním pevném disku (je typu Device, tedy zařízení), \Device\HardDisk0\Partition1 je odkaz (symlink) na předchozí, tedy nepřímo odkazuje na první oddíl na prvním pevném disku, \Device\HardDisk0\Partition0 je odkaz na objekt \Device\HardDisk0\DR0, který reprezentuje MBR sektor na prvním pevném disku. 2 WinObj najdeme na 3 Všechny nástroje firmy Sysinternals získáme přes stránku jsme přesměrováni na stránky Microsoftu. P

82 3.2 OBJEKTOVÝ MODEL VE WINDOWS ŘADY NT 74 Příklad 3.2 Vyzkoušíme program handle.exe od Sysinternals: Zadáme handle -p winlogon.exe Získáme seznam manipulátorů vlastněných zadaným procesem (přepínač -p umožňuje zadat název nebo PID procesu), výstup (zkrácený): Handle v3.42 Copyright (C) Mark Russinovich Sysinternals winlogon.exe pid: 668 NT AUTHORITY\SYSTEM C: File (RW-) C:\WINDOWS\system32 D8: File (RW-) C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Cont rols_6595b64144ccf1df_ _x-ww_35d4ce83 164: Section \BaseNamedObjects\ShimSharedMemory 1EC: File (RW-) C:\WINDOWS\system32 1F0: File (RW-) C:\WINDOWS\system32\dllcache 1F4: File (RW-) C:\WINDOWS\AppPatch 208: Section \BaseNamedObjects\NWGINA_LOGON_STATE : Section \BaseNamedObjects\mmGlobalPnpInfo 88C: Section \BaseNamedObjects\WDMAUD_Callbacks Jak vidíme, u souboru je vždy souhrn požadavků na typ přístupu (většinou pro čtení a zápis). Každý řádek začíná číslem manipulátoru (hexadecimálně) a jeho typem, následuje jméno. Záhlaví s názvem a autorem programu handle již nebudeme do dalších výpisů zařazovat, i když ve skutečnosti se v nich objevuje. Zadáme handle -p 3092 (místo názvu procesu zadáme jeho PID, toto PID je právě přiřazeno procesu notepad.exe), výstup (opět zkrácený): notepad.exe pid: 3092 SARKA\Uzivatel C: File (RW-) C:\ 10: File (RW-) C:\WINDOWS\WinSxS\x86\_Microsoft.Windows.Common-Con trols\_6595b64144ccf1df\_ \_x-ww\_35d4ce83... A8: Section \BaseNamedObjects\MSCTF.Shared.SFM.IKL Oproti předchozímu výpisu je odlišnost také ve vypsaném uživateli (na prvním řádku), vlastníkem je běžný uživatel. Zadáme handle -p cmd.exe Předpokládejme, že máme spuštěny dvě instance příkazového řádku (dvě okna), v jednom z nich právě zpracováváme jeden textový soubor. Protože jsme zadali název, který přísluší více procesům, vypíšou se informace o obou. cmd.exe pid: 4088 SARKA\Uzivatel C: File (RW-) C:\Program Files\ProcessExplorer 6C: File (RW-) C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Con trols_6595b64144ccf1df_ _x-ww_35d4ce83 8C: Section \BaseNamedObjects\ShimSharedMemory 98: File (R--) D:\pokus.txt cmd.exe pid: 3920 SARKA\Uzivatel M M M

83 3.2 OBJEKTOVÝ MODEL VE WINDOWS ŘADY NT 75 C: File (RW-) C:\Program Files\ProcessExplorer 6C: File (RW-) C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Con trols_6595b64144ccf1df_ _x-ww_35d4ce83 8C: Section \BaseNamedObjects\ShimSharedMemory Všimněte si, že ve výpisech jsou bud objekty typu soubor (což jsou typicky uživatelské objekty) a nebo objekty z adresáře \BaseNamedObjects. Pokud chceme opravdu všechny objekty, které s procesem souvisejí, musíme zadat parametr -a. Zadáme tedy handle -a -p cmd.exe. Zkrácený výstup: cmd.exe pid: 4088 SARKA\Uzivatel 4: KeyedEvent \KernelObjects\CritSecOutOfMemoryEvent 8: Directory \KnownDlls C: File (RW-) C:\Program Files\ProcessExplorer 10: Event 14: Directory \Windows 18: Port 1C: WindowStation \Windows\WindowStations\WinSta0 20: Event 24: WindowStation \Windows\WindowStations\WinSta0 28: Directory \BaseNamedObjects 2C: Mutant \BaseNamedObjects\SHIMLIB\_LOG\_MUTEX 30: Desktop \Default 34: Semaphore... 7C: Key HKLM\SYSTEM\ControlSet001\Control\Nls\Language Groups 88: Mutant \BaseNamedObjects\ShimCacheMutex 8C: Section \BaseNamedObjects\ShimSharedMemory 98: File (R--) D:\pokus.txt Ted jsou ve výpisu opravdu všechny objekty, které se podílejí na běhu procesu, včetně objektů jádra (mnohé z objektů nejsou pojmenované). Pokud nás zajímá jen počet objektů jednotlivých typů (a máme spuštěný Poznámkový blok), zadáme například handle -s -p notepad.exe, výstup: Handle type summary: Desktop : 1 Directory : 3 Event : 6 File : 4 Key : 4 KeyedEvent : 1 Mutant : 8 Port : 2 Section : 4 Semaphore : 5 WindowStation : 2 Total handles: 40 M M Ovšem nesmíme zapomenout na to, že takto se počítají pouze manipulátory, ale dva manipulátory mohou odkazovat na tentýž objekt (například u tohoto výpisu dva manipulátory typu WindowStation ve skutečnosti odkazují na tutéž stanici oken).

84 3.2 OBJEKTOVÝ MODEL VE WINDOWS ŘADY NT 76 Pokud chceme vědět, který proces ve své tabulce obsahuje handle konkrétního (pojmenovaného) objektu, zadáme například handle -a pagefile.sys (zjišt ujeme, kdo pracuje s tímto souborem), výstup: System pid: 4 5AC: C:\pagefile.sys Na tentýž objekt může odkazovat více handlů v různých procesech, například pokud chceme vědět, které procesy pracují s naším podregistrem (větví registru začínající HKCU, zadáme handle -a hkcu. Výpis bývá většinou velmi dlouhý, je vhodné ho přesměrovat do souboru (mezipamět příkazového řádku na delší výpisy nestačí). M Program Handle (nebo jiný program umožňující pracovat s manipulátory) se může hodit také například tehdy, když chcete pracovat s některým souborem (či jiným objektem), ale tento soubor je uzamknut (vlastněn) jiným procesem. Příklad 3.3 Ukážeme si způsob zjištění vlastníka souboru a jeho uvolnění. Předpokládejme, že někdo má v programu MS Word otevřen soubor pokus.rtf (na typu souboru ani moc nezáleží), může být otevřen i někým ze sítě. Chceme s tímto souborem provést některou operaci, která je programem blokována. Nejdřív zjistíme potřebné informace: handle -a pokus.rtf Výpis: WINWORD.EXE pid: C8: D:\pokus.rtf Z tohoto výpisu potřebujeme dva číselné údaje PID procesu a číslo manipulátoru objektu. Obojí zadáme do následujícího příkazu: handle -c 3C8 -p 3960 Budeme dotázáni, zda opravdu chceme handle uvolnit, pokud souhlasíme, bude uvolněn a při dotazu na vlastníka tohoto souboru se objeví pouze hláška No matching handles found.. Postup má jeden háček pokud se nestihneme včas stát vlastníkem objektu, tak v okamžiku, kdy ve Wordu znovu někdo začne se souborem pracovat (bez uzavření a znovuotevření), Word znovu soubor uzurpuje (ale číslo manipulátoru už bude jiné). Z hlediska uživatele pracujícího se souborem ve Wordu se prakticky nic neprojeví. M Předchozí postup je užitečný například tehdy, když aplikace z nějakého důvodu při svém ukončení neuvolní své manipulátory (například při nekorektním ukončení nebo zamrzne ). Úkoly 1. Stáhněte si a vyzkoušejte aplikaci WinObj. Projděte si názvy objektů související s pevnými disky a souborovými systémy, podívejte se na objekty jádra. Projděte si adresáře pojmenovaných objektů, které jsou viditelné i v uživatelském režimu. C

85 3.2 OBJEKTOVÝ MODEL VE WINDOWS ŘADY NT V aplikaci Process Explorer zapněte zobrazení spodního podokna a nastavte v něm zobrazování manipulátorů (handlů). V podokně pro manipulátory zobrazte sloupec File Share Flags. 3. Podívejte se, jaké objekty vlastní procesy system, smss.exe a některé další. U objektů typu File (soubor) si všimněte příznaků (sloupec Share Flags). Zjistěte, který z těchto procesů je vlastníkem hlavního adresáře objektů pro registr (\REGISTRY). 4. Pokud máte možnost, vyzkoušejte program handle (podle příkladů 3.2 a 3.3) GDI objekty a stanice oken Z hlediska určení můžeme objekty rozdělit do tří skupin objekty jádra, GDI objekty a uživatelské objekty. GDI objekty souvisejí s grafickým rozhraním. Typickými zástupci jsou font, bitmapa, štětec, pero, paleta, oblast na obrazovce, grafická metadata. GDI objekty nejsou nativně chráněny tak jako objekty jádra. Jsou vždy soukromé pro konkrétní proces (procesy nemohou používat GDI objekty jiných procesů) a navíc k jednomu GDI objektu může existovat vždy jen jeden manipulátor. Protože GDI objekty (a další objekty na nich založené) obecně zabírají hodně systémových zdrojů (hlavně paměti), je stanovena horní hranice pro jejich počet. Tato hranice je odlišná u různých verzí Windows a navíc může být změněna, najdeme ji v registru v klíči HKLM/SOFTWARE/Microsoft/Windows NT/CurrentVersion/WindowsGDIProcessHandleQuota. Stanice oken (Window Stations) jsou objekty jádra určené k dodatečné ochraně uživatelských objektů (GDI objekty tuto ochranu nepotřebují, díky výše uvedeným omezením). Každá stanice oken má kromě jiného přiřazenu jednu schránku a jeden nebo více objektů typu plocha (desktop). Stanice oken najdeme v adresáři objektů \Windows\WindowStations, jehož obsah vidíme na obrázku 3.3. Obrázek 3.3: Objekty stanic oken Z hlediska uživatele je nejdůležitější stanicí oken objekt WinSta0, která jako jediná dokáže zobrazit uživatelské prostředí a zajišt ovat komunikaci s uživatelem, je určena pro interaktivní procesy a služby (většina služeb je neinteraktivní, ale některé vyžadují možnost interakce s uživatelem a tedy zařazení do WinSta0). Při vytvoření interaktivního procesu je tomuto procesu automaticky vytvořeno okno na výchozí ploše stanice WinSta0 a proces může komunikovat s jinými procesy přes schránku stanice. Dále existuje ještě několik stanic oken pojmenovaných Service-0x0- hex číslo $, které jsou určeny pro systémové neinteraktivní procesy nepoužívající okno. Hexadecimální číslo v názvu je identifikátor přihlašovací relace. Jsou určeny pro neinteraktivní služby a jiné procesy se speciálními přístupovými oprávněními, například Service-0x0-3e7$ je stanice oken pro neinteraktivní systé- P P

86 3.2 OBJEKTOVÝ MODEL VE WINDOWS ŘADY NT 78 mové procesy běžící pod účtem s vysokými přístupovými oprávněními na lokálním počítači (účet Local System). Pokud služba běží pod konkrétním uživatelským účtem (tj. žádným ze speciálních účtů pro služby, o kterých se budeme učit dále v této kapitole), její proces je připojen do stanice oken, jejíž název je částečně odvozen z SID uživatelského účtu, pod kterým běží (horní část SID se použije jako hexadecimální číslo v názvu, například Service-0x0-63a8f$). Je zřejmé, že taková služba nemůže být interaktivní (protože není napojena na stanici oken WinSta0). V seznamu stanic oken se může objevit SAWinSta. Tato stanice má poněkud zvláštní postavení (v dokumentaci ji často ani nenajdeme). Je určena pro procesy (lépe řečeno služby), které byly spuštěny ještě dřív, než byly spuštěny všechny moduly správy procesů. Počet GDI objektů a stanic oken je možné v Process Exploreru zobrazit jako další sloupec (klepneme pravým tlačítkem myši na záhlaví kteréhokoliv sloupce, zvolíme Select Columns a na záložce Process Memory zaškrtneme volby pro tyto objekty). Seznam těchto objektů je ve spodním podokně, pokud máme nastaveno zobrazování manipulátorů (handle). Také v tomto podokně můžeme vybírat zobrazené sloupce (v kontextovém menu některého sloupce zvolíme Select Columns. Příklad 3.4 Výstup příkazu handle -a windowstations\winsta0 je následující (zkrácený, bez záhlaví): csrss.exe pid: 654 F8: \Windows\WindowStations\WinSta0 csrss.exe pid: C: \Windows\WindowStations\WinSta0 csrss.exe pid: 654 3FC: \Windows\WindowStations\WinSta0 winlogon.exe pid: 672 B0: \Windows\WindowStations\WinSta0 winlogon.exe pid: 672 B8: \Windows\WindowStations\WinSta0... thunderbird.exe pid: C: \Windows\WindowStations\WinSta0 thunderbird.exe pid: : \Windows\WindowStations\WinSta0 FreeCommander.exe pid: C: \Windows\WindowStations\WinSta0 FreeCommander.exe pid: : \Windows\WindowStations\WinSta0 cmd.exe pid: C: \Windows\WindowStations\WinSta0 cmd.exe pid: : \Windows\WindowStations\WinSta0 handle.exe pid: E0: \Windows\WindowStations\WinSta0 handle.exe pid: F4: \Windows\WindowStations\WinSta0 M Získali jsme seznam procesů, které jsou napojeny do stanice oken WinSta0 (mohli jsme zadat jen winsta0, ale tento podřetězec se vyskytuje v názvech některých dalších objektů). Podobně bychom zjistili seznam procesů napojených do kterékoliv jiné stanice oken Model COM COM (Component Object Model) je specifikace určující formu, vlastnosti a způsoby přístupu k objektům (není to programovací jazyk). Tento model byl navržen, aby bylo možné vytváření binárních (tj. s přeloženým kódem) komponent (to jsou ty cílové objekty) napsaných v libovolném jazyce pro P

87 3.2 OBJEKTOVÝ MODEL VE WINDOWS ŘADY NT 79 využití opět v kterémkoliv programovacím jazyce. Můžeme říci, že jde o specifikaci binárního rozhraní objektových komponent přístupného nejen v rámci jednoho procesu, ale i v jiných procesech, než ve kterém běží. Účelem je také umožnění relativně snadné komunikace mezi procesy. Každá komponenta má definováno nejméně jedno rozhraní (interface), které určuje její metody. Vnitřní datové struktury komponenty nejsou přístupné, proto nedochází k problémům běžným u klasických dynamických knihoven. Narozdíl od běžných objektově orientovaných jazyků (v nichž jsou metody součástí objektu) je rozhraní vlastně třídou a objekt (komponenta) je třída odvozená od některého rozhraní, která přidává konkrétní hodnoty vnitřních dat (jedna komponenta může implementovat i více než jedno rozhraní). Přístupnost metod definovaných rozhraním je fyzicky řešena jako ukazatel na tabulku virtuálních funkcí, která obsahuje ukazatele na konkrétní implementace metod dané komponenty. Všechna rozhraní jsou potomky (v rámci dědičnosti) rozhraní iunknown (názvy rozhraní tradičně začínají písmenem i ). rozhraní iunknown. rozhraní třída irozhra TřídaA tabulka virtuálních funkcí virtuální funkce fce1 fce2 fce3 Obrázek 3.4: Vztah tříd a rozhraní v modelu COM Komponenty (třídy) jsou identifikovány podle čísla CLSID (Class ID), které jsme často viděli například v registru. CLSID je vlastně typ označení odpovídající označením, která souhrnně nazýváme GUID (Globally Unique ID). Existuje tedy několik typů GUID pokud se jedná o identifikaci třídy, je to CLSID, pokud identifikujeme rozhraní, je to IID (Interface ID), jestliže identifikujeme knihovnu, je to LIBID (Library ID), apod. Aby GUID bylo opravdu unikátní (jednoznačné), musí být vygenerováno programem pro tento účel určeným (můžeme stanovit nějaké GUID i ručně, ale nemáme zaručeno, že například u zákazníka takové GUID neexistuje. Programátoři obvykle používají program Guidgen.exe (tento nebo jiný podobný program bývá součástí běžných programovacích prostředí). Hodně systémových funkcí je implementováno jako rozhraní COM, na této technologii jsou založeny technologie OLE, OCX, ActiveX a částečně.net Framework. Také z ní vychází rozhraní WMI, kterému se budeme věnovat ke konci této kapitoly. Definice tříd (typů) se vytváří v jazyce MIDL (Microsoft Interface Definition Language) a dál se překládá do konkrétního jazyka, ve kterém programujeme aplikace. COM lze programovat v mnoha jazycích (je důležité, aby jazyk podporoval ukazatele a aby byl objektový). Pro jazyk musí existovat kompilátor (snad spíše preprocesor) jazyka MIDL. Většinou je jazyk MIDL před programátorem skryt programovacím prostředím. Programujeme obvykle v jazycích C++, Delphi, Visual Basic, P

88 3.2 OBJEKTOVÝ MODEL VE WINDOWS ŘADY NT 80 C# (a dalších.net jazycích), asi nejobvyklejší programovací prostředí pro COM je Visual Studio (resp. Visual Studio.NET). Velmi důležitou výhodou technologie COM je univerzálnost (COM komponenty lze použít prakticky v jakémkoliv moderním jazyce i po jejich přeložení, je definováno jejich binární rozhraní) a dále vlastní správa paměti (obvykle se nemusíme starat o uvolnění alokované paměti). Tento model ale má také nevýhody, a to komplikovanost návrhu a používání, problémy s bezpečností při programování internetových aplikací (komponenty mají sice svá data skrytá, ale samy mohou volně přistupovat všude tam, kam má přístup proces, v jehož kontextu běží), atd. Nejen z důvodu těchto nevýhod bylo navrženo (a používá se) několik rozšíření: COM+ je rozšíření původního COM o nové vlastnosti, například byl vylepšen systém přístupových oprávnění (oprávnění založená na rolích) a byla přidána podpora COM+ Events (událostí, které lze využívat mezi procesy), DCOM (Distributed COM) je rozšíření možnosti komunikace mezi objekty i na různých počítačích (podpora distribuovaných aplikací), toto rozšíření bylo původně součástí COM+. Ve Windows se pro konfiguraci DCOM používá nástroj Konfigurace modelu DCOM, který spustíme souborem dcomcnfg.exe (je pravděpodobné, že po zadání tohoto příkazu obdržíme několik hlášení typu CLSID... není zaznamenán v registru. Chcete ji zaznamenat?. Všechna vystornujeme (klepneme na Ne). Ve Windows od verze Vista budeme potřebovat vyšší přístupová oprávnění. V nástroji Konfigurace modelu DCOM (obrázek 3.5 vlevo) máme seznam aplikací DCOM (dostaneme se k jejich vlastnostem (tentýž obrázek vpravo). Na záložce Výchozí vlastnosti můžeme povolit nebo zakázat používání DCOM a stanovit, zda a jak se má provádět kontrola přístupových oprávnění. Na záložce Výchozí zabezpečení nastavujeme výchozí přístupová, spouštěcí a konfigurační P Obrázek 3.5: Nástroj Konfigurace modelu DCOM

89 3.2 OBJEKTOVÝ MODEL VE WINDOWS ŘADY NT 81 oprávnění. Na záložce Výchozí protokoly lze stanovit a případně i konfigurovat (u TCP/IP) protokoly používané pro komunikaci mezi komponentami (také po síti). Všechny tyto vlastnosti můžeme také konfigurovat zvlášt pro jednotlivé aplikace v jejich vlastnostech. Obrázek 3.6: Nástroj Služba komponent Dalším nástrojem pro konfiguraci, tentokrát modelu COM+, je Služba komponent (Component Services, soubor konzola comexp.msc) dostupná v Nástrojích pro správu. Rozhraní vidíme na obrázku 3.6. V konzole najdeme podrobné informace o COM aplikacích a jejich komponentách. Můžeme zde instalovat COM aplikace (také na ostatních počítačích v síti) a konfigurovat je i jejich komponenty (až na úroveň metod objektů). Zvláště v konzole běžící na serveru si dáváme záležet na konfiguraci zabezpečení. K vlastnostem aplikací, komponent a dalších vnořených položek se dostaneme přes kontextové menu položky, v něm zvolíme Vlastnosti (viz obrázek 3.7). Komponenty najdeme i v registru. Třídy P jsou v klíči HKCR/CLSID (v podklíčích nazvaných podle jejich CLSID) a rozhraní komponent v HKCR/interface (v podklíčích nazvaných podle Obrázek 3.7: Vlastnosti komponenty jejich IID). V obou případech vždy najdeme v položce (Výchozí) název třídy (resp. rozhraní). V podklíčích

90 3.2 OBJEKTOVÝ MODEL VE WINDOWS ŘADY NT 82 jsou pak další informace. Ovšem víme, že klíč HKCR je pouze odkazem jinam, tedy ve skutečnosti se nacházejí v klíči HKLM. Informace o programování COM najdeme na více různých stránkách na internetu, například na Speciálním typem COM objektů jsou Automation Objects, implementace potomků rozhraní idispatch (to znamená, že Automation Server je COM komponenta, která implementuje rozhraní idispatch). Původně byly nazývány OLE Automation, ale nejsou používány pouze v technologii OLE. Účelem používání Automation je zjednodušení přístupu ke komponentě. Rozhraní idispatch umožňuje zjistit metody nabízené komponentou bez nutnosti vyhledávání přes tabulku virtuálních metod. Jsou určeny k použití ve skriptovacích jazycích pod Windows (zvláště založených na Visual Basicu). Aplikace (Automation Server) může nabízet (exportovat) svůj Automation Object ke sdílení, a jiná aplikace nazvaná Automation Controller (klient), s tímto objektem může manipulovat. Automation Objects s vizuálním rozhraním, které vždy běží uvnitř některé aplikace, nazýváme ActiveX Controls (ovládací prvky ActiveX) a manipulující aplikace je ActiveX Client. Typické použití je při distribuovaném spouštění drobných aplikací či prvků grafického rozhraní (to jsou právě ovládací prvky ActiveX) ze serveru na klientských počítačích v síti. Prvky ActiveX jsou tedy Automation objects, které kromě rozhraní idispatch implementují ještě některá další rozhraní související právě s grafickým rozhraním komponenty. Zkratka ADO znamená ActiveX Data Objects, technologie ADO byla původně založena na prvcích ActiveX (podobně ASP Active Server Pages). Další známý typ objektů jsou OLE objekty, implementující rozhraní ioleobject. Konkrétní rozhraní implementované některým OLE objektem se nazývá OLE kontejner. Úkoly 1. Podle svých možností si projděte nástroj Konfigurace modelu DCOM a konzolu Služba komponent. 2. V klíči HKCR/icmfile/shellex/ContextMenuHandlers zkopírujte název podklíče obsahující CLSID (na klíči zobrazte kontextové menu a vyberte Zkopírovat název klíče). Pak se pokuste v klíči HKCR/CLSID najít podklíč se stejným názvem a zjistěte, jaké jsou v jeho podklíči položky. Podobně můžete vyhledávat i další klíče nazvané podle CLSID souvisejících tříd komponent (nebo IID rozhraní). 3. Najděte v registru rozhraní IUnknown a zjistěte jeho IID. P P C NET Technologie.NET vznikla roku 2000, používá se od roku 2001/02. Je považována za nástupce technologie COM. Jedná se o standard pro běhové prostředí (ekvivalent podsystému ve Windows, ale v obecnějším smyslu slova) podobně jako například Java, s vlastní správou paměti. Je definováno jakési rozhraní, které (výlučně) slouží ke komunikaci.net aplikace se systémem. Podobně jako v Javě,.NET aplikace jsou překládány do bytecode (mezikódu), který je nezávislý na softwarové platformě (operačním P

91 3.3 ŘÍZENÍ PŘÍSTUPU A SPRÁVA UŽIVATELŮ 83 systému) a teprve při spuštění aplikace dochází k překladu bytecode do kódu specifického pro daný systém (aplikace zcela přeložená pro běh v konkrétním systému se nazývá assembly). S touto technologií se běžně setkáváme od Windows XP SP2 a Server 2003 (do Windows 2000 a XP bez SP2 ji lze doinstalovat) pod názvem.net Framework, od verze Vista je dokonce velmi úzce spojena s grafickým rozhraním systému (nový podsystém WinFX pro.net aplikace, pod ním běží například PowerShell)..NET technologie je prezentována jako multiplatformní, tedy dostupná pro kterýkoliv operační systém, i když ze začátku tím kterýkoliv byl míněn kterýkoliv systém typu Windows. Dnes již existují porty pro další operační systémy. Přímo na MSDN 4 jsou už nějakou dobu dostupné porty pro FreeBSD a MacOS X, na internetu je několik řešení pro Linux (MONO, dotgnu Portable.NET). Programujeme v tzv..net jazycích, což je především C#, ale také Visual Basic.NET, Delphi.NET, J#, IronPython, IronRuby, atd. Od.NET jsou odvozeny technologie ADO.NET (potomek starší technologie ADO, pro přístup k databázím) a ASP.NET (pro programování webových aplikací). Ve Windows můžeme prostředí.net Framework konfigurovat v snap-in modulu.net Framework Configuration. Konzolu s tímto snap-in modulem vytvoříme snadno spustíme MMC (mmc.exe) a běžným způsobem přidáme snap-in modul. Fyzicky se jedná o soubor (konzoli) mscorcfg.msc (je zanořen ve složce...\windows\microsoft.net\framework\verze). Tento nástroj používáme především k řízení prostředí, ve kterém běží.net aplikace (assemblies), například můžeme zde nastavovat bezpečnostní zóny, ve kterých běží aplikace s různými oprávněními. Seznam všech nástrojů od Microsoftu pro práci s.net je na Řízení přístupu a správa uživatelů Uživatelské profily a uživatelské účty Uživatelský profil (User Profile) ve Windows je souhrn prostředků přidělených uživateli a nasta- P vení systému (většinou prostředí) typických pro tohoto uživatele. Obvykle zde bývá řazen datový prostor přidělený uživateli (standardně složka Dokumenty) a dále nastavení plochy, nabídky Start, individuálních položek kontextového menu Nový a Odeslat, Cookies, apod. Celý uživatelský profil je ve Windows řady NT načten ve složce Documents and Settings (od verze Vista Users), v podsložce každého uživatele, ve Windows s DOS jádrem je to bud systémová složka (část je přímo na systémovém disku) a nebo složka Profiles (pokud je nadefinován více než jeden uživatelský profil). Uživatelský účet (User Account) je fyzicky implementován v registru (narozdíl od profilu, který P je vlastně adresářem/složkou), je to záznam obsahující převážně bezpečnostní informace určující konkrétního uživatele v operačním systému. Tyto informace jsou obvykle uživatelské jméno, heslo, členství ve skupinách a oprávnění k přístupu ke zdrojům systému (přístupová práva). 4 MSDN (Microsoft Developer Network) je část serveru Microsoftu dostupná na jeho stránkách, obsahuje nástroje a dokumenty pro podporu programátorů.

92 3.3 ŘÍZENÍ PŘÍSTUPU A SPRÁVA UŽIVATELŮ 84 Skupina je definována svým názvem, seznamem členů a také oprávněními k přístupu ke zdrojům pro členy skupiny. Jeden uživatel může být členem více skupin. Uživatelské účty se ve Windows používají pouze v řadě NT, profily jsou v obou větvích Windows. Ve Windows řady NT existuje mezi profily a účty úzký vztah (obvykle k účtu přísluší konkrétní profil, včetně procesů služeb), po přihlášení uživatele s určitým účtem je načten jeho profil. Obrázek 3.8: Přesunutí složky Dokumenty Přesměrování složek: Složky patřící do profilu uživatele lze přesměrovat pomocí Zásad skupiny nebo Systémových zásad (viz dále), případně v registru, ale složku Dokumenty můžeme přesměrovat na jiné místo (na lokálním disku) s použitím Vlastností (na složce Dokumenty vyvoláme kontextové menu, zvolíme Vlastnosti) z důvodu bezpečnosti systému a dat je výhodnější mít data na jiném logickém disku než systém a programy (Windows je vhodné občas přeinstalovat, ale přece si kvůli tomu nebudeme mazat data). Zkopírování profilu použijeme například tehdy, když chceme profil uživatele přenést na jiný počítač (včetně všech nastavení a dat). Tuto operaci provádíme v nástroji Systém (Vlastnosti v kontextovém menu ikony Tento počítač, záložka Profily uživatelů), a to vybráním profilu a klepnutím na tlačítko Kopírovat. Zobrazí se okno, ve kterém zadáme umístění kopie (třeba USB flash disk, na kterém profil přeneseme). Upozornění: profil můžeme kopírovat jen tehdy, pokud zrovna není používán, tedy nelze zkopírovat profil patřící kopírujícímu. Když chceme zkopírovat svůj vlastní profil, přihlásíme se jako jiný uživatel s administrátorskými oprávněními. Cestovní profily (Roaming Profiles) umožňují uživatelům používat tentýž profil na více různých P počítačích v téže síti. Veškerá data profilu jsou uložena na serveru. Po přihlášení k tomuto serveru (tj. přihlášení do sítě) je celý profil načten do počítače podobně, jakoby byl profil nadefinován na samotném počítači, po odhlášení se profil opět uloží na server. Cestovní profily se využívají například ve školství, aby žáci studenti nemuseli být vázáni na konkrétní počítač, a měli by ke svým datům přístup z kteréhokoliv počítače v každé učebně, ale také například u mobilních zaměstnanců. Ti svůj profil mohou používat i na pracovní cestě (notebook připojí k internetu, přihlásí se, automaticky se načte profil,... ) implementuje se pomocí VPN

93 3.3 ŘÍZENÍ PŘÍSTUPU A SPRÁVA UŽIVATELŮ 85 (Virtual Private Network), připojení by mělo být vhodně zabezpečené. Cestovní profily mohou být výhodné i tehdy, když uživatel používá pořád tentýž počítač svůj profil má zálohován na serveru a neztratí data, pokud počítač odejde do věčných lovišt. Jistou nevýhodou je rozsáhlost dat, která takto při každém přihlášení a odhlášení putují po síti, může zpomalovat přihlašování a odhlašování a za určitých okolností může dojít k problémům při přenášení dat na server. To lze řešit přesunutím některých druhů dat profilu na sít ové disky a jejich případným zpřístupněním offline, pokud uživatel nechce být neustále připojen k síti. Je nutné hlídat, zda se na počítačích nehromadí profily uživatelů (občas je třeba je mazat). Dále může nastat situace, kdy po odhlášení uživatele některé služby nebo aplikace neukončí práci s částmi registru patřícími do profilu uživatele, a tím znemožní přenesení profilu na server (a samozřejmě profil se na lokálním počítači nevymaže). Tyto je problémy se týkají především klientských počítačů s Windows 2000, ve Windows XP jsou již řešeny. Cestovní profil bud vytvoříme přímo na serveru, a nebo můžeme lokální profil změnit na cestovní. To se provede tak, že v nástroji pro správu uživatelů (Uživatelé a hesla nebo Uživatelské účty, podle verze Windows) najdeme vlastnosti uživatele, jehož profil chceme změnit na cestovní, najdeme záložku pro profil a zadáme sít ovou cestu k budoucímu profilu (začínající dvěma opačnými lomítky, povede do vhodného adresáře na serveru, který ještě neexistuje), například \\serverxxx\lide\novak, zkopírujeme profil na server (při kopírování zadáme stejnou cestu jako v předchozím bodu). Služby se nemusí přihlašovat s přístupovými právy přihlášeného uživatele, většinou využívají účty LocalSystem, LocalService a NetworkService. Službám a jejich přístupovým oprávněním se budeme věnovat později. Nastavení související s uživateli, skupinami a přístupovými oprávněními provádíme v těchto nástrojích: v nástroji Uživatelé a hesla/uživatelské účty (v Ovládacích panelech) vytvoření a zrušení uživatelského účtu, v konzole Správa počítače Místní uživatelé a skupiny (konzola lusrmgr.msc) vytváření a rušení skupin, přidávání a odstraňování uživatelů ze skupin, také některá z nastavení prováděných příkazy net user a net localgroup, v Místních zásadách zabezpečení (v Nástrojích pro správu), v Zásadách skupiny (některé aspekty), v Příkazovém řádku pomocí cacls.exe a dalších. Ne všechny tyto možnosti jsou dostupné ve všech verzích Windows, mimořádně osekané jsou například Windows XP Home, kde nenajdeme konzolu Místní uživatelé a skupiny ani Zásady skupiny. Úkoly 1. Najděte svůj profil a zjistěte, jak jsou k němu nastavena přístupová oprávnění pro vás a pro administrátora. Porovnejte s nastavením oprávnění u profilu All Users a Default User. Ověřte si, ve které systémové proměnné je uložen název profilu právě přihlášeného uživatele. C

94 3.3 ŘÍZENÍ PŘÍSTUPU A SPRÁVA UŽIVATELŮ Najděte svůj uživatelský účet v registru. Dále si vzpomeňte, kde v grafickém rozhraní lze konfigurovat uživatelské účty a kde může uživatel nastavit své heslo. Vzpomeňte si, jak se to dělá v Příkazovém řádku. 3. Pro účty Local Service a Network Service najděte uživatelské účty v registru (hodnoty SID zjistíte na začátku této kapitoly) a profily v adresářové struktuře. 4. Pokuste se přesměrovat svou složku Dokumenty na jiný diskový oddíl. 5. Zjistěte, zda váš profil je lokální nebo cestovní. Projděte si postup, kterým byste změnili lokální profil na cestovní Přístupová oprávnění V souborovém systému NTFS je u každého objektu (také složky a souboru) evidován seznam DACL (resp. zjednodušeně ACL) s přístupovými právy. Je zde stanoveno, kdo (třeba člen konkrétní skupiny nebo uživatel) může provádět kterou akci s tímto objektem. O přístupových oprávněních už něco víme z předchozího semestru. Základní symboly pro přístupová oprávnění jsou f (full) všechna práva, r (read) právo čtení, w (write) právo zápisu, c (change) právo modifikace (změny), n (none) žádná práva. U složek navíc můžeme určit, kterých vnořených objektů se nastavená práva budou týkat (aktuální složky, podsložek, souborů). Dědičnost práv se určuje jako kombinace voleb (OI) pro tuto složku a soubory v ní (CI) pro tuto složku a její podsložky (IO) neplatí pro tuto složku (tato volba odebírá oblast platnosti) Možné kombinace voleb pro ACL jsou v tabulce 3.1. V grafickém rozhraní je nastavujeme ve vlastnostech souboru na kartě Zabezpečení. Po klepnutí na tlačítko Upřesnit můžeme nastavovat speciální oprávnění specifická pro určitý typ objektu. Příkaz CACLS slouží k nastavení přístupových práv souborového systému NTFS (pracuje pouze na logickém disku formátovaném jako NTFS), je součástí Windows od verze cacls soubor výpis nadefinovaných přístupových práv souboru (ACL listy) cacls * totéž, ale postupně pro všechny adresáře a soubory v pracovním adresáři (můžeme zadat také složitější výraz) cacls soubor /g patrik:r k zadanému souboru přidělí uživateli s názvem patrik práva pro čtení (jakákoliv původní oprávnění budou přepsána) P

95 3.3 ŘÍZENÍ PŘÍSTUPU A SPRÁVA UŽIVATELŮ 87 Řetězec prázdný řetězec (OI) (CI) (OI)(CI) (OI)(CI)(IO) (OI)(IO) (CI)(IO) Význam jen pro tuto složku, nedědí se pro tuto složku a soubory v ní pro tuto složku a její podsložky platí pro tuto složku, soubory v ní i její podsložky (plné dědění) platí pro soubory ve složce a její podsložky, ale ne pro samotnou složku platí jen pro soubory ve složce, ne pro složku ani podsložky platí jen pro podsložky, ne pro složku ani soubory v ní Tabulka 3.1: Dědění přístupových oprávnění v ACL cacls * /e /g patrik:w ke všem souborům v pracovní složce přidá uživateli patrik právo zápisu (ostatní práva zůstanou zachována) cacls *.doc /t /e /g patrik:w ke všem DOC souborům z pracovní složky i z jejích podsložek (parametr /t, rekurze) přidá uživateli patrik práva pro zápis (ostatní práva zůstanou zachována) cacls abc.doc /r patrik odebere uživateli patrik všechna přístupová práva k souboru abc.doc, která měl navíc oproti právům skupiny apod. cacls abc.doc /d patrik zakáže uživateli patrik přístup k danému souboru Ve výpisu přístupových práv (příkaz bez parametrů, například v kořenovém adresáři systémového disku) vidíme řetězce, které určují způsob rekurzivního přenášení práv na vnořené objekty (třeba podsložky). Příklad 3.5 Pohrajeme si s přístupovými oprávněními. Přesuneme se na disk, na kterém máme právo zápisu a vytvoříme dva vnořené adresáře. Také vytvoříme nového uživatele a budeme mu přidávat nebo odebírat přístupová oprávnění. md pokus cd pokus md vnitrni cd.. vytvoříme první adresář přesuneme se do něj vytvoříme podadresář přesuneme se o úroveň výše (všechny předchozí příkazy včetně tohoto lze provést jediným příkazem md pokus\vnoreny) net user novy novy /add vytvoříme nového testovacího uživatele (jeho heslo je stejné jako jméno), po vytvoření by měl mít přístupová oprávnění spíše nižší (pravděpodobně skupina Users, záleží na verzi Windows) net user novy pro jistotu si ověříme vlastnosti nově vytvořeného uživatele, všimněte si, do kterých skupin patří (tato informace je ve výpisu) cacls pokus zobrazíme přístupová oprávnění nového adresáře, měl by tam být záznam pro skupinu everyone s právy f (full, vše) cacls pokus /e /d novy novému uživateli zakážeme přístup k adresáři (pozor, nesmíme zapomenout parametr /e, aby se nepřepsal celý ACL seznam řízení přístupu)

96 3.3 ŘÍZENÍ PŘÍSTUPU A SPRÁVA UŽIVATELŮ 88 cacls pokus /e /g novy:r cacls pokus ale přidělíme mu právo čtení ověříme ve výpisu, měl by tam být řádek pro nového uživatele s oprávněním n cacls pokus\vnoreny podíváme se, jestli to nastavení mělo nějaký vliv na oprávnění u vnořeného adresáře zjistíme, že ne, protože jsme nepoužili parametr pro rekurzi cacls pokus /e /r novy ted pozor mohlo by se stát, že práva ještě ubíráme, ale ve skutečnosti jsme ze seznamu oprávnění ACL zadaného adresáře vymazali údaje o novém uživateli, tedy v našem případě jsme vlastně odstranili záznam o zákazu přístupu cacls pokus ověříme si výsledek předchozího příkazu cacls pokus /t /e /d novy tento příkaz je podobný jako ten, který jsme použili pro zákaz přístupu novému uživateli, ale díky parametru /t je rekurzívní cacls pokus /t /e /g novy:r cacls pokus rekurzívně mu povolíme čtení ověříme si, ted by měl mít stejná oprávnění i v podadresáři cacls pokus /d novy aha, zapomněli jsme parametr /e, takže tímto příkazem jsme přepsali ACL, můžeme si to ověřit zadáním cacls pokus cd pokus ted by se mělo objevit hlášení Přístup byl odepřen, protože pro nás nejsou definována žádná oprávnění (je definováno pouze jedno, a to Nepustit dovnitř uživatele novy ), do adresáře se nedostaneme cacls pokus /e /g everyone:f napravíme chybu, kterou jsme provedli v předchozím příkazu, jinak bychom tento adresář nemohli ani smazat 5 rd /s pokus net user novy /delete uklidíme v adresářích rekurzívně smažeme adresář i jeho podadresář uklidíme po sobě také v seznamu uživatelů Ve skutečnosti lze s přístupovými oprávněními pracovat i pomocí jiných příkazů, některé jsou součástí novějších verzí Windows, jiné musíme sehnat na internetu. Jedná se především o příkaz, který je velmi užitečný a také využívaný na serverech, ICACLS. Najdeme ho ve Windows Vista a Windows Server od verze 2003 SP2. Některé parametry jsou podobné jako u cacls (například /t používáme pro rekurzi), ale obecně má odlišnou syntaxi. Například icacls adresar /grant:r novy:r /t přidá uživateli novy právo ke čtení (pozor r za /grant znamená přidání práv bez přepsání již definovaných, až druhé r za uživatelem je právo čtení), poslední parametr znamená rekurzívní dědění. Uživatele (vlastně i skupiny) je možné zadat nejen názvem, ale také řetězcem SID. Tento případ odlišujeme použitím hvězdičky před SID, například icacls adresar /grant:r *S :r /t Podobně se používá parametr /deny, kterým se práva odebírají. Kromě běžných oprávnění lze pracovat také se speciálními oprávněními: icacls soubor /grant *S-1-1-0:(d,wdac) 5 Uvědomte si, že se sice do adresáře nedostaneme, ale můžeme k němu definovat přístupová oprávnění.

97 3.3 ŘÍZENÍ PŘÍSTUPU A SPRÁVA UŽIVATELŮ 89 Skupině Everyone (ve výchozím nastavení má SID S-1-1-0) přiřazuje speciální práva pro mazání (právo D, delete) a dále možnost zapisovat do seznamů určujících přístupová oprávnění k zadanému objektu (souboru) WDAC. 6 Také můžeme podrobně určovat dědičnost: icacls adresář /grant:r uzivatel:(oi)(ci)r /T (určili jsme plnou dědičnost, můžeme používat jakoukoliv kombinaci z tabulky 3.1. Řetězec (NP) znamená, že se nemá použít žádné dědění (do not propagate inherit). Tento příkaz má ještě další důležitou funkci můžeme seznamy přístupových práv ukládat do souboru (textového) a nebo ze souboru načítat: icacls * /save souboracl.txt /t icacls * /restore souboracl.txt /t (první příkaz uloží nastavená oprávnění z pracovního adresáře a rekurzívně z celého jeho obsahu do zadaného souboru, druhý příkaz je opětovně načte). Další příkaz, který lze používat k práci s přístupovými oprávněními, je XCACLS (s dodatkem xcacls.vbs). Je součástí Windows Server od verze Má syntaxi velmi podobnou příkazu cacls, ale umožňuje pracovat také se speciálními oprávněními. 8 Z nástrojů třetích stran může být zajímavý také program SetACL šířený pod licencemi GPL a LGPL. 9 Je dostupný ve dvou formách bud jako nástroj pro Příkazový řádek (bez grafického rozhraní) a nebo jako komponenta ActiveX. Úkoly 1. Pokud na to budou stačit vaše přístupová oprávnění, vyzkoušejte si postupně všechny příkazy z příkladu 3.5. Dbejte na bezpečnost pokus provádějte na adresáři, který není důležitý (nejlépe nově vytvořený), a to s jiným uživatelským jménem, než pod kterým pracujete (nejlépe nově vytvořeným, stejně jako v příkladu). Nezapomeňte po sobě uklidit. 2. Vypište si nápovědu příkazu cacls. Projděte si všechny možné přepínače tohoto příkazu. 3. Sestavte příkaz (s použitím cacls), kterým uživateli honza přidáte právo pro zápis k adresáři d:\faktury, a to rekurzívně i pro podadresáře. Potom tentýž příkaz sestavte s použitím icacls. 4. Na adrese uvedené v jedné z poznámek pod čarou najděte seznam zkratek pro speciální přístupová oprávnění. 5. Pokuste se najít na internetu seznam programů, které jsou součástí Windows Server 2003 Resource Kit (pozor, nemá jít o knihu, ale o souhrn nástrojů, které si lze stáhnout). Všimněte si, že zatímco v Resource Kitu pro Windows 2000 je příkaz icacls, v Resource Kitu pro verzi 2003 už není. Proč? C R 6 Seznam všech zkratek pro speciální oprávnění včetně WDAC najdeme na 7 Nástroj xcacls lze také stáhnout například ze stránek 8 Příklady na příkaz xcacls včetně jejich výstupů najdeme například na stránce 9 Najdeme ho na

98 3.4 JMENNÉ A ADRESÁŘOVÉ SLUŽBY Navyšování přístupových oprávnění Příkaz RUNAS slouží ke spuštění procesu s právy jiného uživatele, většinou administrátora (to znamená, že příkaz umožňuje navýšení přístupových oprávnění). Základní syntaxe příkazu je runas [/profile /noprofile] /user:uživatel program Například: runas /user:administrator net user novy heslo /add nebo runas /user:pocitac\administrator net user novy heslo /add runas /user:administrator@pocitac net user novy heslo /add Všimněte si, že příkaz obsahující mezery musí být uzavřen do uvozovek. Totéž platí o uživateli, pokud jeho název obsahuje mezery (bohužel to je možné, a někteří OEM prodejci toho zneužívají). Tento příkaz spustí zadaný program s právy zadaného uživatele (zeptá se na heslo pozor, uživatel musí mít definováno heslo, nesmí být prázdné!). Je určen především pro administrátory, kteří (zcela podle doporučení odborníků) obvykle pracují s nižšími přístupovými oprávněními, ale někdy potřebují ke své práci větší oprávnění. Přepínač /profile nebo /noprofile použijeme, pokud chceme či nechceme načíst profil přihlašovaného uživatele (nenačtení profilu sice zrychlí start programu, ale některé aplikace nemusí správně fungovat). Program může být jakýkoliv spustitelný soubor nebo nástroj včetně nástrojů Windows (také textový skript nebo jiný příkaz). Ekvivalentem v grafickém rozhraní je zobrazení položky Spustit jako (v anglické verzi Run as) v kontextovém menu objektu (spustitelného souboru, to může být i skript). Pokud tato položka v kontextovém menu není (což je obvyklé v některých verzích Windows), zobrazíme ji takto: stiskneme a dále držíme klávesu Shift, nebo zároveň obvyklým způsobem vyvoláme kontextové menu spustitelného souboru. Od verze Vista je v kontextovém menu pouze položka Spustit jako správce (míněno administrátor). Pokud nám chybí původní možnost spouštět programy s přístupovými oprávněními různých uživatelů, nejen administrátora, můžeme si nainstalovat program ShellRunAs, který najdeme na stránkách Takže v grafickém režimu používáme položku Spustit jako, v textovém režimu (i pro programy s oknem) příkaz runas. Úkoly 1. Pomocí příkazu runas můžete spustit jakýkoliv program jako jakýkoliv uživatel (dokonce i ten samý uživatel, který je právě přihlášen vy). Pokud nemáte administrátorské heslo, můžete tento příkaz vyzkoušet se zadáním svého vlastního přihlašovacího jména. Spust te tímto způsobem kalkulačku (je to program calc.exe) nebo Poznámkový blok (notepad.exe). 2. Vyberte si některý z programů v nabídce Start a vyzkoušejte, zda se při klepnutí pravým tlačítkem na položku programu objeví v kontextovém menu položka Spustit jako. Pokud ne, vyzkoušejte zobrazení kontextového menu zároveň se stisknutou klávesou Shift. E L C

99 3.4 JMENNÉ A ADRESÁŘOVÉ SLUŽBY Jmenné a adresářové služby Jmenné služby jsou obecným principem překladu jmenných názvů (textových řetězců) na číselné adresy, se kterými snadněji pracují počítače. Typickým představitelem je DNS, jehož hlavním účelem je překlad slovních adres, kterým rozumíme (třeba na číselné IP adresy. Ke jmenným službám můžeme řadit také WINS (Windows Internet Name Service, slouží k překladu názvů NetBIOS na IP adresy). Ovšem WINS se již moc nepoužívá (zejména z důvodu značných omezení, například délka názvu je nejvýše 15 znaků). Oproti tomu adresářové služby slouží k uspořádání, zabezpečení a správě prostředků (často reprezentovaných objekty ve struktuře). Typickým představitelem je například Active Directory Úvod do DNS DNS (Domain Name System) je, jak bylo výše uvedeno, jmenná služba, a to distribuovaná. Sít je organizována v hierarchickém systému domén, kde každá doména má své jméno, a adresace pomocí jména se vytváří podle hierarchie. Můžeme si to představit jako řadu stromů, kde každý strom má jeden kořen nazývaný doména první úrovně (TLD, Top Level Domain, například.cz nebo.org) a dále se větví v dalších úrovních (domény druhé, třetí a příp. další úrovně). Například adresa mail.seznam.cz obsahuje celkem tři úrovně, z nichž první úroveň je zcela vpravo. Ve skutečnosti i tyto stromy mají společný kořen (tzv. kořenovou doménu), která se označuje pouze samotnou tečkou (bez dalších znaků). Překlad názvů probíhá pomocí DNS serverů (jmenných name serverů). Překládá se ze jmenné adresy na číselnou IP adresu (například podle protokolu IPv4), a nebo naopak. Protože není technicky realizovatelné mít jeden jediný DNS server se všemi potřebnými záznamy, a ani mít více takových DNS serverů, probíhá dotazování u DNS serverů distribuovaně. To znamená, že záznamy o vztahu jmenných a IP adres jsou rozprostřeny mezi mnoho DNS serverů. Každý DNS server má záznamy o své zóně (oblasti, kterou spravuje). Každá doména první úrovně má určité množství tzv. kořenových serverů. Dotazování (máme jmennou adresu a chceme IP adresu) probíhá distribuovaně DNS server často nedokáže na dotaz odpovědět okamžitě podle svých záznamů, proto se obrací na některý z kořenových serverů zadané domény první úrovně. Například pokud potřebujeme zjistit IP adresu počítače DNS server se obrátí na některý z kořenových serverů domény.cz. Dotazovaný kořenový server bud adresu dohledá ve svých záznamech a nebo se obrátí na některý se svých podřízených serverů. Takto distribuovaně probíhá vyhodnocování dotazu (postupně podle vnořování domén různých úrovní) a zpět je odeslána zjištěná IP adresa. Systémy Windows Server bývají vybaveny DNS serverem, a nebo můžeme zvolit jiné řešení (BIND, MyDNS, PowerDNS, atd.). DNS servery komunikují pomocí protokolu TCP/IP, tedy tento protokol musí být správně nakonfigurován na všech počítačích, které jsou v síti adresovány. DNS server od Microsoftu dále vyžaduje, aby počítače v síti měly systémový disk naformátován souborovým systémem NTFS (alespoň verze 5.0). P P P

100 3.4 JMENNÉ A ADRESÁŘOVÉ SLUŽBY 92 Instalace DNS serveru od Microsoftu se provádí klasicky přes Přidat nebo odebrat programy, na serverovém systému ve Správci serveru (Server Manager), kde instalujeme roli DNS server. Na serveru konfigurujeme DNS pomocí konzole DNS Management (Správa DNS, dnsmgmt.msc), což je klasická konzola se stromovou strukturou položek v levém podokně. V tomto nástroji provádíme běžnou konfiguraci DNS. Dále existuje nástroj určený pro řešení problémů s DNS, příkaz dnscmd.exe. Jde o textovou interaktivní konzolu podobně jako třeba NetShell. Firma (nebo osoba) vlastnící doménu určité úrovně může (například ve své organizaci) vytvářet podstrom domén nižších úrovní. Na tyto DNS domény lze pak napojit domény služby Active Directory. V první kapitole jsme se s konfigurací DNS již trochu setkali v nástroji NetShell. Nástroj NSLookUp (spouštěný příkazem nslookup) slouží ke komunikaci s DNS serverem a je ve skutečnosti textová konzola podobně jako NetShell. Také se může používat jak v interaktivním, tak i v neinteraktivním režimu. Například bez nutnosti přechodu do režimu textové konzoly můžeme zjistit IP adresu počítače v doméně, pokud známe jeho název v této doméně: nslookup název_počítače DNS_server (DNS server můžeme zadat jeho názvem nebo IP adresou, také ho nemusíme vůbec zadat, pokud jeho název neznáme). Příklad 3.6 Chceme zjistit IP adresy domény a pak naopak zjistit doménové jméno pro IP adresu Nejdřív bez přechodu do interaktivního režimu zadáme příkazy: nslookup nslookup (vypíše požadované informace) (opět vypíše požadované informace) Ted provedeme totéž, ale v interaktivním režimu: nslookup (přejdeme do interaktivního režimu, změní se prompt) (vypíše požadované informace) (opět vypíše požadované informace) exit (ukončíme interaktivní režim, zobrazí se prompt Příkazového řádku) Úkoly 1. Zjistěte IP adresu serveru 2. Zjistěte doménové jméno pro IP adresu C Active Directory Active Directory je implementace protokolu LDAP (Lightweight Directory Access Protocol) pro Windows od verze Je závislá na DNS (můžeme ji chápat jako nástavbu nad doménami DNS), P

101 3.4 JMENNÉ A ADRESÁŘOVÉ SLUŽBY 93 například přejímá názvy domén DNS a využívá DNS při vyhledávání v doménách. Musí existovat alespoň jeden server DNS, na klientských počítačích musí být nakonfigurován klient DNS třeba přes DHCP. Domény Active Directory však nejsou totožné s doménami DNS, i když mají stejný název, jsou jinak reprezentovány, ukládají se jiné typy informací. Používáme tyto pojmy: adresářová databáze (adresář) je databáze objektů, které jsou v systému spravovány, je hierarchicky uspořádaná (takže adresář je vlastně o objektech a vztazích mezi nimi, to vše je uloženo v souborech), objekty mohou být například uživatelé, skupiny, počítače, domény, apod., každý objekt má své vlastnosti (například přístupová práva), tyto vlastnosti se v hierarchické struktuře mohou dědit, kontejner je objekt, který může obsahovat další objekty (obdoba složek na disku), AD schéma popisuje objekty, které mohou být uloženy v adresáři Active Directory (jaké mohou mít atributy, co v nich může být uloženo), doména je skupina počítačů sdílejících společnou adresářovou databázi, organizační jednotka (OU) je podskupina domény (ale ne jakékoliv) oddělená za určitým účelem (například firma může mít jedinou doménu a tu rozčlení na organizační jednotky podle svých oddělení). OU mohou být i vnořené. V síti je Active Directory provozován na doménových řadičích (domain controller, vpodstatě jde o doménové servery), musí existovat alespoň jeden (primární řadič domény) a případně další (doporučuje se mít alespoň dva). V každé síti je nejméně jeden Globální katalog (první globální katalog se vytvoří na primárním řadiči domény). V Globálním katalogu jsou především souhrny informací obsažených v dalších doménových serverech sítě (ne všechny parametry, jen nejdůležitější), hovoříme také o replikaci (dynamickém vytváření kopií). Globální katalogy slouží při vyhledávání informací v síti a také k autentizaci (uživatel se vlastně z technického hlediska přihlašuje ke globálnímu katalogu) a autorizaci. Takže přes doménové řadiče s globálními katalogy přistupujeme k objektům a také se na nich provádí autentizace (kontrola při přihlašování) a autorizace (při přístupu k objektům). ou=pocitace dc=firma,dc=cz ou=zamestnanci V Active Directory (také ve jmenných službách včetně DNS) cn=novak se používá několik druhů názvů podle typu zanoření v doménách. Jsou to především Domain Component (DC, uzel domény), Obrázek 3.9: Názvy v doménách Organization Unit (OU, organizační jednotka, to je Active Directory Container, obdoba složky) a Common Name (CN, objekt). Adresace (popis cesty k objektu) podle struktury na obrázku 3.9 je cn=novak,ou=zamestnanci,dc=firma,dc=cz Tento způsob adresace objektu se označuje DN (Distinguished Name). Další způsob adresace, UNC, známe z DNS názvů: firma.cz/zamestnanci/novak

102 3.5 ZÁSADY A ŠABLONY 94 V serverových verzích Windows máme k dispozici nástroje pro práci s Active Directory několik nástrojů. Nebudeme je zde probírat, je to spíše záležitost počítačových sítí. Tyto nástroje mají obvykle ve svém názvu podřetězec Active Directory či zkratku AD, například pro správu uživatelů, skupin, počítačů a organizačních jednotek používáme nástroj Uživatelé a počítače služby AD (Active Directory Users and Computers). Další nástroje jsou dostupné na instalačním CD Windows Server a také na internetu. Zajímavý a užitečný nástroj je například Active Directory Explorer od Sysinternals. Na desktopu obvykle služba Active Directory není nainstalována, pracujeme zde pouze se zásadami (politikami), a to v nástrojích Místní zásady zabezpečení a Zásady skupiny (Group Policies Editor gpedit.msc). Pod pojmem zásada (politika, policy) obvykle rozumíme konkrétní nastavení (obvyke týkající se zabezpečení) pro danou komponentu či vlastnost. Dnes jsou běžné heterogenní sítě (tj. na počítačích v síti jsou různé typy operačních systémů. Může se zdát, že používání mechanismu Active Directory v heterogenní síti je problém, ale řešení existuje, spočívá v použití jakýchsi překladatelů protokolů, které zprostředkují komunikaci mezi počítači s různými operačními systémy. V případě použití Active Directory jde především o protokol LDAP implementovaný také na jiných operačních systémech včetně Linuxu, dále pro přístup k datům se používá protokol SMB. Informace o základních principech a postupech v Active Directory najdeme na Úkoly V Active Directory (firma Obláček, s.r.o.) jsou dány DN názvy agenda.oblacek.cz/uctarna/mzdove agenda.oblacek.cz/uctarna/vedouci agenda.oblacek.cz/administrativa/sekretarka C Vytvořte k nim graf podobně jako na obrázku 3.9 a převed te je na UNC adresy. 3.5 Zásady a šablony Systémové zásady Systémové zásady slouží ke konfiguraci objektů (uživatelů, počítačů apod.) v síti řízené serverem Windows NT 4.x. V současné době se s nimi proto již moc nesetkáváme. Obsahují nastavení ukládaná do registru, která platí pro daného uživatele, skupinu nebo počítač.

103 3.5 ZÁSADY A ŠABLONY 95 K jejich editaci slouží program Editor systémových zásad (poledit.exe), soubory mají příponu POL. Tento nástroj je dostupný také v systémech, které byly původně zamýšleny jako klienty sítě se serverem Windows NT 4.x, tedy ve Windows 9x (najdeme ho na instalačním CD). Se Systémovými zásadami neumí pracovat klienty s instalovanými Windows XP, tam je nutné použít Zásady skupiny nebo vhodným způsobem doplnit programové vybavení. Systémové zásady nejsou postaveny na službě Active Directory, používá se jen DNS Zásady skupiny Obrázek 3.10: Nástroj Editor systémových zásad ve Windows 98 Zásady skupiny ve Windows od v (včetně serverů) slouží k podrobnější konfiguraci pracovního prostředí uživatele, pro své fungování v síti potřebuje službu Active Directory. V některých případech mohou být zároveň používány Systémové zásady i Zásady skupiny, a to například tehdy, když v síti s klienty Windows 2000/XP přecházíme na serveru z Windows NT 4.x na Windows Oproti Systémovým zásadám jsou zde také zásady pro skripty, instalaci a údržbu softwaru, nastavení zabezpečení apod. Určujeme například, které nástroje se objeví v Ovládacích panelech, které programy budou uživateli přístupné, co se objeví na pracovní ploše, skripty, které se spustí při přihlášení nebo odhlášení uživatele při zapnutí a vypnutí počítače, apod. Lze tady také spravovat aplikace (jejich instalaci a aktualizaci tak, aby se o tyto úkoly musel uživatel starat co nejméně). Se Zásadami skupiny lze pracovat lokálně pomocí konzoly Zásady skupiny (spustíme v menu Start Spustit, zadáme gpedit.msc, obrázek 3.11), ale i v síti. Obvyklé použití je v kombinaci se službou Active Directory, kdy k jednotlivým objektům této služby (sítím, doménám, uživatelům, apod.) přidružujeme objekty Zásad skupiny. Pro určení, kterého počítače se mají nastavení Zásad skupiny týkat, použijeme menu tohoto nástroje, a pokud chceme zásady přiřadit určitému objektu Active Directory, použijeme nástroje poskytované touto službou na serveru. Nástroj je rozdělen do dvou částí Konfigurace počítače a Konfigurace uživatele. Nastavení provedená v první části platí obecně pro počítač a všechny uživatele, v druhé již konkrétně pro určitého uživatele. Obrazem těchto dvou částí jsou některé podklíče klíčů HKLM a HKCU v registru. Pokud jsou stejné typy položek v obou, pak přednost mají nastavení v druhé části. Pokud jsou stejné položky v Místních zásadách, mají přednost nastavení v Zásadách skupiny. K práci se Zásadami skupiny slouží také programy gpupdate.exe (změny provedené v gpedit.msc se někdy neprojeví okamžitě, pokud chceme, aby se změny provedly, spustíme gpupdate.exe) a gpresult.exe (tento program prověří, zda nastavení provedená v Zásadách skupiny platí). Ve P

104 3.5 ZA SADY A S ABLONY 96 Obra zek 3.11: Na stroj Editor za sad skupiny gpedit.msc Windows 2000 se mı sto programu gpupdate.exe pouz ı val program secedit.exe s pr epı nac em /refreshpolicy. U koly Pokud ma te moz nost, projde te si konzoly Za sady skupiny a Mı stnı nastavenı zabezpec enı C S ablony pro spra vu S ablony pro spra vu jsou soubory s pr ı ponou ADM s pr ı mou vazbou na registr, ktere obsahujı konfiguraci ru zny ch c a stı syste mu a prostr edı. Nedoporuc uje se pr ı mo zasahovat do te chto souboru, ani to nenı nutne. Ve Windows NT 4.x se s nimi pracovalo prostr ednictvı m programu poledit.exe (Syste move za sady), ve Windows 2000 (vc etne serverovy ch variant) a XP jsou to rozs ı r enı Za sad pro spra vu (ne ktere s ablony jsou v nich standardne zahrnuty, jine lze pr idat v kontextove m menu poloz ky S ablony pro spra vu ) viz obra zek Soubory se s ablonami jsou ve ts inou ve sloz ce...\system32\grouppolicy\adm. K nejdu lez ite js ı m s ablona m patr ı napr ı klad system.adm, ktery obsahuje nastavenı operac nı ho syste mu, windows.adm s konfiguracı pro klientske poc ı tac e se syste mem Windows 9x nebo conf.adm s nastavenı mi pro NetMeeting. P

105 3.5 ZÁSADY A ŠABLONY 97 To, co je uloženo v souborech ADM, je také uloženo v registru. Význam šablon spočívá především v zabezpečení údajů registru proti neoprávněným změnám (změny na některých klíčích není dovoleno provádět, když je to nastaveno v ADM souboru), a dále v případě změn provedených v Zásadách skupiny (ty se projeví v ADM) se větve registru odpovídající změněným údajům vyčistí a naplní novými údaji. Nástroj Obrázek 3.12: Seznam právě zobrazovaných ADM Zásady skupiny používá soubory ADM především souborů v uživatelské části k tomu, aby určil, co má zobrazit a které zásady může editovat uživatel, pod kterým byl nástroj spuštěn. Úkoly 1. Projděte si nastavení šablon pro správu v grafickém rozhraní (v Zásadách pro správu). 2. Najděte ADM soubory na systémovém disku. Zjistěte, které jsou namapovány do Zásad pro správu. C Šablony zabezpečení Šablony zabezpečení jsou některé soubory s příponou INF obsahující konfiguraci zabezpečení (například zásady definování hesel, zabezpečení registru, systému souborů, služeb), jsou v adresáři %WINNT%\SECURITY\TEMPLATES (...\Windows\Zabezpečení\Šablony). Pracujeme s nimi bud lokálně na jednom počítači (spustíme MMC a přidáme modul snap-in Šablony zabezpečení viz obrázek 3.13) nebo v síti. Můžeme je importovat do objektu Zásad skupiny přidruženého k objektu služby Active Directory (po importu se přenastaví přístupová práva objektu služby Active Directory). S některými šablonami zabezpečení můžeme pracovat na lokálním počítači v grafickém rozhraní (například zásady definování hesel jsou v Místních zásadách zabezpečení (v Nástrojích pro správu). Lepší nástroj (zvláště z hlediska automatizace a plného přístupu k možnostem) je Konfigurace a analýza zabezpečení secedit.exe. Po spuštění bez parametrů se spustí aplikace nápovědy (v grafickém rozhraní), samotný příkaz se vždy používá s parametry, například P secedit /analyze provede analýzu zabezpečení systému, je také nutné zadat název souboru, do kterého se uloží výsledek analýzy, secedit /configure (s dalšími parametry) provede konfiguraci pro určitý objekt, tedy načte soubor INF šablony zabezpečení, secedit /export /cfg d:\vysledek.inf (s dalšími případnými parametry) exportuje nastavení zabezpečení z objektu do souboru šablony zabezpečení (toho, jehož název jsme zadali, měl by to být nejlépe dosud neexistující soubor).

106 3.5 ZA SADY A S ABLONY 98 Obra zek 3.13: S ablony zabezpec enı jako samostatna konzola (vytvor eno) U koly 1. Projde te si konzolu S ablony zabezpec enı a zjiste te, co vs e je v nı nastaveno. 2. Exportujte celou databa zi zabezpec enı do souboru seced.inf, umı ste te soubor na disku, ke ktere mu ma te pr ı stup k za pisu. Tento soubor si prohle dne te. Vs imne te si mnoz stvı SID. Proc je pr ed nimi vz dy hve zdic ka? Vzpomen te si na pr ı kazy, ve ktery ch se SID zada va jako parametr. 3. Zjiste te, co vs e umı pr ı kaz secedit. Prohle dne te si syntaxi tohoto pr ı kazu. 4. Projde te si sloz ku...\windows\security vc etne jejı ch podsloz ek. V podsloz ce Logs otevr ete soubor winlogon.log a najde te za znamy z souc asne ho data (na konci souboru). Vs imne te si por adı za znamu pro dany den (jde o posloupnost zava de nı a konfigurace za sad pr i startu procesu winlogon). Projde te i dals ı logy v te to sloz ce. C

107 Kapitola 4 Služby a procesy 4.1 Správa služeb Jak služby fungují Služba je proces, který slouží k podpoře funkcí jiných procesů a obvykle pracuje na pozadí systému (tj. nejde o interaktivní procesy, uživatel do jejich činnosti většinou nezasahuje). Od běžných procesů se liší v několika aspektech: běží na pozadí systému, přístupová oprávnění služeb bývají odlišná od přístupových oprávnění běžných procesů, běh služeb je většinou nezávislý na přihlašování a odhlašování uživatelů (služby mohou běžet i tehdy, když žádný uživatel není přihlášen), existují nástroje určené speciálně pro místní a vzdálenou správu služeb, také v registu najdeme služby na specifických místech. Ke službám se ve skutečnosti řadí také ovladače, tedy ovladač je vlastně speciální druh služby sloužící jako rozhraní k zařízení (včetně virtuálních zařízení). K ovladačům můžeme přistupovat stejným způsobem jako ke službám. Služby používají tyto účty pro stanovení svých přístupových oprávnění: Local System účet pro systémové procesy, služba má plný přístup k čemukoliv, v seznamech se také může zobrazovat jako System, Local Service pro služby, které nepotřebují zvýšená přístupová oprávnění, k místním prostředkům mají stejný typ přístupu jako běžný uživatel, k síti používají jen omezený anonymní přístup, Network Service pro služby, které potřebují autorizovaně pracovat na síti (podobně jako předchozí účet), ale k místním prostředkům počítače mají stejný typ přístupu (omezený) jako běžný uživatel, Doménový nebo lokální účet podobně jako u kteréhokoliv jiného procesu, lze nastavovat oprávnění. P P 99

108 4.1 SPRÁVA SLUŽEB 100 Služby (a všechny další procesy) pracující pod účtem Local System mají velmi rozsáhlá oprávnění, s určitým omezením: používají uživatelský profil uložený ve větvi registru HKU/.Default ( ní v následující kapitole na straně 6.1.4), a nemohou přistupovat do uživatelských profilů jiných uživatelů v dalších podklíčích klíče HKU. Na obrázku 4.1 je znázorněna architektura služeb. Veškerá komunikace se službami (včetně jejich konfigurace) probíhá přes modul SCM (Service Control Manager správce služeb), který je fyzicky představován souborem services.exe. P Programy services.msc msconfig.exe sc.exe. SCM (Service Control Manager) Služba 1 Služba 2. Obrázek 4.1: Architektura služeb SCM tedy spravuje databázi služeb a ovladačů a zprostředkovává k nim přístup. Databáze je zpřístupněna také přes registr, najdeme ji v klíči HKLM/System/CurrentControlSet/Services. V tomto klíči jsou podklíče nazvané podle krátkých jmen služeb a ovladačů (každá služba má dlouhé a krátké jméno). V podklíčích pak jsou všechny údaje související s danou službou či ovladačem. Najdeme zde obvykle tyto položky: DisplayName dlouhé jméno (krátké jméno známe z názvu klíče, dlouhé může být v jiném jazyce než v angličtině), Description popis služby či ovladače, ImagePath cesta k souboru (spustitelný soubor, soubor ovladače, dynamická knihovna apod.), Tag pořadové číslo, které určuje pořadí spouštění služeb (je jen u těch služeb, které závisejí na jiných službách a je tedy důležité, v jakém pořadí jsou spouštěny), ObjectName název účtu, pod kterým se má služba spustit (u ovladačů tuto položku nenajdeme, protože jsou vždy spouštěny s vysokými přístupovými oprávněními, pracují v režimu jádra), pokud u služby není tento klíč uveden, jde o účet LocalSystem, Type typ služby nebo ovladače (je to číselná hodnota), například 1 (Service Kernel Driver) je ovladač zařízení pracující v režimu jádra, 2 (Service File System Driver) je ovladač souborového systému (například NTFS), 16 (Service Win32 Own Process) je služba, která má vlastní proces (žádná jiná služba v tomto procesu neběží), může být spuštěna z vlastního spustitelného souboru nebo může jít o modul spouštěný procesem svchost.exe, 32 (Service Win32 Share Process) je služba, která je součástí procesu hostujícího více služeb,

109 4.1 SPRÁVA SLUŽEB (Service Win32 Own Process Interactive) podobně jako 16, ale může pracovat interaktivně (lze k němu za určitých okolností přistupovat přímo, například v konfiguračním okně), 288 (Service Win32 Share Process Interactive) podobně jako 32, ale může pracovat interaktivně, o řešení uživatelského rozhraní pro interaktivní služby jsme se učili v sekci o objektech na straně 77, všechny interaktivní služby musí být spuštěny pod účtem Local System, Start kdy má být služba načtena, například 0: služba či ovladač se načítá při zavádění systému (se zavaděčem systému), 1: při inicializaci jádra (tj. po všech službách s hodnotou 0), 2: spouští se automaticky hned po startu systému, 3: lze ji spustit, ale jen ručně (služba není spuštěna automaticky), 4: služba je zakázána (nelze ji spustit ani ručně), Group služba může patřit do některé skupiny služeb, DependOnService, DependOnGroup služba může být závislá na službě nebo skupině služeb, atd. Většina služeb a ovladačů má ve svém klíči podklíče s dalšími, specifickými informacemi vztahujícími se k zabezpečení nebo konfiguraci. Podrobnosti o dalších možných položkách zjistíme například na adrese Úkoly Spust te konzolu Služby. Vyberte si kteroukoliv službu (například Klient DHCP) a zobrazte její vlastnosti. Zjistěte, jestli běží, zda se spouští automaticky, pod jakým účtem se přihlašuje, na kterých službách závisí a které služby závisejí na ní pak tyto údaje najděte v registru. C Sdílené procesy služeb, Service Host Jak bylo výše uvedeno, několik služeb může běžet v jediném procesu. Je to především z důvodu šetření systémovými prostředky (každý proces zabere poměrně hodně paměti a času procesoru, služba jako taková však moc prostředků nepotřebuje, zvláště když není interaktivní). Seznam služeb, které hostí zadaný proces, zjistíme například v Process Exploreru, a to hned dvěma možnými způsoby bud podržíme myš nad názvem procesu (žluté okno na obrázku 4.2) a nebo zobrazíme vlastnosti procesu (poklepáním), služby najdeme na kartě Services (podokno na tomtéž obrázku). Procesy služeb s vlastním procesem (obvykle typu 16 podle výše uvedeného výčtu) jsou obvykle potomky (ve stromové struktuře) procesu services.exe, například proces spoolsv.exe pro službu Zařazování tisku. Stejně je tomu i u procesů, které hostí více služeb.

110 4.1 SPRÁVA SLUŽEB 102 Obrázek 4.2: Zobrazení služeb v procesu Služby mohou běžet v některém systémovém procesu, například některé služby najdeme v procesu SCM (services.exe) nebo LSASS (lsass.exe). Nejběžnějším kontejnerem pro služby je však proces Service Host (svchost.exe). Služby takto spouštěné jsou uloženy v DLL knihovnách. V Process Exploreru (také na obrázku 4.2) vidíme, že je spuštěno více instancí procesu Service Host. Liší se především ve dvou vlastnostech: účet, pod kterým proces běží (sloupec User Name), obvykle System (Local System), Network Service nebo Local Service, Command Line (příkaz včetně parametrů, kterým byl proces spuštěn), žádné dvě instance by neměly mít tuto položku stejnou. Příklad 4.1 To, ve které instanci programu Service Host bude služba spuštěna, záleží na řetězci uvedeném v registru v klíči HKLM/SYSTEM/CurrentControlSet/Services/ služba v položce ImagePath (tedy cesta ke spustitelnému souboru pro službu). Například služby AppMgmt (Správa aplikací), CryptSvc (Šifrování), Dhcp (Klient DHCP) a další mají tento řetězec %SystemRoot%\system32\svchost.exe -k netsvcs to znamená, že všechny budou běžet ve stejném procesu s touto příkazovou řádkou (můžeme si ověřit v Process Explorerovi nebo Správci úloh, když necháme zobrazit sloupec Command Line).

111 4.1 SPRÁVA SLUŽEB 103 Úkoly 1. V registru najděte klíč obsahující podklíče služeb (a ovladačů). Najděte následující podklíče: appmgmt cdfs cdrom cisvc EventSystem ipsec MountMgr netlogon null PlugPlay RemoteAccess SamSs spooler tcpip wmi wuauserv C Tyto služby roztřid te podle jejich typu. U každé zjistěte, jaké je její dlouhé jméno, kdy a jak se spouští, ve kterém souboru je uložena, pod jakým účtem se spouští (tj. jaká má přístupová oprávnění). 2. Ze seznamu v předchozím bodu si vyberte některou interaktivní službu, která je spuštěna. Spust te Process Explorer a zobrazte ve spodním podokně manipulátory (handle). Najděte v něm proces vybrané služby a zjistěte, v jaké stanici oken je napojen (záznam bude zřejmě někde ke konci seznamu handlů procesu). 3. V Process Exploreru zjistěte, které služby jsou spouštěny řetězci svchost -k rpcss svchost -k netsvcs Prohlédněte si vlastnosti těchto procesů, ve vlastnostech projděte všechny karty Program sc.exe Program sc.exe je součástí Windows od verze XP (Server 2003). Jeho účelem je pokročilá konfigurace služeb a dostaneme se prakticky k jakýmkoliv nastavením, která pro služby (obecně) platí. Podobně jako příkaz net, i zde máme sadu podpříkazů, které upřesňují chování příkazu samotného. sc query zobrazí informace (podáváme dotaz) sc query zobrazí informace o všech službách (hodně dlouhý výpis) sc query webclient zobrazí informace o službě WebClient (zadáváme vždy jen krátký název služby) sc query type= interact vypíšeme všechny interaktivní služby (pozor, před rovnítkem není mezera, za ním naopak musí být) sc query type= filesys vypíšeme všechny ovladače souborových systémů (je jich poměrně hodně) sc \\počítač query lmhosts vypíše informaci o zadané službě běžící na vzdáleném (zadaném) počítači sc qc, sc queryex zobrazí podrobnější informace zaměřené spíše na umístění a přístupová oprávnění nebo na proces sc qc rpcss zobrazí tento typ informací o službě Vzdálené volání procedur sc queryex rpcss z tohoto výpisu zjistíme například PID procesu, ve kterém služba běží

112 4.1 SPRÁVA SLUŽEB 104 sc create, sc delete vytvoří pro zadanou (novou) službu položku v registru, aby mohla být spouštěna; tento příkaz slouží ke zprovoznění služby a ovladače, je součástí instalace sc create novasluzba binpath= c:\windows\system32\soubor.exe type= own start= auto vytváříme novou službu, zadali jsme její spustitelný soubor, typ služby (služba s vlastním spustitelným souborem) a požadavek na automatické spouštění při startu systému; můžeme zadat také další položky včetně závislostí na jiných službách či jejich skupinách, uživatelský účet, zobrazované jméno, atd., prakticky cokoliv bývá v příslušných položkách registru sc delete novasluzba odinstalujeme službu (ve smyslu odstranění údajů z registru) sc config upraví konfiguraci služby či ovladače (konkrétně hodnoty v registru) sc config spooler start= auto změní konfiguraci spuštění zadané služby Zařazování tisku na automatické spouštění při startu systému sc enumdepend zjišt ujeme, které další služby závisejí na zadané službě (chceme vědět, které služby by nefungovaly, kdybychom zadanou službu ukončili) sc enumdepend samss sc enumdepend rpcss zjišt ujeme závislosti na službě Správce zabezpečení účtů Zjišt ujeme totéž pro službu Vzdálené volání procedur Možných podpříkazů je více (zjistíme je v nápovědě). Můžeme například službu pozastavit a pak ji kdykoliv odblokovat, nastavit akce při selhání služby, přinutit správu služeb k aktualizaci stavu služby, pokud byly provedeny změny a neprojevují se. Lze také pracovat s popisovači zabezpečení a také zamykat nebo odemykat databázi služeb na zadaném počítači. 1 Příklad 4.2 Budeme pracovat se službou Klient DHCP. V konzole services.msc lze zjistit, že krátký název služby je dhcp, spouští se příkazem svchost.exe -k netsvcs, tedy běží v hostitelském procesu služeb a nemá svůj vlastní proces, spouští se automaticky, je spuštěna, proces má přístupová oprávnění místní systémový účet (tj. Local System), závisí na třech dalších službách (AFD, Ovladač protokolu TCP/IP, Rozhraní NetBios nad protokolem TCP/IP). Údaje jsou z Windows XP, v jiných verzích mohou být odlišné. Podíváme se na výstupy příkazu sc: C:\> sc query dhcp SERVICE_NAME: dhcp TYPE : 20 WIN32_SHARE_PROCESS STATE : 4 RUNNING (STOPPABLE,NOT_PAUSABLE,ACCEPTS_SHUTDOWN) WIN32_EXIT_CODE : 0 (0x0) SERVICE_EXIT_CODE : 0 (0x0) CHECKPOINT : 0x0 WAIT_HINT : 0x0 M 1 Důsledkem zamknutí databáze služeb je například to, že SCM nemůže od té chvíle na daném počítači spustit žádnou službu, tedy můžeme tento postup použít při synchronizaci pokud chceme provést konfiguraci služeb (třeba i vzdáleně) na daném počítači, zamkneme databázi služeb, provedeme konfiguraci a pak databázi odemkneme.

113 4.1 SPRÁVA SLUŽEB 105 C:\> sc queryex dhcp SERVICE_NAME: dhcp TYPE : 20 WIN32_SHARE_PROCESS STATE : 4 RUNNING (STOPPABLE,NOT_PAUSABLE,ACCEPTS_SHUTDOWN) WIN32_EXIT_CODE : 0 (0x0) SERVICE_EXIT_CODE : 0 (0x0) CHECKPOINT : 0x0 WAIT_HINT : 0x0 PID : 1260 FLAGS : C:\> sc qc dhcp [SC] GetServiceConfig SUCCESS SERVICE_NAME: dhcp TYPE : 20 WIN32_SHARE_PROCESS START_TYPE : 2 AUTO_START ERROR_CONTROL : 1 NORMAL BINARY_PATH_NAME : C:\WINDOWS\system32\svchost.exe -k netsvcs LOAD_ORDER_GROUP : TDI TAG : 0 DISPLAY_NAME : Klient DHCP DEPENDENCIES : Tcpip : Afd : NetBT SERVICE_START_NAME : LocalSystem M M Jak vidíme, mezi prvními dvěma výpisy není velký rozdíl, v druhém máme navíc dva poslední řádky (PID procesu, ve kterém služba běží, a pak příznaky, ale tato služba žádné nemá). Oproti tomu třetí výpis již odlišný je. Dozvíme se v něm tak důležité věci jako je třeba typ spuštění služby (automaticky), příkaz, kterým je spuštěna, skupina, pořadí při spouštění, zobrazované jméno (česky), závislosti a účet, pod kterým je služba přihlášena. Závislosti opačným směrem tedy které služby závisejí na této službě zjistíme takto: C:\> sc enumdepend dhcp Enum: entriesread = 0 Na této službě tedy žádná jiná služba nezávisí. Jinak je tomu například u služby Správce zabezpečení účtů (samss): C:\> sc enumdepend samss Enum: entriesread = 1 SERVICE_NAME: MSDTC DISPLAY_NAME: Koordinátor DTC TYPE : 10 WIN32_OWN_PROCESS STATE : 1 STOPPED (NOT_STOPPABLE,NOT_PAUSABLE,IGNORES_SHUTDOWN) WIN32_EXIT_CODE : 1077 (0x435) SERVICE_EXIT_CODE : 0 (0x0) CHECKPOINT : 0x0 WAIT_HINT : 0x0 M M

114 4.2 WBEM 106 Úkoly 1. Vyzkoušejte dotazovou variantu příkazu sc, podle výše uvedených ukázek použití. 2. Najděte v nápovědě celkovou syntaxi příkazu sc. Zjistěte, jak lze některou běžící službu pozastavit a pak znovu odblokovat. C 4.2 WBEM Princip a implementace WBEM WBEM (Web-Based Enterprise Management) je skupina technologií a postupů vytvořená za účelem sjednotit správu distribuovaných počítačových prostředí (tj. včetně vzdálené správy, ale také lokálně na jednom počítači). Správa se provádí bud přes webové rozhraní nebo pomocí specializovaných shellů. Data jsou organizována v modelu CIM (Common Information Model), což je vlastně objektově orientovaná databáze, kde jednotlivé objekty jsou zapouzdřeny a přistupuje se k nim přes unifikované rozhraní. CIM je otevřený standard, tedy je možné ho jakkoliv využívat a dále upravovat. Rozlišujeme WBEM server (ukládá a poskytuje informace, provádí příkazy) a WBEM klienta (reprezentován především rozhraním, se kterým pracuje administrátor, a příslušným API). Klient odesílá žádosti, server konfrontuje se skutečným stavem a provádí je (případně zajišt uje proces autentifikace a autorizace). Spolu komunikují přes protokol HTTP nebo HTTPS. Právě podle těchto protokolů je v názvu web-based. Architektura je postavena na vzoru model obraz. Klient čte data z obrazu, server přistupuje k modelu reprezentovanému skutečným stavem hardwaru a softwaru v síti a při jakékoliv změně modelu aktualizuje obraz. WBEM má více různých implementací, například: WMI (Windows Management Instrumentation) je implementace Microsoftu pro Windows. Umožňuje (i vzdáleně) spravovat počítače s Windows v síti, je předinstalována na všech verzích od Win 2000 (resp. Win ME). Je postavena na VBScriptu a PowerShellu, WMI těmto skriptovacím jazykům poskytuje přístup prakticky k čemukoliv ve Windows. Některé další nástroje, které nejsou instalovány se systémem, je možné stáhnout ze stránek Microsoftu -F2ABDC3ED314&displaylang=en. OpenWBEM od Novellu je implementace určená pro Novell Netware, Linux a některé jiné Unixové systémy (včetně Solarisu a MacOSX). Je používána v komerční i nekomerční sféře a stejně jako WMI nabízí rozsáhlé možnosti zásahů do konfigurace sítě a monitorování. Je ke stažení na OpenPegasus je další otevřená implementace pro různé Unixové systémy včetně Linuxu, a Windows. Je ke stažení na P

115 4.2 WBEM WMI Jak bylo výše uvedeno, WMI je implementace modelu WBEM pro správu Windows. Databáze CIM je taktéž objektová, oproti poměrně primitivním objektům, o kterých jsme se učili dříve, jde o objekty plnohodnotné s implementací tříd, vlastností, metod, událostí, využívající dědičnost a kompozici. Třídy jsou psány v objektovém jazyce MOF (Managed Object Format), který je interpretovaný (dá se říct skriptovací). Většina komponent WMI (včetně tříd) je v adresáři...\system32\wbem. Najdeme tam hodně souborů s příponou MOF. Pokud nás zajímá, jak vlastně vypadají třídy WMI, můžeme se na ně podívat v nástroji, který je součástí Windows od verze XP. WbemTest se spouští příkazem wbemtest a má grafické rozhraní. Po spuštění se objeví základní okno, které vidíme na obrázku 4.3. P Obrázek 4.3: Úvodní okno aplikace WbemTest Nejdřív je nutné se připojit k určitému oboru názvů (zobrazuje se v levém horním rohu okna), na obrázku 4.3 jsme připojeni k oboru názvů CIMV2 (k oboru názvů se jednoduše připojíme tak, že klepneme na tlačítko Připojit a zadáme název). Pak můžeme volně pracovat se třídami, které do zvoleného oboru názvu patří (také vytvářet nové). Pokud si chceme prohlédnout (nebo upravit) vlastnosti některé třídy daného oboru názvů, klepneme v hlavním Obrázek 4.4: Stanovení třídy okně na tlačítko Výčet tříd. Zobrazí se dialogové okno (obrázek 4.4), do kterého bud zadáme přímo název třídy, a nebo zvolíme rekurzivní výčet (to znamená, že budou vypsány všechny třídy z oboru názvů). V seznamu pak poklepeme na vybranou třídu a zobrazí se okno se všemi jejími vlastnostmi a metodami (obrázek 4.5). Kromě výše uvedeného nástroje WbemTest lze ke službě WMI přistupovat přes konzolu Řízení

116 4.2 WBEM 108 Obrázek 4.5: Vlastnosti zvolené třídy Win32_Process ve WbemTest služby WMI. Spouštíme ji souborem wmimgmt.msc, ale je dostupná také v konzole Správa počítače, jak vidíme na obrázku 4.6. V kontextovém menu položky Řízení služby WMI zvolíme Vlastnosti a získáme okno, které vidíme na obrázku 4.6 vpravo. Nastavujeme obecné vlastnosti řízení WMI jako je způsob protokolování a umístění protokolu, zálohování (máme možnost obnovit databázi WMI ze zálohy) a určujeme zabezpečení prvků databáze. Dalším velmi užitečným nástrojem pro řízení WMI je program wmic.exe, kterému se budeme podrobněji věnovat dále. Pomocí tohoto nástroje můžeme přistupovat k databázi WMI a získávat z ní nejrůznější informace. Na webu Microsoftu lze získat WMI Administrative Tools, 2 což je balík několika nástrojů pro práci s WMI objekty. Je užitečný zejména pro programátory služeb, v nástrojích balíku se dostaneme prakticky k jakýmkoliv informacím, navíc přehledně a srozumitelně členěným. Rozhraní WMI se velmi často používá ve skriptech (pomocí VB skriptu se takto dostaneme prakticky k čemukoliv, co na počítači potřebujeme, i přes sít ). Skripty můžeme vytvářet bud ručně, a nebo v některém nástroji pro generování WMI skriptů. Hodně používané jsou například WMI Code Creator 3 generuje skripty v jazycích VB Script, Visual Basic.NET a C#, Scriptomatic. 4 2 WMI Administrative Tools získáme na adrese db-8cc5-f2abdc3ed314&DisplayLang=en. V balíku najdeme nástroje WMI Object Browser (zobrazuje objekty v hierarchické struktuře i jejich metody, metody můžeme i spouštět), WMI CIM Studio (pro práci s třídami), WMI Event Registration Tool a WMI Event Viewer (pro práci s událostmi objektů). 3 WMI Code Creator je dostupný na stránce 64-EA DA4-55BBC145C30E&displaylang=en. 4 Scriptomatic získáme na adrese B7EB-783B0F7D1178&displaylang=en.

117 4.2 WBEM 109 Obrázek 4.6: Vlastnosti v konzole Řízení služby WMI Zatímco ve Windows 2000 se rozhraní WMI spouštělo jako služba s vlastním procesem, od verze XP (Server 2003) jde o službu spouštěnou v rámci procesu svchost.exe. Kdykoliv se spouští něco souvisejícího s WMI (například požadavek na data z databáze CIM), kód je spouštěn v procesu wmiprvse.exe, který je potomkem procesu hostícího službu RPC. Úkoly 1. V adresáři...\system32\wbem si vyberte některý MOF soubor (raději více) a prozkoumejte syntaxi jazyka jak se deklarují třídy, instance a metody. 2. Spust te WbemTest a připojte se k oboru názvů CIMV2. Prohlédněte si některou ze tříd, které jsou takto přístupné. 3. V konzole Řízení služby WMI zjistěte, jak je momentálně nastaveno protokolování a zálohování této služby. C Program wmic Program wmic (WMI Console) je dostupný od verze Windows XP/Server Umožňuje využívat rozhraní WMI na příkazovém řádku. pracuje ve dvou režimech klasickém (externím) a interaktivním. Při použití v klasickém režimu zadáváme příkaz začínající názvem programu (wmic) následovaný parametry, do interaktivního režimu se dostaneme zadáním příkazu wmic bez dalších parametrů (prompt se změní na wmic:root\cli> a zadáváme interní příkazy). Nápovědu získáme bud v grafickém režimu, nebo příkazem wmic /?, a nebo v interaktivním režimu této konzoly příkazem /?. Ještě podrobnější nápovědu zobrazíme příkazem /?:FULL.

118 4.2 WBEM 110 Příkaz wmic je velmi komplexní. Má tuto syntaxi: WMIC přepínače předmět sloveso parametry, kde přepínače nastavují obecné chování příkazu, mohou být například /node:počítač příkaz bude proveden na zadaném počítači (před názvem počítače nebudeme dávat opačná lomítka) /user:uživatel při vyhodnocování bude použit zadaný uživatel s jeho přístupovými oprávněními (budeme dotázáni na heslo) /output:soubor výpis bude směrován do zadaného souboru předmět (také alias) určuje to, s čím chceme manipulovat nebo na co se dotazujeme, následuje zkrácený seznam (všechny možnosti zjistíme v nápovědě): bios bootconfig cpu dcomapp desktop diskdrive fsdir irq job memlogical memphysical netuse NIC NICConfig NTEvent onboarddevice OS pagefile printer process registry service share temperature useraccount sloveso určuje požadovanou akci, která má být provedena s předmětem: LIST toto sloveso lze použít na všechny předměty, zobrazí obecnou informaci o předmětu, můžeme upřesnit, jak podrobné informace chceme (full všechny, brief základní v tabulce, writeable které lze měnit, atd.), GET získání podrobnějších informací o všech nebo vybraných vlastnostech předmětu, SET změna vlastností předmětu, ASSOC vrátí instance zadaného objektu (tedy s ním asociované), CREATE, DELETE vytvoření nové instance, odstranění instance nebo třídy, CALL spuštění metody zadané třídy WMI. Příkaz v neinteraktivním režimu používáme takto: wmic bios list wmic os list brief vypíše se informace o BIOSu (úplná) stručná informace o operačním systému ve formě tabulky wmic os list full úplná informace o operačním systému ve formě seznamu, výstup (zkrácený) bude vypadat nějak takto: BootDevice=\ Device\ HarddiskVolume1 BuildNumber=2600 BuildType=Multiprocessor Free CodeSet=1250 CountryCode=420 CSDVersion=Service Pack 3 CSName=nazevpocitace CurrentTimeZone=60 Debug=FALSE... FreePhysicalMemory=49996 M

119 4.2 WBEM 111 FreeSpaceInPagingFiles= FreeVirtualMemory= MaxNumberOfProcesses=-1 MaxProcessMemorySize= Name=Microsoft Windows XP Professional C:\ WINDOWS \ Device\ Harddisk0\ Partition1... SystemDevice=\ Device\ HarddiskVolume1 SystemDirectory=C:\ WINDOWS\ system32 SystemDrive=C: TotalSwapSpaceSize= TotalVirtualMemorySize= TotalVisibleMemorySize= Version= WindowsDirectory=C:\ WINDOWS Z výstupu se dá vyčíst poměrně hodně o nastaveních operačního systému (ve skutečnosti by tam bylo mnohem více řádků, z bezpečnostních a kapacitních důvodů je výstup značně zkrácen). Všimněte si řádku MaxNumberOfProcesses=-1. To znamená, že není omezen počet spouštěných procesů (například u Vista Starter by tady bylo jiné číslo). wmic diskdrive get model,size,interfacetype,mediatype příkaz zobrazí seznam všech pamět ových zařízení (i výměnných), a to vlastnosti z výčtu oddělené čárkou, výstup: InterfaceType MediaType Model Size IDE Fixed hard disk media ST AS wmic /output:d:\procinfo.txt cpu get do zadaného souboru wmic cpu get > D:\procinfo.txt totéž informace o procesoru (v tabulce) budou uloženy wmic service where state= running get caption, name vypíše seznam běžících služeb (pouze ty vlastnosti, které byly specifikovány), všimněte si syntaxe podobné SQL (ostatně pracujeme s databází) wmic process call create notepad.exe process pro vytvoření procesu) spustí zadaný proces (zavolá proceduru create třídy wmic /node:počítač process call create notepad.exe totéž, ale na jiném počítači (to příkaz start neumí), název počítače se zadává bez úvodních opačných lomítek wmic os call reboot restart systému wmic /node:počítač os call shutdown wmic service spooler call startservice vzdálené vypnutí systému spustí zadanou službu (Zařazování tisku) wmic /node:ucetni process where name= explorer.exe call terminate zadaný proces bude ukončen, a to na uvedeném počítači (vypadá to, že účetnímu bude ukončeno grafické prostředí, ale tento proces se obvykle po ukončení znovu spustí, tedy jde vlastně o restart grafického prostředí) wmic /node:ucetni /user:dadmin process where name= explorer.exe call terminate totéž jako předchozí, ale v příkazu na zadaném počítači vystupujeme s přístupovými oprávněními zadaného uživatele M

120 4.2 WBEM 112 Vidíme, že můžeme používat i dotazy filtrované podle vlastností (where) podobně jako v SQL. Pokud se jedná o řetězcovou hodnotu, musíme ji uzavřít do uvozovek (například name= explorer.exe, ale čísla nebo hodnoty true/false do uvozovek neuzavíráme. Příklad 4.3 Ukážeme si práci v interaktivním módu. wmic os /? os list /? os list brief os list full spustíme interaktivní režim, prompt je wmic:root\cli> dotážeme se, co lze použít na předmět os (operační systém) chceme upřesnit parametry pro sloveso list získáme tabulku s několika základními informacemi získáme seznam (už ne tabulku) s dvojicemi vlastnost=hodnota os list free tabulka s hodnotami volného místa (ve fyzické paměti, v stránkovacích souborech, ve virtuální paměti) /output:d:\procinfo.txt cpu list full totéž, ale místo široké tabulky máme v souboru seznam položek vlastnost=hodnota (při takovém množství je to poněkud přehlednější) cpu get /? zeptáme se, co se dá zjistit o procesoru cpu get NumberOfLogicalProcessors získáme údaj o počtu logických procesorů (počet jader nebo jeho dvojnásobek, pokud procesor podporuje hyperthreading) vy- cpu get AddressWidth,Caption,CurrentClockSpeed,DataWidth,Description,ExtClock píše se tabulka s vybranými sloupci process get vypíše se seznam běžících procesů, u každého je příkaz, kterým byl spuštěn (všimněte si, že v seznamu je i wmiprvse.exe, který zajišt uje vyhodnocování dotazů na WMI) process list brief process where ThreadCount>8 list brief které mají více než 8 vláken service get name,state,servicetype získáme tabulku procesů s některými informacemi získáme seznam interaktivních slu- service where desktopinteract=true get name,state žeb (všimněte si, že u neběžících služeb je PID=0) podobný výstup, ale vypíšou se pouze procesy, vypíše se tabulka s názvy, stavy a typy služeb service where (desktopinteract=true and startmode= auto ) get name,processid výběrová kritéria můžeme kombinovat (jako v SQL), ale v tom případě je uzavřeme do závorky service where desktopinteract=true get name,processid,status /every:5 takto zajistíme, že dotaz bude automaticky opakován v intervalu 5 sekund (stisknutím některé klávesy opakování přerušíme) quit konec, ukončíme interaktivní režim, změní se prompt a přesuneme se do Příkazového řádku (funguje také příkaz exit) do souboru se uloží hodně široká tabulka vlastností pro- /output:d:\procinfo.txt cpu get cesoru

121 4.3 SPRÁVA PROCESŮ 113 Úkoly 1. Vyzkoušejte práci v interaktivním módu příkazu podle příkladu Najděte seznam všech předmětů (aliasů) pro příkaz wmic. V nápovědě v grafickém rozhraní jsou témata pro wmic značně rozházená, můžete použít například wmic /?. 3. Zjistěte, co vše lze zjistit v předmětech (aliasech) csproduct, datafile, memphysical, netprotocol, recoveros, registry, voltage. 4. Pomocí wmic zjistěte veškeré informace o řadičích sít ového rozhraní (plný výpis), přesměrujte do souboru a ten potom prostudujte. 5. Vypište všechny běžící procesy, jejichž PID je větší než C 4.3 Správa procesů Z předchozího semestru víme, že k úlohám můžeme přistupovat pomocí Správce úloh a nebo jiného nástroje, který si doinstalujeme (například Process Explorer). Nástrojů s grafickým rozhraním pro práci s procesy existuje poměrně hodně Procesy ve Windows NT Proces je instance programu, aplikace nebo služby systému (což je ostatně obvykle také nějaký program), která má přiděleny určité zdroje (pamět, čas procesoru apod.). V 32bitových verzích Windows jádro nepracuje přímo s procesy, ale s jejich vlákny. Každý proces má minimálně jedno vlákno, vlákna samotná provádějí výpočty. Každý proces má P tabulku deskriptorů objektů, což je vlastně odkaz na zdroje, které má k dispozici, vlastní adresový prostor, který byl přidělen správcem paměti (správcem virtuálních počítačů), spustitelný program (kód a globální data), přístupový token pro určení jeho přístupových oprávnění. Každé vlákno má 2 zásobníky (pro uživatelský a privilegovaný mód), sadu registrů, které obsahují stav procesoru, soukromou ukládací oblast v paměti používanou podsystémy a knihovnami DLL. Ve Windows NT vlákna pracují v preemptivním multitaskingu. Nový proces může být vytvořen spuštěním programu nebo voláním API funkce CreateProcess(). Pokud to není proces typu Win32, je spuštěn odpovídající podsystém, pokud se tak ještě nestalo (POSIX, OS/2,... ). Spouštěný proces pak tomuto podsystému předá. U DOS a Win16 procesů je vytvořen virtuální stroj.

122 4.3 SPRÁVA PROCESŮ 114 Hlavní vlákno procesu je spuštěno podle hlavního kódu procesu hned po vytvoření procesu, ale všechna ostatní vlákna jsou spuštěna API funkcí CreateThread() s kódem některé k tomu účelu naprogramované funkce. Může to být funkce uvnitř spustitelného souboru procesu a nebo funkce z některé dynamicky linkované knihovny. Adresu funkce spuštěného vlákna zjistíme například v Process Exploreru ve vlastnostech procesu na kartě Threads. Na této kartě je kromě jiného pro každé vlákno číslo TID (Thread ID, číslo vlákna) a adresa funkce vlákna (obvykle název souboru s číslem označujícím vzdálenost funkce v kódu od začátku souboru). Na této kartě se také nachází tlačítko Stack, přes které se dostaneme k zásobníku vlákna. Tlačítko Kill umožňuje násilně ukončit vlákno nebo proces a tlačítko Suspend vlákno či proces uspí. Podsystém SMSS (Session Manager Subsystem) je správce relací uživatelů. Jeho souborem je smss.exe. Jako jeden z mála procesů není napojen na žádnou stanici oken. Tento proces řídí všechny relace na počítači. Obrázek 4.7: Vlastnosti vlákna procesu v Process Exploreru LSASS (Local Security Authority Subsystem) je podsystém, který udržuje informace o všem, co se týká zabezpečení systému a právě zde běží všechny procesy ověřování přístupu, také spravuje Místní zásady zabezpečení a některé další zásady. Tento podsystém používá databáze SAM (Security Account Manager), ve kterých jsou uloženy informace o uživatelských účtech a účtech skupin, a to bud databázi SAM na lokálním počítači(součást registru, v samostatném souboru) nebo v doméně. V podsystému Win32 běží i některé systémové procesy (všechny, které jsou interaktivní). Je fyzicky uložen ve dvou souborech část běžící v uživatelském režimu je v souboru csrss.exe, část běžící v režimu jádra je v souboru win32k.sys (je trochu zvláštní, že handle souboru win32k.sys nikdo nevlastní). Velmi důležitý proces, který se však ve Správci úloh neobjeví, je ntldr (NT Loader, soubor bez přípony). Po spuštění počítače je spuštěn jako první proces a jeho úkolem je načíst (load) celý operační systém. Spouští také proces smss (Session Manager, smss.exe), který pak má na starosti další provoz systému (viz kapitolu 6.2 Start systému). Proces, který se ve většině nástrojů zobrazuje jako System, nás v zobrazení procesů může překvapit. V Process Exploreru vidíme, že v hierarchické struktuře je předkem prakticky všech systémových procesů. Pokud si zobrazíme vlastnosti tohoto procesu, zjistíme, že nemá žádný spustitelný soubor, ale přesto v něm běží hodně vláken. Vlákna mají svůj kód bud v souboru ntoskrnl.exe (to je hlavní soubor jádra) nebo v různých souborech s příponou SYS (to znamená ovladače). Tento proces je hostitelem vláken mnoha ovladačů ovladače běžící v režimu jádra totiž většinou (ne vždy) nemají žádný vlastní proces. P

123 4.3 SPRÁVA PROCESŮ 115 Další záhadné procesy, které vidíme v Process Exploreru, jsou označeny jako Interrupts a DPCs. Ve skutečnosti vůbec nejde o procesy (ostatně, nejen že nemají žádný spustitelný soubor, ale dokonce ani vlákna ani přidělené prostředky), slouží k informování o čase, který systém stráví obsluhou hardwarových přerušení a volání procedur DPC (Deferred Procedure Call, což je pozdržené volání procedur obvykle pro provádění té části kódu obsluhy přerušení, která moc nespěchá ). Pokud v těchto dvou položkách najdeme vyšší hodnoty než obvykle, znamená to obvykle nějaký problém s hardwarem nebo ovladačem. Úkoly 1. Spust te Process Explorer a prohlédněte si vlastnosti položek Interrupts, DPCs, System, dále všech zbylých systémových procesů a některého uživatelského procesu. Všímejte si zejména vláken procesu, přidělených prostředků (včetně paměti) a uživatelského účtu, pod kterým běží (včetně SID). Všimněte si, že položky Interrupts a DPCs mají také SID. Jaké? Komu asi patří? 2. U některého procesu s více vlákny (například services.exe) ve vlastnostech na kartě Threads si vyberte některé vlákno a zobrazte jeho zásobník. 3. Spust te některý jednoduchý program, třeba Poznámkový blok nebo Kalkulačku. Pak najděte jeho záznam v Process Exploreru a uspěte ho (nápověda: uspání je zde myšleno jako suspendování, hledejte na kartě Performance). Pokuste se proces ukončit standardním způsobem, když to nepůjde, tak ho v Process Exploreru zabijte (násilně ukončete). C Úlohy a procesy Úloha je přesně vzato abstraktní zadání, které je třeba provést, ale tento pojem se v praxi používá i pro sadu procesů, které definovaným způsobem spolupracují na řešení tohoto zadání. Úlohu můžeme prostě brát jako zobecnění činnosti a reprezentace procesů. Vztah mezi procesy patřícími do jedné úlohy bývá často typu rodič potomek (ale pokud mezi dvěma procesy je vztah rodič potomek, neznamená to automaticky, že patří do stejné úlohy). V angličtině se poněkud chaoticky používají dva pojmy job a task. Obojí znamená úloha, jen v trochu jiném kontextu. Pojem task souvisí většinou s plánováním, zatímco job používáme v souvislosti s tiskovými úlohami a také s úlohami coby abstrakcí procesů (nebo skupin procesů). Ve většině případů platí, že v jedné úloze je pouze jeden proces. Nemusí tomu tak být vždy, ukázku vytvoření více procesů sdílejících jednu úlohu máme v příkladu 4.5 na straně 121 (ve Windows XP). Tam je popsán jeden z mála způsobů, jak vytvořit proces, jehož úlohu lze nějakým způsobem ovlivňovat (například přidávat do úlohy další procesy). Podpora úloh v tomto smyslu je však ve Windows zabudována až od verze XP/Server Ve Windows do verze 2000 sice najdeme nástroj Správce úloh (mstask.exe, těžko říct, proč vlastně má ve svém názvu pojem úloha ), který, jak víme, spouštíme bud z přihlašovacího okna, nebo z kontextového menu hlavního panelu a nebo klávesovou zkratkou Ctrl+Shift+Esc, ale není tam prakticky nic dalšího, co s úlohami souvisí. Pojem úloha se také používá v souvislosti s tiskem nebo plánováním spouštění procesů. P

124 4.3 SPRÁVA PROCESŮ 116 Alternativ ke Správci úloh je mnoho. Kromě nám již známého Process Exploreru můžeme používat například tyto správce procesů: Task Patrol ( Ultimate Process Manager ( content&task=view&id=13&itemid=45), Process Lasso, ( DTaskManager (spolu s dalšími aplikacemi na Security Process Explorer ( Daphne ( System Explorer ( pozor, hned za Download jsou odkazy Google a až pak odkaz na stránku pro stahování. Výše uvedené aplikace nejsou všechny stejné. Vždy nabízejí alespoň takovou funkčnost jako má správce úloh (plus mínus), další mají vylepšené bezpečnostní funkce, rozšířenou podporu sítě, třídění procesů, rozsáhlost informací, které lze zjistit o procesech, některé se nemusejí instalovat (portable, přenosná, varianta) atd. Všechny jsou bud volně šiřitelné nebo mají volně dostupnou verzi. S úlohami můžeme pracovat pomocí nástroje tasklist. Slouží k výpisu úloh (také podle vybraných kritérií), a to na místním nebo vzdáleném počítači. tasklist zobrazí seznam běžících procesů (úloh) na místním počítači (název, PID, relaci, přidělenou pamět ) tasklist /S počítač totéž, ale pracujeme s procesy na zadaném počítači tasklist /V zobrazené informace jsou podrobnější přidají se sloupce pro stav procesu, jeho vlastníka (uživatelský účet), čas procesoru a titulek tasklist /SVC tasklist /M tasklist /M icmp.dll k procesům se vypíšou i služby, které v nich běží ke každému procesu zjistíme dynamicky linkované knihovny, které používá takto zjistíme, které procesy používají zadanou knihovnu tasklist /fi imagename eq svchost.exe používáme filtr chceme pouze procesy, u nichž je název spustitelného souboru svchost.exe (spustitelný soubor se nazývá image) chceme všechny procesy běžící pod sys- tasklist /fi username eq NT AUTHORITY\SYSTEM témovým účtem tasklist /fi memusage le chceme procesy, které zabírají maximálně kb paměti (le znamená less or equal, menší nebo rovno), kromě eq a le máme k dispozici operátory ne (není rovno), gt (větší), lt (menší), ge (větší nebo rovno) tasklist /FO list výstup nebude míst formu tabulky, ale seznamu tasklist /FO csv >> proc.csv výstup je ve formátu CSV, který lze importovat do běžných tabulkových editorů včetně Excelu (výstup v tomto formátu obvykle směrujeme do souboru) Procesy a úlohy nemusíme pouze zobrazovat, můžeme je i ukončovat. K tomu slouží příkaz taskkill ( zabíjení úloh). taskkill /pid 5810 ukončí proces se zadaným PID, jde o řádné ukončení podobně jako bychom klepli myší na křížek v pravém horním rohu okna

125 4.3 SPRÁVA PROCESŮ 117 taskkill /F /pid 5810 zabije proces se zadaným PID (F jako Force, silný), použijeme, pokud proces nereaguje a odmítá se nechat ukončit běžným způsobem taskkill /T /pid 5810 ukončení) taskkill /IM firefox.exe i jeho názvem ukončíme nejen zadaný proces, ale i všechny jeho potomky (rekurzívní proces nemusíme zadávat jeho PID, ale pomocí tohoto přepínače taskkill /fi username eq uživatel můžeme používat stejné filtry jako u příkazu tasklist, zde ukončíme všechny procesy pracující pod zadaným uživatelským účtem taskkill /F /fi status eq not responding ukončíme všechny procesy, které neodpovídají, tedy pravděpodobně zamrzly (pozor pravděpodobně, ale ne zcela jistě) Příklad 4.4 Výstup příkazu vypisujícího základní informace o procesech (zkrácený, na místě řádku se třemi tečkami): C:\> tasklist Název procesu PID Název relace Císlo re Využití pame ========================= ====== ================ ======== ============ System Idle Process 0 Console 0 16 kb System 4 Console kb smss.exe 520 Console kb csrss.exe 780 Console kb winlogon.exe 804 Console kb services.exe 848 Console kb lsass.exe 860 Console kb svchost.exe 1028 Console kb... thunderbird.exe 2560 Console kb FreeCommander.exe 2452 Console kb cmd.exe 4020 Console kb procexp.exe 156 Console kb firefox.exe 3060 Console kb cmd.exe 2252 Console kb PDFXCview.exe 1152 Console kb tasklist.exe 244 Console kb M Když budeme chtít podrobnější výpis, použijeme přepínač /v. Záhlaví výpisu je následující (samotný výpis je dlouhý, a navíc dost do šířky): C:\> tasklist /v Název procesu PID Název rel Císlo re Využití pame Stav Uživatelské jméno Cas CPU Titulek okna ============= ===== ========= ======== ============ ======== =================== ======== =============== Nechceme všechno, ale zajímají nás pouze procesy svchost.exe, tedy budeme filtrovat: C:\> tasklist /v findstr /i svchost.exe svchost.exe 1028 Console kb Spušteno NT AUTHORITY\SYSTEM 0:00:00 Není k dispozici svchost.exe 1112 Console kb Spušteno NT AUTHORITY\NETWORK SERVICE 0:00:01 Není k dispozici svchost.exe 1260 Console kb Spušteno NT AUTHORITY\SYSTEM 0:00:30 Není k dispozici M svchost.exe 1336 Console kb Spušteno NT AUTHORITY\NETWORK SERVICE 0:00:00 Není k dispozici svchost.exe 1452 Console kb Spušteno NT AUTHORITY\LOCAL SERVICE 0:00:00 Není k dispozici svchost.exe 768 Console kb Spušteno NT AUTHORITY\LOCAL SERVICE 0:00:00 Není k dispozici M

126 4.3 SPRÁVA PROCESŮ 118 Oproti předchozímu výpisu máme navíc především účet, pod kterým služba pracuje, což už může být cenná informace. Pokud chceme zjistit, které služby běží v různých procesech, zadáme (výstup je zkrácený o procesy, ve kterých žádná služba neběží): C:\> tasklist /svc Název procesu PID Služby ========================= ====== ====================================================... services.exe 848 Eventlog, PlugPlay lsass.exe 860 PolicyAgent, ProtectedStorage, SamSs svchost.exe 1028 DcomLaunch, TermService svchost.exe 1112 RpcSs svchost.exe 1260 AudioSrv, Browser, CryptSvc, Dhcp, dmserver, ERSvc, EventSystem, FastUserSwitchingCompatibility, helpsvc, HidServ, lanmanserver, lanmanworkstation, Netman, RasMan, Schedule, seclogon, SENS, SharedAccess, ShellHWDetection, srservice, TapiSrv, Themes, TrkWks, W32Time, winmgmt, wscsvc, wuauserv, WZCSVC svchost.exe 1336 Dnscache svchost.exe 1452 LmHosts, SSDPSRV AvastSvc.exe 1560 avast! Antivirus spoolsv.exe 2012 Spooler svchost.exe 768 WebClient jqs.exe 1060 JavaQuickStarterService LSSrvc.exe 1424 LightScribeService sqlservr.exe 1380 MSSQL$SQLEXPRESS SMAgent.exe 256 SoundMAX Agent Service (default) sqlwriter.exe 264 SQLWriter wmiapsrv.exe 1352 WmiApSrv alg.exe 2080 ALG... M Jednotlivé procesy svchost.exe lze bohužel rozlišit jen podle jejich PID. Zjištěné PID můžeme využít také k výpisu všech modulů (především dynamicky linkovaných knihoven, ale i dalších namapovaných souborů) daného procesu: C:\> tasklist /m /fi pid eq 848 Název procesu PID Moduly ========================= ====== =================================================== services.exe 848 ntdll.dll, kernel32.dll, snxhk.dll, ADVAPI32.dll, RPCRT4.dll, Secur32.dll, msvcrt.dll, NCObjAPI.DLL, MSVCP60.dll, SCESRV.dll, AUTHZ.dll, USER32.dll, GDI32.dll, USERENV.dll, umpnpmgr.dll, WINSTA.dll, NETAPI32.dll, ShimEng.dll, AcAdProc.dll, IMM32.DLL, Apphelp.dll, VERSION.dll, eventlog.dll, PSAPI.DLL, WS2_32.dll, WS2HELP.dll, wtsapi32.dll M Jde o seznam modulů procesu services.exe, což je systémový proces, který zajišt uje běh služeb. Uživatelský proces by měl zřejmě modulů ještě více.

127 4.3 SPRÁVA PROCESŮ 119 Zvláštní, a ne zrovna populární, skupinou procesů jsou rootkity. Rootkit je program, který dokáže skrýt sebe a případně i jiné soubory a procesy před běžnými metodami zviditelnění (tj. v rozhraní Windows nebo v souborovém systému). Pro odhalování rootkitů v současné době existuje víc nástrojů, všechny obvykle pracují takto: nejdřív sestaví výpis souborů, procesů a klíčů registru běžným způsobem přes knihovny Windows, a pak provedou totéž, ale oklikou přes vlastní knihovny (které mimochodem skrývají před rootkity podobným způsobem jako se rootkity skrývají samy). Potom oba výpisy porovnají a vypíšou položky, které na prvním výpisu nejsou. P Obrázek 4.8: Rootkit Revealer Takto pracuje například Rootkit Revealer od Sysinternals, který je volně ke stažení na webu jeho výstup je na obrázku 4.8. V seznamu najdeme hodně planých poplachů, protože ve skutečnosti se skrývají i nevinné soubory, jako například některé soubory antivirového programu, internetových prohlížečů, ale také některé dočasné soubory. Správa úloh jako takových není pro Windows moc dobře zdokumentována ani využívána, ale výjimky lze najít. Například na najdeme zajímavý článek o naprogramování skutečné správy úloh pod Windows tak, jak běžně funguje v unixových systémech. Úkoly 1. Projděte si nejméně dva správce procesů, se kterými jste zatím nepracovali (stačí projít jejich WWW stránky). Zaměřte se především na odlišnosti v nabízených funkcích oproti Správci úloh a Process Exploreru. 2. Vypište seznam procesů pomocí příkazu tasklist a porovnejte výstup s tím, co zobrazuje Správce úloh. Pak vyzkoušejte různé možnosti formátování výstupu, výstup ve formě CSV (směrujte do souboru) pak otevřete (importujte) v některém tabulkovém editoru. 3. Vyzkoušejte u příkazu tasklist nejrůznější filtry, které je možné použít (celý seznam najdete v nápovědě příkazu nebo na internetu). Bohužel je možné, že v české verzi Windows se u filtrů setkáte s problémy. C

128 4.3 SPRÁVA PROCESŮ Spust te některý jednoduchý program (Poznámkový blok, Kalkulačku apod.). Pomocí příkazu tasklist si prohlédněte vlastnosti této úlohy a pak ji ukončete příkazem taskkill Vztahy mezi procesy Procesy bývají ve většině operačních systémů zařazeny ve stromové struktuře podle vztahu rodič potomek (potomek je proces, který byl spuštěn rodičovským procesem). Každý proces má přiděleno své identifikační číslo PID (Process ID) a zná také PID svého rodiče (PPID, Parent PID). P Windows XP: Windows 98: Obrázek 4.9: Process Explorer ve Windows XP a 98

129 4.3 SPRÁVA PROCESŮ 121 Podobně to funguje i ve Windows. Pokud však už rodičovský proces neexistuje (ukončil svou činnost) a potomci pořád ještě existují, jsou tito potomci zarovnáni doleva, tedy už nemají žádného rodiče. Tím se pojetí struktury procesů liší od unixových systémů, ve Windows mohou existovat i procesy bez rodiče (rodič byl ukončen). Na obrázku 4.9 (v horní části pro Windows XP) vidíme takto zarovnaný proces explorer.exe. Pokud se podíváme na vlastnosti (Properties v kontextovém menu) tohoto procesu, zjistíme, že údaj Rodičovský proces je nastaven na <Non-existent process>(936) (neexistující proces, číslo v závorce znamená PPID před ukončením rodiče). Příklad 4.5 Vyzkoušíme ztrácení rodičů. Postupně provedeme tyto kroky: Spustíme Process Explorer, v něm budeme sledovat vztahy mezi procesy. Zavřeme všechna okna Příkazového řádku, která momentálně máme spuštěna, aby nás nemátla. Do Start Spustit zadáme runas /user:uživatel cmd (zadejte své uživatelské jméno). Budeme dotázáni na heslo, ale než ho zadáme, podíváme se do Process Exploreru. Měl by se tam objevit řádek procesu runas.exe. Zjistíme jeho předka explorer.exe (to lze zjistit ve vlastnostech procesu na kartě Image). Až ted zadáme heslo a potvrdíme. Co se stalo v Process Exploreru? Řádek runas.exe zmizel, ale zato se objevil řádek cmd.exe (pravděpodobně v hnědé barvě), a to pod procesem svchost.exe spouštěným s řetězcem -k netsvcs. Proč? Protože při spouštění programu došlo k autorizaci. Podle očekávání je rodičem nového procesu onen proces svchost.exe. V hlavním menu Process Exploreru, položce Options Configure Highlighting zjistíme, že hnědá barva řádku znamená úlohu, tedy nic nebezpečného. Ve vlastnostech procesu zjistíme, že je navíc jedna záložka, která u většiny ostatních procesů není Jobs (Úlohy). V okně příkazového řádku, který jsme takto spustili, zadáme příkaz cmd (nebo cmd.exe). Zřejmě zůstaneme v tomtéž okně (pravděpodobně nevznikne nové okno), ale v Process Exploreru se objeví nový proces potomek původního procesu cmd. Ted v příkazovém řádku spustíme další program zadáme příkaz notepad. Měl by se spustit Poznámkový blok. Podíváme se do Process Explorera, kam byl zařazen. Můžeme si ověřit u všech tří procesů, že v jejich vlastnostech má karta Jobs stejný obsah. V Process Exploreru klepneme pravým tlačítkem na nejvrchnější proces cmd.exe (tj. první, který jsme spustili, je zarovnaný nejvíc k levému okraji) a v kontextovém menu zvolíme Kill process. Touto volbou proces násilně ukončíme (jsme dotázáni, jestli to myslíme vážně, tedy potvrdíme, že to opravdu myslíme vážně). Odstranili jsme hlavního rodiče celé úlohy (skupiny procesů). Co se stalo? V Process Exploreru ted najdeme oba zbývající procesy dole. Ověříme rodiče procesu. Zobrazíme vlastnosti zbylého procesu cmd.exe, karta Image. Údaj o rodiči bývá aktualizován s velkým zpožděním, takže pokud tam je uveden již ukončený proces, stačí uzavřít a znovu spustit Process Explorer. Správně by místo údaje o rodičovském procesu mělo být <Non-existent Process>(2628), číslo zřejmě bude na vašem počítači jiné. Na obrázku 4.10 na straně 122 je pozice vytvořených procesů ve struktuře, a to nahoře před ukončením prvního procesu cmd a dole po jeho ukončení.

130 4.3 SPRÁVA PROCESŮ 122 Obrázek 4.10: Vztahy mezi procesy PID se používá pouze ve Windows řady NT. Ve Windows s DOS jádrem (včetně Windows 98) nic takového neexistuje (což komplikuje práci programátorům). Na obrázku 4.9 (ve spodní části pro Windows 98) si všimněte ve sloupci s PID procesu poněkud dlouhého údaje místo PID (které neexistuje) se zobrazuje hodnota manipulátoru (handle) hlavního okna Priority procesů Ve Windows se úrovně priorit (celkem 32) dělí na dvě části. Úrovně 1 15 jsou dynamické pro běžné procesy, úrovně jsou pro procesy reálného času: 0 systémová úroveň, používá se pro vlákno nulové stránky (to je pomocný mechanismus probíhající při uvolňování stránek ve fyzické paměti) 1 dynamická nečinná (Idle) kolem 4 Nečinná (Lowest) kolem 6 Nižší než normální (Below-normal) kolem 8 Normální (Normal) kolem 10 Vyšší než normální (Above-normal) kolem 13 (max. 15) Vysoká priorita (Highest) 16 nečinná reálného času kolem 24 Reálného času (Time-critical) 31 časově kritická reálného času P Obvyklé hodnoty priorit jsou následující: 1. Pro uživatelské procesy je obvyklá priorita 8, normální. 2. Pro systémové procesy je obvyklá priorita: 9 Proces řízení služeb SCM (services.exe), proces zabezpečení (lsass.exe) 11 například Správce relací (smss.exe) 13 většina systémových procesů spouštěných ještě před přihlášením kteréhokoliv uživatele, včetně hlavního Podsystému Win32 (csrss.exe) nebo procesu přihlášení uživatele (winogon.exe) 8 ostatní systémové procesy, obvykle ty, které se spouštějí po přihlášení uživatele, a také služby

131 4.3 SPRÁVA PROCESŮ 123 Prioritu procesu můžeme zjistit v těchto nástrojích: 1. Správce úloh (Task Manager) na kartě Procesy je seznam procesů, sloupec Základní priorita (pokud není tento sloupec zobrazen, v menu zvolíme Zobrazit Vybrat sloupce, zatrhneme příslušnou položku) je zde pouze slovní určení priority, 2. Process Explorer zobrazuje také číselnou hodnotu priority, na obrázku 4.9 ji vidíme ve sloupci Priority (v okně Select Columns na záložce Process Performance, položka Base Priority). V obou těchto nástrojích můžeme změnit prioritu procesu (kontextové menu), ale pouze mezi slovními úrovněmi, například Normální (Normal), Vysoká (High), Nízká (Low) apod. (v kontextovém menu procesu). Ve skutečnosti rozlišujeme výchozí a dynamickou číselnou prioritu procesu. Výchozí priorita je nastavena při startu procesu a obvykle se už nemění. Dynamická (momentální) priorita se ve své hodnotě pohybuje kolem výchozí priority (plus mínus několik bodů) a používá se k dynamickému řešení přílišného zvýhodnění nebo naopak znevýhodnění procesu při jeho běhu (například když proces vyčerpá hodnotu času, po který mohl využívat procesor při vyšší prioritě, jeho priorita je snížena, dále se mění priority při práci s I/O prostředky). Výchozí prioritu procesu při jeho spuštění můžeme určit při spuštění z příkazového řádku (případně ze skriptu) pomocí příkazu START (který už známe), například pokud chceme spustit aplikaci Poznámkový blok s nižší výchozí prioritou, zadáme start /LOW notepad.exe Úkoly 1. Spust te Poznámkový blok s nižší prioritou tak, jak bylo výše popsáno, a pak v programu Process Explorer zjistěte číselnou hodnotu priority tohoto procesu. 2. V Process Exploreru nebo Správci úloh snižte prioritu procesu Poznámkového bloku o jeden slovní stupeň. V Process Exploreru se pak podívejte na číselné vyjádření výchozí priority (místo 8 by mělo být 6). 3. V Process Exploreru seřad te procesy podle priorit (stačí klepnout na záhlaví sloupce s prioritami) a zkontrolujte, které procesy mají nejvyšší prioritu. P C Plánování Spouštění procesů můžeme plánovat v grafickém režimu v nástroji Naplánované úlohy (soubor mstask.exe). Ve skutečnosti jde o interaktivní službu (je napojena na stanici oken WinSta0), jejím rozhraním je právě uvedený nástroj. V prostředí Příkazového řádku (a ve skriptu) používáme pro plánování spouštění programů příkaz AT (od verze Windows 2000). Tento příkaz vyžaduje spuštěnou službu plánování procesů. Příkaz umožňuje naplánovat příkazy jednorázově či pravidelně na určité dny v měsíci. Naplánovaný příkaz získá identifikační číslo, které použijeme, když chceme naplánování zrušit. AT (bez parametrů) vypíše seznam naplánovaných příkazů, a to včetně jejich identifikačních čísel

132 4.3 SPRÁVA PROCESŮ 124 AT 6:00 zalohuj.exe v 6:00 ráno (příštího dne, pokud dnes je už po této hodině) se spustí soubor zalohuj.exe AT 16:00 /every:1 make_report.exe každý měcíc prvního v 16:00 spustí program make_report.exe AT 17:00 /every:pá zalohuj.exe každý pátek v 5 odpoledne se spustí zadaný program (v některých verzích se používá anglické značení dnů v týdnu, to zjistíme v nápovědě) v 6:00 ráno spustí zadaný příkaz na daném počítači (vzdá- AT \\počítač 6:00 zalohuj.exe leně) AT 10:30 cmd /c net statistics server > report.txt pokud chceme naplánovat spuštění něčeho jiného než jednoduchého exe souboru bez parametrů, musíme použít příkaz cmd /c (to znamená, že se zadaný příkaz spustí v nově vytvořeném příkazovém řádku, ale hned po provedení příkazu se příkazový řádek uzavře; když chceme, aby okno příkazového řádku zůstalo, použijeme místo /c přepínač /k) AT 3 /delete zruší naplánování příkazu s daným číslem Příklad 4.6 Ukážeme si postup při plánování spouštění příkazů. AT 6:00 zalohuj.exe vytvoříme první plánování, a to jednorázové AT 10:00 /every:1,8,17,26 report.exe další plánování se má provádět každý měsíc, a to v zadaných dnech (první, osmý, atd. den měsíce) AT 17:30 /every:po,st cmd /k chkdsk třetí naplánování znamená spuštění příkazu pro rychlou kontrolu disku, a to každé pondělí a středu (všimněte si přepínače u příkazu cmd) AT vypíšeme všechny naplánované příkazy, výstup: ID stavu Den Cas Příkazový řádek Zítra 6:00 AM zalohuj.exe 2 Každý den :00 AM report.exe 3 Každý den Po St 17:30 PM cmd /k chkdsk M Takto zobrazíme naplánované příkazy na tomto počítači. Kdybychom chtěli zobrazit plán z jiného počítače (třeba na zde oblíbeném počítači účetního), použili bychom příkaz AT \\ucetni AT 2 /delete odstraníme druhou položku, první a třetí zůstanou naplánovány Komplexnějším příkazem (ve Windows od verze XP/Server 2003) je příkaz schtasks (Scheduled Tasks, naplánované úlohy). Jak název napovídá, nepracujeme pouze s příkazy a programy, ale s úlohami. Pomocí tohoto nástroje můžeme (nejen) plánovat spouštění zadaných úloh, procesů a příkazů bud jednorázově nebo pravidelně v zadaný čas a jakkoliv řídit jejich naplánování, a to i na vzdáleném počítači. schtasks /CREATE /SC daily /ST 16:00 /TN Název /TR soubor.exe naplánujeme spouštění úlohy denně vždy v 16 hodin, úloha se jmenuje Název a je spuštěna ze zadaného souboru schtasks /CREATE /? zobrazíme nápovědu k podpříkazu CREATE (to můžeme provést s kterýmkoliv podpříkazem)

133 4.3 SPRÁVA PROCESŮ 125 schtasks /QUERY schtasks /QUERY /S počítač získáme tabulku všech naplánovaných úloh na našem počítači totéž, ale na zadaném počítači schtasks /QUERY /FO list výpis nebude ve formě tabulky, ale jako seznam (oproti tabulce získáme některé informace navíc způsob spouštění a název hostitelského počítače) schtasks /QUERY /TN Název /FO list vypíše se informace o zadané úloze schtasks /CHANGE /TN Antivirová kontrola /TR C:\antivir.exe zadaná úlo- ha už existuje, ale chceme ji pozměnit změníme program, který se má v dané úloze spustit schtasks /RUN /TN Antivirová kontrola zadaná úloha bude spuštěna okamžitě, bez ohledu na nastavení plánování úloh (mohli bychom spustit přímo spustitelný soubor, ale zde můžeme využít vytvořené definice úloh) okamžité ukončení běžící úlohy (ale napláno- schtasks /END /TN Antivirová kontrola vaná zůstane) schtasks /DELETE /TN Úloha /S počítač odstraní naplánování úlohy na zadaném počítači Příklad 4.7 Vytvoříme novou úlohu nejdřív tak, aby při jejím spouštěním musel uživatel zadávat heslo (pokud se jedná o úlohu s potřebou vyšších oprávnění), a pak podobnou úlohu tak, aby uživatel heslo zadávat nemusel (úloha poběží na pozadí). schtasks /CREATE /S ucetni /SC daily /ST 16:00 /TN Monitorovani /TR c:\prog\monitoring.exe vytvoříme novou naplánovanou úlohu s názvem Monitorovani, která se má provést na počítači s názvem ucetni, a to denně vždy v 16 hodin, uživatel bude pokaždé dotázán na heslo. Získáme hlášení: Úspěch: Naplánovaná úloha Monitorovana byla úspěšně vytvořena. schtasks /QUERY /S ucetni podobného: zobrazí se tabulka naplánovaných úloh na zadaném počítači, něco... Složka: \ Název úkolu Čas příštího spuštění Stav ========================================================================= Monitorovani :00:00 Připraveno... M Složka: \Microsoft\Windows\Defrag Název úkolu Čas příštího spuštění Stav ========================================================================= ScheduledDefrag :00:00 Připraveno Složka: \Microsoft\Windows\DiskDiagnostic Název úkolu Čas příštího spuštění Stav ========================================================================= Microsoft-Windows-DiskDiagnosticDataColl :00:00 Připraveno Microsoft-Windows-DiskDiagnosticResolver Zakázáno...

134 4.3 SPRÁVA PROCESŮ 126 schtasks /query /S ucetni /FO list /tn Monitorovani zobrazí informaci o zadané úloze, a to na počítači účetního a navíc ve formátu seznam (výchozí formát je tabulka, kterou jsme viděli v předchozím výpisu). Výsledek: Složka: \ Název hostitele: UCETNI Název úkolu: \Monitorovani Čas příštího spuštění: :00:00 Stav: Připraveno Režim přihlášení: Pouze interaktivně schtasks /CREATE /SC daily /ST 16:00 /RU uživatel /RP /TN Monitorovani2 /TR c:\prog\monitoring.exe vytvoříme úlohu Monitorovani2 tentokrát na lokálním počítači spouštěnou ve stejném čase jako předchozí (také má stejný spustitelný soubor), ale úloha bude spouštěna s přístupovými oprávněními zadaného uživatele, heslo zadáváme pouze nyní (uživatel není pravidelně obtěžován žádostí o heslo, které ani nemusí znát) zobrazíme informaci o zadané úloze ve for- schtasks /query /FO list /tn Monitorovani2 mátu seznam. Výsledek: Složka: \ Název hostitele: NOTEBOOK Název úkolu: \Monitorovani2 Čas příštího spuštění: :00:00 Stav: Připraveno Režim přihlášení: Interaktivně nebo na pozadí M M Podrobné informace o příkazu schtasks získáme bud z nápovědy příkazu (běžným způsobem, který známe od jiných příkazů) a nebo na adrese schtasks.mspx?mfr=true Naplánovat se dá také vypnutí, restart či uspání počítače (také vzdáleně) a nebo odhlášení uživatele. K tomuto účelu můžeme použít příkaz shutdown, který najdeme v různých verzích Windows (kromě variant Home pro Windows do verze XP včetně). shutdown /L odhlášení právě přihlášeného uživatele shutdown /s /m \\počítač vypne zadaný počítač (parametr /s určuje vypnutí, další parametr umožňuje zadat cílový počítač) shutdown /r shutdown /h shutdown /s /t 5 restart hibernace (pouze ve verzích, které hibernaci umožňují) je nastaven časový limit 5 sekund, po něm se počítač automaticky vypne

135 4.4 KOMUNIKACE MEZI PROCESY 127 Úkoly 1. Naplánujte spuštění programu kontrola.exe tak, aby se spouštěl každý pátek ve 4 hodiny odpoledne. Pro naplánování použijte postupně oba příkazy (i ten starší, který lze použít také na Windows 2000). U novějšího příkazu nazvěte úlohu Kontrola. 2. Proved te totéž co v předchozím úkolu, ale vzdáleně na počítači \\sekretarka. Pokud nemáte možnost plánovat spouštění na jiných počítačích než na tom, u kterého sedíte, použijte název svého počítače pamatujete si, jak ho zjistit? 3. Zjistěte, jaké údaje jsou uloženy o naplánování provedeném v předchozích dvou bodech (tj. zobrazte informace o naplánovaných příkazech/úlohách). U příkazu schtasks vyzkoušejte tabulkové i seznamové zobrazení naplánované úlohy. 4. Odstraňte naplánování všech příkazů/úloh, které jste vytvořili v předchozích úkolech. 5. Vyzkoušejte své odhlášení pomocí příkazu, ke konci práce s počítačem také restart nebo vypnutí pomocí příkazu. C 4.4 Komunikace mezi procesy Schránka Ke schránce (clipboard) máme přístup obvykle přes menu různých programů (kopírování apod.), ale také přes aplikaci Prohlížeč (sít ové) schránky (soubor clipbrd.exe). Tato aplikace v některých variantách Windows není standardně nainstalována, ale lze ji doinstalovat z instalačního CD. Obrázek 4.11: Zkopírovaný text (vlevo) a obrázek (vpravo) ve schránce Ve schránce mohou být tatáž data v několika různých formátech. Každý tento formát má své označení. Existují standardní formáty, například pro jednoduchý text bez formátování nebo pro obrázek, aplikace si ale mohou vytvářet vlastní formáty.

136 4.4 KOMUNIKACE MEZI PROCESY 128 Úkoly 1. Otevřete aplikaci, přes kterou máte přístup ke schránce (Prohlížeč sít ové schránky). Dále otevřete Poznámkový blok, cokoliv v něm napište a zkopírujte. Sledujte, co se děje v aplikaci schránky (může být otevřeno více podoken, nás zajímá podokno Schránka ). Potom otevřete Malování, cokoliv v něm nakreslete a obrázek zkopírujte do schránky ( Ctrl+A, pak Ctrl+C ). Opět se podívejte na obsah schránky. 2. V aplikaci Prohlížeč sít ové schránky si vyzkoušejte připojení ke schránce na jiném počítači. C DDE DDE (Dynamic Data Exchange, Dynamická výměna dat) je technologie umožňující komunikaci mezi procesy (je ve Windows už od verze 2). Jeden program může žádat data od druhého, aniž by to vyžadovalo zásah uživatele, jde tedy o dynamickou formu sdílení dat. Jeden proces (Server) poskytuje data druhému procesu (Klientovi). Oba komunikující procesy (Server i Klient) musí být spuštěny. Aplikace takto mohou sdílet určitý objekt a komunikovat na jednom nebo více kanálech. Implementace DDE částečně závisí na aplikacích data se po změně v aplikaci Server v aplikaci Klient aktualizují bud ihned nebo až po uložení v aplikaci Server. Aktivita může být na straně Klienta (zjišt uje u Serveru, zda došlo k nějaké změně na datech) nebo na straně Serveru (informuje Klienta o změně dat, případně tato data Klientovi rovnou posílá). P Obrázek 4.12: Sdílená položka DDE (DDEShare) Práci s DDE nemusíme nechávat jen na aplikacích, ke sdíleným položkám DDE je přístup také přes aplikaci Sdílená položka DDE (spustíme ji například v Start Spustit, ddeshare.exe ), rozhraní vidíme na obrázku Umožňuje především vytváření DDE vazeb mezi procesy běžícími na různých počítačích v síti, můžeme zde vytvářet nebo mazat sdílené objekty, ale také pracovat

137 4.4 KOMUNIKACE MEZI PROCESY 129 Obrázek 4.13: Vytvoření DDE vazby v OpenOffice.org s přístupovými právy k jednotlivým objektům. Aby mohl být tento nástroj používán, musí běžet obě výše zmíněné služby. V kancelářských aplikacích se s DDE setkáme například při vkládání odkazů. Na obrázku 4.13 je vkládání přes Vložit jinak, pole s proměnným obsahem závislým na obsahu jedné buňky v tabulkovém editoru, obrázku s DDE vazbou a sekce z jiného dokumentu přes DDE. NetDDE je sít ová varianta DDE (sdílení dat pomocí DDE po síti). Až do verze XP byla součástí Windows, ale od verze Vista již není podporována OLE OLE (Object Linking and Embedding) je technologie, která umožňuje vnořit do objektu vytvářeného jednou aplikací objekt vytvořený jinou aplikací nebo vytvořit propojení k takovému objektu. S OLE objekty jsme se seznámili na straně 82 v sekci o modelu COM. Aplikace, které mohou být zdrojem, se nazývají Servery, cíle jsou Klienty. Některé aplikace dokážou být obojí. Narozdíl od DDE můžeme sdílet nejen data, ale obecně různé objekty (všechny OLE objekty jsou implementací rozhraní IOleObject z modelu COM), a pokud je nutné v přijímající aplikaci objekt upravit či s ním jakkoliv pracovat, nechá tuto činnost na poskytující aplikaci. Typický příklad použití je spolupráce internetového prohlížeče (takového, který OLE podporuje) a Adobe Readeru. Pokud v internetovém prohlížeči klepneme myší na odkaz na PDF soubor, prohlížeč vytvoří OLE vazbu k Adobe Readeru a ve svém vlastním okně poskytne prostor pro zobrazení PDF souboru, které ve skutečnosti provede Adobe Reader. OLE také hodně využívají aplikace v balíku P

138 4.4 KOMUNIKACE MEZI PROCESY 130 Microsoft Office při skládání dokumentů z různých druhů objektů, k témuž účelu je používána v OpenOffice.org. Při vnoření objektu se získaný objekt stává součástí vytvářeného dokumentu (obecně souhrnu objektů), vazba je jen nepřímá (je to pouze vazba na aplikaci, která je OLE serverem). Například do dokumentu Wordu vložíme obrázek vytvořený v aplikaci Malování (Paintbrush) pomocí OLE vazby. V samotném Wordu s tímto obrázkem nemůžeme pracovat, ale je zde také odkaz na aplikaci, která dokáže s obrázky pracovat, proto stačí poklepat na obrázek a můžeme ho editovat v nově otevřené instanci aplikace Malování. Po poklepání na obrázek se nastartuje OLE server pro tento druh dat (v našem případě aplikace Malování), po ukončení editace (uložení) se změny provedou i na klientovi (Word). Jiná možnost pro OLE je propojení. Narozdíl od vložení data ve skutečnosti nejsou součástí objektu klienta, ale zůstávají uložena u serveru, u klienta je vytvořena pouze vazba na tato data. V případě provádění změn objektu na straně serveru se změny projeví i na straně klienta. Pokud dokument vytvořený klienem přemístíme, propojený objekt se ztratí, protože zůstal u serverové aplikace. Rozdíl mezi vnořením a propojením je tedy především v umístění objektu, se kterým pracujeme. V kancelářských aplikacích se obvykle k OLE dostaneme v nabídkách souvisejících s objekty. Například v aplikaci OpenOffice.org najdeme Vložit Objekt OLE objekt a získáme okno (obrázek 4.14), ve kterém vybereme mezi vložením existujícího OLE objektu a vytvořením nového. Obrázek 4.14: Vložení OLE objektu v OpenOffice.org S OLE také můžeme pracovat při vkládání částí dokumentů v rámci téhož kancelářského balíku (například v tabulkovém editoru zkopírujeme několik buněk a vložíme je do textového editoru). Programátoři používají OCX (OLE Control extension), což jsou binárně přenosné komponenty obsahující prvky uživatelského rozhraní (lze je používat v různých programovacích jazycích), jsou uloženy v souborech s příponou OCX (jde o dynamicky linkované knihovny). Úkoly 1. Projděte si nástroj Sdílená položka DDE. 2. Vyzkoušejte možnosti DDE a OLE vazeb mezi aplikacemi patřícími do některého kancelářského balíku (MS Office nebo OpenOffice.org). P P P C Zprávy Zpráva může být vytvořena přerušením od nějakého zařízení (například stiskneme klávesu na klávesnici nebo pohneme myší), zprávy si také posílají aplikace navzájem, systém aplikacím nebo aplikace systému (zprávy jsou adresovány oknům aplikací). P

139 4.4 KOMUNIKACE MEZI PROCESY 131 Zasílání zpráv oknům je zřejmě nejtypičtějším způsobem komunikace aplikace ve Windows (pokud ovšem aplikace nějaké okno má běží ve WinSta0). Zprávu aplikaci může zaslat jádro (také například zprávu o ukončení aplikace) nebo jakýkoliv proces, který zná handle okna (zpráva vždy souvisí s oknem). Každá (téměř) Win32 aplikace má svou vlastní frontu zpráv, což má příznivý vliv na stabilitu systému, protože fronta nemůže být blokovaná jinou aplikací. K blokování může dojít u fronty zpráv pro Win16 aplikace (mají jednu společnou) také z důvodu kooperativního multitaskingu aplikace může dostat zaměření jen tehdy, když je k ní směrována nějaká událost, ale pokud aktivní aplikace zamrzne například při práci s frontou zpráv, žádná jiná aplikace se ke zprávám nedostane. Na obrázku 4.15 je nákres cesty zprávy k Win32 a Win16 aplikacím (DOS aplikace zprávy nepoužívají). nová zpráva Proces pro zpracování přerušení Win32 aplikace Win32 aplikace... Win16 aplikace Win16 aplikace... Obrázek 4.15: Fronty pro zpracování zpráv ve Windows 9x/ME/NT Volání procedur Volání procedur jiného procesu je také jedna z možností komunikace mezi procesy. Jeden proces může vyvolat proceduru jiného procesu s předáním skutečných parametrů procedury (přes parametry dochází k výměně dat mezi procesy). Ve Windows rozlišujeme P LPC (Local Procedure Call Volání lokální procedury) pro volání procedury procesu běžícího na stejném počítači, a to v režimu jádra (to znamená, že není implementováno v API, uživatelské procesy takto nemohou komunikovat), slouží například ke komunikaci procesu winlogon a dalších s podsystémem LSASS, RPC (Remote Procedure Call Vzdálené volání procedury) pro proces běžící na některém stroji v místní síti (ale je možné takto komunikovat i v rámci jednoho počítače), je nutné mít spuštěnou službu Vzdálené volání procedur (Remote Procedure Call), je realizována přes API a tedy dostupná všem procesům, APC (Asynchronous Procedure Call Asynchronní volání procedury) je speciální mechanismus, který umožňuje využít dobu čekání procesu (vlákna) na událost (například čeká na I/O);

140 4.5 PROGRAMOVÉ ROZHRANÍ 132 čekající vlákno může takto povolit použití svého kontextu a času jinému vláknu (typicky vláknu jádra, které provádí instrukce na žádost vlastníka ), pomocí APC se provádí také ukončení procesů, DPC (Deferred Procedure Call Zpožděné volání procedury) se většinou používá jako dodatečná obsluha některého přerušení; spěchající část obsluhy přerušení se provede hned po zjištění přerušení, zbylá část, jejíž zpracování už tolik nespěchá, se provede jako DPC, aby nebyly zbytečně zdržovány další procesy. Pokud známe název procedury v knihovně, můžeme ji zavolat také mimo programový kód, a to s použitím programu rundll32.exe (ve starších Windows rundll.exe), s touto možností se hlouběji seznámíme na straně Programové rozhraní Dynamicky linkované knihovny Dynamicky linkované knihovny (DLL) používají především programátoři. Aby bylo možné DLL knihovnu používat v aplikaci, je nutné ji nejdřív načíst (zavést), pak je knihovna namapována do adresového prostoru aplikace a její funkce a objekty můžeme volně používat (jen musí být deklarovány jako externí). Typické přípony souborů dynamicky linkovaných knihoven jsou DLL, TTF (True Type Font), FON (staré rastrové fonty), NLS (National Language Services, ovladač pro jazyk), OCX (ActiveX Server). Jako dynamickou knihovnu lze použít také EXE soubor nebo ovladač. P Obrázek 4.16: Seznam dynamických knihoven používaných procesem v Process Exploreru Pokud tutéž DLL knihovnu používá více aplikací, v 32bitových Windows (řada NT a dále Windows 9x/ME) je kód funkcí knihovny sdílen a pouze namapován do adresového prostoru

141 4.5 PROGRAMOVÉ ROZHRANÍ 133 procesu (je v paměti ve skutečnosti jen jednou), ale data (objekty) má každá aplikace ve vlastní kopii (kopie se vytvoří v okamžiku, kdy se proces pokusí do knihovny zapisovat), v 16bitových Windows byla sdílena i data (to umožňovalo jednoduchou komunikaci mezi procesy). Způsob mapování knihoven v NT (vlatní kopie až při pokusu o zápis) se nazývá copy-on-write (je také popsán v sekci o správě paměti na straně 163). Mnohé programovací jazyky nabízejí možnost ukládat do DLL i vlastní typy komponent a jiných objektů charakteristických pro konkrétní programovací jazyk. Pokud však chceme, aby bylo možné tyto knihovny používat i aplikacích psaných v jiném programovacím jazyce, musíme k těmto komponentám a objektům vytvořit rozhraní, kterému budou rozumět již všechny aplikace. DLL knihovny mají funkce interní (mohou být volány pouze uvnitř DLL) a exportované (mohou být volány z jakékoliv aplikace). Exportované funkce si můžeme prohlédnout některým programem dodávaným obvykle s programovacím jazykem (firma Borland například dodává program tdump pracující na Příkazovém řádku, je potřeba věnovat pozornost přepínačům tohoto programu). Seznam DLL knihoven, které jsou nalinkovány v konkrétním procesu, získáme například v programu Process Explorer (viz obrázek 4.16), když v menu zvolíme View Show Lower Pane, hned následující položka určuje, zda se zobrazí DLL knihovny nebo manipulátory (handle) procesu. Knihovna GINA (Graphical Identification and Authentication) je dynamicky linkovaná knihovna, ve které je implementováno přihlašování uživatelů v grafickém režimu. Použití této knihovny je vázáno na SAS (Secure Attention Sequence, zabezpečenou sekvenci upozornění), o které jsme slyšeli už v minulém semestru jde vpodstatě o klávesovou zkratku Ctrl+Alt+Del. Standardně je GINA v souboru msgina.dll, ale tato knihovna může být nahrazena jinou GINA knihovnou. Obvykle se tak děje při instalaci sít ové nástavby (Novell NetWare) nebo při použití zařízení v kiosk módu (kiosk je omezený režim činnosti systému, ve kterém jsou silně omezeny možnosti zásahu uživatele do systému, známe například kiosky na nádražích, v administrativních budovách a také v mnoha školách). Od verze Vista lze GINA knihovnu měnit jen při instalaci systému. Všimněte si, že GINA knihovna je uvedena na výpisu příkazu handle na straně 74. Kontrola systémových souborů včetně systémových dynamicky linkovaných knihoven se provádí příkazem SFC. Zkontroluje, zda nedošlo k pozměnění či poškození systémových souborů (s příponou SYS, DLL, EXE, OCX, FON, TTF), používá kontrolu digitálního podpisu. P P sfc /scannow okamžitě zkontroluje všechny systémové soubory sfc /scanboot /quiet pravidelně při každém spuštění systému zkontroluje systémové soubory, navíc nebude uživatele informovat o případném nahrazování (tichý režim, quiet) sfc /scanonce provede okamžitou jednorázovou kontrolu; použijeme, pokud máme podezření, že některý systémový soubor není zcela vpořádku Registrace: aby mohla být dynamicky linkovaná knihovna obsahující COM komponenty (také ActiveX prvky) používána, musí být v systému registrována. K registraci dochází obvykle během instalace aplikace, která knihovnu do systému přináší, a to příkazem regsvr32. Podobně při odinstalaci bývá odregistrována. Registrace: regsvr32 %ProgramFiles%\aplikace\knihovna.dll

142 4.5 PROGRAMOVÉ ROZHRANÍ 134 Deregistrace (uvolnění knihovny): regsvr32 /U %ProgramFiles%\aplikace\knihovna.dll Opětovná registrace knihovny někdy může vyřešit nefunkčnost služby nebo programu. Někdy se stává, že služba Windows Update přestane fungovat a řešením je opětovná registrace knihoven, které služba využívá, popřípadě naopak po aktualizaci systému či některé aplikace může být nutné provést opětovnou registraci některých knihoven. Rundll32: Program Rundll32.exe známe už z předchozího semestru. Víme, že pomocí tohoto programu lze z Příkazového řádku (nebo ze skriptu) volat procedury uložené v některé dynamicky linkované knihovně (ostatně, zamyslete se nad názvem programu). Nelze volat jakoukoliv proceduru, volané procedury musí být k tomu účelu naprogramovány. 5 Tento program můžeme používat i vzdáleně. Například: rundll32 printui.dll,printuientry /? získáme nápovědu k proceduře s názvem PrintUIEntry, která je uložena v knihovně printui.dll (pozor, v názvu procedury je nutné zachovávat velká a malá písmena, názvy procedur jsou case-sensitive); výstupem tohoto příkazu je okno (ano, opravdu okno) s obsahem (zde zkráceným): Použití: rundll32 printui.dll,printuientry [parametry] [@soubor_příkazů] /a[soubor] Název binárního souboru /b[název] Název základní tiskárny /c[název] Název UNC počítače, jde-li o příkaz pro vzdálený počítač /dl Odstranit místní tiskárnu /dn Odstranit připojení místní tiskárny /dd Odstranit ovladač tiskárny... (součástí výpisu jsou také příklady). Tímto příkazem (a vhodnými parametry, kterých je opravdu hodně) můžeme dělat se vzdálenou tiskárnou téměř cokoliv, včetně nastavení popisovače zabezpečení, instalace a odinstalace ovladače, atd. vypíše se informace o za- rundll32 printui.dll,printuientry /p /n\\počítač\tiskárna dané tiskárně, rundll32 PowrProf.dll,SetSuspendState přechod do úsporného režimu (tento příkaz můžeme například uložit do zástupce na pracovní plochu, pak stačí poklepat na ikonu zástupce a okamžitě přejdeme do úsporného režimu), rundll32 iedkcs32.dll,closerasconnections způsobí odpojení počítače od internetu (to je ideální pro vytvoření zástupce na ploše nebo naplánování spuštění úlohy na zadanou dobu), rundll32 advapi32.dll,processidletasks způsobí okamžité provedení procesů, které čekají na událost OnIdle, tedy na dobu, kdy žádný jiný proces nemá přiřazen procesor (týká se to především procesů, které provádějí pravidelnou údržbu Windows). M Možnost volat procedury systémových knihoven není moc dobře zdokumentována. Především je problém najít seznamy procedur, které lze takto volat v jednotlivých knihovnách. Jeden ze způsobů, jak tyto informace najít, je zadat do vyhledávacího řádku Googlu rundll32 knihovna site:microsoft.com (doplníme název knihovny), například rundll32 shell32.dll site:microsoft.com.

143 4.5 PROGRAMOVÉ ROZHRANÍ 135 Úkoly 1. Pokud máte k dispozici Process Explorer (pokud nemáte, stáhněte ho z webu), spust te ho, nastavte zobrazení spodního podokna se seznamem knihoven procesu a prohlédněte si knihovny (i jejich vlastnosti) pro spuštěné aplikace. K vlastnostem knihovny se dostanete poklepáním na název knihovny. Všimněte si řádku Mapping (na první záložce vlastností dynamické knihovny) u běžné dynamické knihovny je zde Image, u datové knihovny (třeba TTF nebo NLS) tu najdeme Data. Oba typy knihoven najdete například na řádku csrss.exe nebo pokud máte spuštěný Poznámkový blok, u notepad.exe. 2. Zjistěte (příkazem pro okamžitou kontrolu), zda všechny systémové soubory včetně dynamicky linkovaných knihoven jsou vpořádku. 3. Zjistěte, které knihovny GINA jsou na vašem počítači dostupné (jsou vždy ve složce System32 a jejich název bývá xxgina.dll, kde xx jsou odlišující písmena). Může být dostupná i knihovna GINA pro rychlé přepínání uživatelů. 4. Pokuste se najít alespoň několik procedur knihovny user32.dll, které lze volat přes rundll32. C Lokální verze knihoven DLL Hell (Peklo DLL) je stav, kdy některá aplikace při své instalaci pozmění (nahradí) některou DLL knihovnu, ale tato změna začne vadit jiným aplikacím, které ke svému běhu vyžadují dřívější verzi pozměněné knihovny. Tyto případy se stávaly dokonce i při aktualizaci systémových knihoven přes službu Windows Update. Tento problém je v současné době řešen (u systémových knihoven) dvěma opatřeními: 1. verze knihoven jsou pravidelně kontrolovány a při zjištěné modifikaci nahrazovány originálními verzemi (program SFC a složka DLLCache), toto opatření je určeno pro systémové knihovny, 2. zavedení tzv. lokálních verzí (soukromých kopií) knihoven, toto opatření je určeno pro jiné než systémové knihovny. Lokální verze knihoven si může soukromě vytvářet každá aplikace ve svém instalačním adresáři, ale je možné vytvářet lokální verze určené ke sdílení. Lokální verze ke sdílení jsou ve složce...\windows\winsxs. V této složce najdeme podsložky obsahující soubory s knihovnami, názvy podsložek obsahují identifikaci názvu originální knihovny, hardwarovou architekturu, verzi a případně další informace (v jedné podsložce může být i víc než jedna knihovna), podsložka Manifest obsahuje pro každou podsložku z předchozího bodu dva soubory (xxx představuje název podsložky z předchozího bodu): xxx.manifest XML soubor (dá se otevřít například v Poznámkovém bloku) s podrobnou informací o knihovnách, které jsou zde uloženy, 5 Programování procedur v knihovnách tak, aby mohly být volány přes Rundll32, je stručně popsáno v

144 4.5 PROGRAMOVÉ ROZHRANÍ 136 xxx.cab katalogový soubor; katalogové soubory s příponou CAT obsahují bezpečnostní informace, především digitální podpis (soubor otevřeme poklepáním, k digitálnímu podpisu se dostaneme stisknutím tlačítka Zobrazit podpis), Policies pro některé položky z prvního bodu tohoto seznamu je zde podsložka (ne nutně stejně pojmenovaná) obsahující jednu nebo více dvojic souborů ve dvojici jeden soubor katalogu CAT a soubor xxx.policy, kde xxx je označení verze knihovny (jedná se o XML soubor s nastavením zásad používání knihovny). Ve výše uvedených souborech se setkáme s pojmem assembly. Assembly je sestava zahrnující sdílené prostředky (jednu nebo více knihoven), manifest a případně katalogový soubor. Úkoly Prohlédněte si složku s lokálními verzemi knihoven určenými ke sdílení. Vyberte si kteroukoliv assembly a zobrazte její katalogový soubor a manifest. C Win API Programové rozhraní Windows je realizováno přes Win API (Applications Programming Interface), což je souhrn prostředků a procedur (funkcí), které mohou programy používat. Win API je uloženo v dynamicky linkovaných knihovnách DLL, některé EXE, TIFF,..., například funkce pro vykreslení určitého dialogového okna se zadaným textem a tlačítky. API je vlastně přeložený, binární kód, tentýž jako u spustitelných (EXE) souborů, dynamicky linkované knihovny mají strukturu hodně podobné struktuře EXE souborů. Existuje víc verzí API: P Win16 API je pro 16bitové aplikace (většina kódu je uložena v knihovnách kernel.exe, krnl286.exe, krnl386.exe, user.exe, shell.dll a gdi.exe), Win32 API je pro 32bitové aplikace (většina kódu je v knihovnách kernel32.dll, advapi32.dll, user32.dll, gdi32.dll, comctl32.dll, comdlg32.dll, shell32.dll a dalších), přímo jsou používány modulem csrss.exe (část podsystému Win32 pro uživatelský režim) a win32k.sys (pro režim jádra). Win64 API plní podobnou úlohu jako Win32, ale na 64bitových systémech, je uloženo ve stejných knihovnách. API pro komunikaci s jádrem je ntdll.dll. Nenativní aplikace využívají API ze svého podsystému či virtuálního stroje. K překladu API dochází také při běhu 32bitové aplikace na 64bitovém systému, používá se podsystém WoW64 (což znamená Windows 32bit on Windows 64bit). Ve starších 32bitových Windows se používalo API pro grafické operace Win32 GDI, od Windows 2000 je to Win32 GDI+. Je objektově orientované, bližší způsobu programování v C++. Implementací Win API je také například podsystém Wine používaný v unixových systémech pro běh Win aplikací, další zajímavá implementace je například ReactOS.

145 4.5 PROGRAMOVÉ ROZHRANÍ 137 Jinak jde o pojem poměrně hodně používaný, API jednoduše znamená programové rozhraní (k čemukoliv). Své API mají také grafické a zvukové karty. Můžeme se například setkat s pojmem DirectX API nebo OpenGL API. Podrobné informace o Win API můžeme získat například na webu MSDN Library microsoft.com/en-us/library/aa383749%28vs.85%29.aspx. Také existuje hodně tutoriálů pro programování ve Win API, například na internetu najdeme seznam tutoriálů na winapi.php. Úkoly 1. Na stránce najděte API funkci, kterou lze zobrazit jednoduché dialogové okno s nápisem. 2. Najděte domovskou stránku projektu ReactOS a zjistěte, o jaký systém se vlastně jedná. 3. Zjistěte, ve které složce se nacházejí soubory, které byly v této sekci zmíněny. C Běh aplikací Už v předchozím semestru jsme se seznámili s členěním operačních systémů na 8bitové, 16bitové, 32bitové, 64bitové, atd. Proto víme, že příslušné číslo závisí především na velikosti pamět ového místa, které je potřeba pro uložení jedné adresy (to znamená, že například 32bitový systém potřebuje na uložení adresy místa v paměti, třeba umístění proměnné, 32 bitů, což jsou 4 B). Od toho se odvíjí například velikost datového typu pro ukazatel (pointer), protože do pointeru se ukládá adresa, často také velikost datového typu integer (celé číslo, int), protože se také často používá při manipulacích s adresami, typ knihoven například v 32bitovém systému se používají 32bitové knihovny, kde celá čísla a pointery zabírají 32 bitů. MS-DOS. V MS-DOSu existoval pouze jeden typ klasických programů EXE nebo COM soubory s 8bitovou strukturou, které se coby procesy po svém spuštění stávaly defacto majitelem všech zdrojů a podle toho se také chovaly. Měly absolutní přístup ke všem zdrojům (pamět, procesor, periférie apod.) a programátora naprosto nezajímalo, že by některý zdroj mohl případně využívat jiný proces. Tento systém nebyl multitaskový (to znamená, že nemohlo běžet více programů zároveň, které by spolu mohly například komunikovat). Windows 3.x. Aby bylo možné ve Windows 3.x implementovat multitasking, pro aplikace Win16 (tj. se 16bitovou strukturou) platí přísná pravidla chování. Tyto aplikace již musejí počítat s tím, že zdroje mohou být využívány jinými procesy, a proto je definován kontext procesu (viz přednášky), který je při přepínání aktivního procesu odkládán a při jeho znovuzaktivnění opět načten. Aplikace také mají omezený přístup k systémové paměti. Aby bylo možné provozovat také DOSovské 8bitové aplikace, musejí být tyto nevychované procesy uzavřeny do virtuálních strojů. Každý virtuální stroj má přidělenu určitou část zdrojů a vzhledem k aplikaci v něm běžící se tváří, že další zdroje ani neexistují.

146 4.5 PROGRAMOVÉ ROZHRANÍ 138 Jeden virtuální stroj je systémový, v něm běží všechny Win16 aplikace včetně systémových procesů. Proto pokud právě běží n DOSovských procesů, je spuštěno celkem n + 1 virtuálních strojů bez ohledu na počet běžících Win16 aplikací. Běh Win16 aplikací má ještě jedno specifikum, které komplikuje jejich spouštění v novějších Windows sdílení knihoven. Pokud Win16 aplikace potřebuje ke svému běhu některou dynamicky linkovanou knihovnu, pak zavolá příslušnou API funkci a tato knihovna se tzv. přilinkuje k aplikaci (zpřístupní se v ní obsažené funkce a objekty). Fyzicky tento proces probíhá tak, že pokud je tato knihovna načítána poprvé (dosud ji žádná aplikace nepotřebovala), tak je pro ni vyhrazeno místo ve sdílené paměti a knihovna je reálně do operační paměti uložena. Při druhém načítání této knihovny (jinou aplikací) již není znovu načítána, ale pouze speciální čítač zvýšen o 1. Při ukončení aplikace využívající tuto knihovnu je tento čítač snížen o 1 (když klesne na 0, znamená to, že knihovna již není používána žádnou aplikací a může být odstraněna z paměti). Dynamické knihovny jsou sdílené zdroje. Windows 9x/ME. Windows s DOS jádrem jsou od verze 95 32bitové, 6 NT systémy jsou 32bitové již od svého počátku. Tedy existují tři druhy prakticky nativních aplikací, které je možné zde provozovat 8bitové DOS aplikace, Win16 aplikace a Win32 aplikace. Aplikace Win16 a Win32 běží v systémovém virtuálním počítači, 32bitové mají každá svůj adresový prostor, 16bitové sdílejí jeden společný. Aplikace MS-DOSu mají každá svůj virtuální počítač (a tedy každá svůj adresový prostor). Win16 aplikace mezi sebou spolupracují formou kooperativního multitaskingu se sdílením knihoven, s Win32 aplikacemi a ovladači spolupracují formou preemptivního multitaskingu. Win32 aplikace spolupracují formou preemptivního multitaskingu. Provoz DOS aplikace v prostředí Windows: systém vytvoří virtuální počítač, ve kterém je DOS aplikace uzavřena. Někdy je vhodné provést další konfiguraci možností spuštění (výchozí typ a velikost písma, barvy obrazovky, přidělení paměti, přístup k zařízením, využívání multitaskingu, atd.). To se provede vytvořením souboru PIF (Program Information File) pro daný program (přípony PIF se standardně nezobrazují, toto nastavení se dá změnit v registru). Jedná se o binární soubor, který nelze upravovat přímo. Ve Windows do verze 3.x se PIF soubory vytvářely pomocí aplikace Editor PIF, nyní máme jednodušší možnost vyvoláme kontextové menu programu, v něm zvolíme Vlastnosti a provádíme ty- Obrázek 4.17: Vlastnosti DOS aplikace ve Windows 98 P 6 Ve skutečnosti Windows 95 obsahovaly část knihoven v 16bitové verzi šlo o ty knihovny, které programátoři nestačili přepsat do 32bitové podoby.

147 4.5 PROGRAMOVÉ ROZHRANÍ 139 též změny, jaké se dříve prováděly pomocí Editoru PIF. PIF soubor je v novějších verzích Windows chápán již jako speciální typ zástupce, a podle toho je s ním také zacházeno (poklepáním spustíme původní program se změnami definovanými v tomto zástupci). Přepnutí mezi celoobrazovkovým režimem a oknem: Alt+Enter. Způsob běhu DOS aplikací je možné kromě jiného konfigurovat v souboru apps.inf v adresáři inf. Obrázek 4.18: Porovnání okna vlastností Win32 a DOS aplikace Pokud dojde k chybě GPF (General Protection Fault všeobecná chyba ochrany), tedy k narušení pamět ového prostoru, obvykle je to způsobeno tím, že některá aplikace přepíše své vlastní pamět ové segmenty, nikoliv segmenty jiné aplikace. Windows 98 sledují prostředky přidělené aplikacím a při GPF dokážou tyto zablokované prostředky uvolnit, když to aplikace nedokáže (třeba proto, že zamrzla, zhroutila se,... ). 32bitová Windows řady NT. Narozdíl od systémů s DOS jádrem také Win16 aplikace běží každá ve svém virtuálním stroji stejně jako DOS aplikace. Proto také adresové prostory jednotlivých Win16 aplikací jsou oddělené (každý virtuální stroj má vyhrazen vlastní pamět ový prostor) a to je jeden z důvodů, proč Win16 aplikace často v NT systémech mají problémy se svým během (nemohou komunikovat s ostatními aplikacemi tak, jak bylo běžné ve starších systémech). Protože každému virtuálnímu počítači je vyhrazeno poměrně hodně zdrojů, především paměti, která již nemůže být využívána jiným procesem (ani systémovým) a musí v ní být uloženo to, co dotyčná aplikace očekává (včetně jakési kopie částí systému), představuje provoz více Win16 aplikací značnou zátěž zdrojů, zejména paměti. To ostatně platí i o provozování více DOS aplikací v kterýchkoliv Windows. Win32 (a případně Win64) aplikace běží ve společném systémovém virtuálním počítači. Pokud je spuštěno n 16 Win16 aplikací a n 8 DOS aplikací, pak běží celkem n 16 + n virtuálních strojů. Protože součástí jádra není MS-DOS, máme omezenější možnosti běhu DOS aplikací. Vlastnosti běhu DOS aplikace nastavujeme v kontextovém menu Vlastnosti na kartách pojmenovaných podle typu vlastnosti, kterou chceme nastavovat. Porovnání okna vlastností Win32 a DOS aplikace v pro- P P

148 4.6 KOMPATIBILITA VERZÍ WINDOWS 140 středí Windows 2000 vidíme na obrázku 4.18 DOS aplikace zde má výrazně více záložek. U DOS aplikace je zobrazeno také okno, které získáme, když klepneme na tlačítko Upřesnit. Ve Windows 98 jsou trochu jiné možnosti nastavení běhu starších programů na obrázku 4.17 je okno s vlastnostmi zástupce DOS aplikace s oknem, které získáme klepnutím na tlačítko Upřesnit. Aplikace běží v tzv. podsystémech. Je zde podsystém Win32 pro Win a DOS aplikace (je to proces programu CSRSS.EXE), může být provozován také podsystém pro aplikace OS/2 a podsystém POSIX 7. Tyto podsystémy nebývají přítomny všechny, podrobnosti na přednáškách. Virtuální stroje pro DOS a Win16 aplikace je spouštěn procesem ntvdm.exe běžícím v podsystému Win32. 64bitová Windows řady NT. Taktéž se používají podsystémy a soubor ntvdm.exe pro Win16 a DOS aplikace. Win64 aplikace běží v podsystému, který se nyní jmenuje přímo Windows (již ne Win32), a dále existuje podsystém WoW64 (Windows 32bit on Windows 64bit) pro běh 32bitových aplikací. Úkoly V Process Exploreru nebo jiné podobné aplikaci najděte proces csrss.exe. Zjistěte, kdo je ve stromové struktuře jeho rodičem. Zjistěte jeho PID. Seřad te procesy podle PID (klepněte na záhlaví) a pokuste se odhadnout podle hodnot PID pořadí spouštění systémových procesů. Zobrazte spodní podokno (v menu View Show Lower Pane), a to se seznamem používaných handlů (View Lower Pane View Handles). Projděte si položky v seznamu a všimněte si zejména klíčů registru a vláken procesů, se kterými proces komunikuje (threads). Podobně projděte také seznam používaných dynamických knihoven. Zobrazte vlastnosti procesu csrss.exe (stačí poklepat na jeho název). Všimněte si jeho priority, vláken, proměnných, které využívá (záložka Environment) a zabezpečení (je zde také vlastník a jeho SID). P C 4.6 Kompatibilita verzí Windows V souvislosti s provozováním aplikací pro různé verze Windows v jednom systému se setkáváme se zkratkou WOW (Windows on Windows) jde o emulační platformu ve Windows pro starší Windows aplikace. Například WOW64 je emulační platforma na 64bitových Windows pro 32bitové aplikace. Tato zkratka se vyskytuje také v registru. 32bitové aplikace pro Windows obvykle je možné spouštět na všech 32bitových Windows včetně řady NT. Výjimkou jsou programy, které potřebují přímý přístup k prostředkům nebo trvají na umístění systémových souborů charakteristickém pouze pro určité verze systému. P 7 POSIX (Portable Open Systems Interface based on Unix přenositelné otevřené, tj. volně šiřitelné, rozhraní systémů založených na Unixu): nejedná se o operační systém nebo určitou aplikaci, ale o souhrn norem, které definují, jak spolu komunikují operační systém a aplikace. Aplikace napsané podle tohoto standardu pouze mají určitou strukturu a určitým způsobem komunikují s operačním systémem, což znamená i určité požadavky na tento operační systém (obvykle je nutné v klasickém operačním systému pouze vytvořit komunikační mezivrstvu mezi systémem a aplikací, v NT jde o program a několik dynamických knihoven).

149 4.6 KOMPATIBILITA VERZÍ WINDOWS 141 DOSovské aplikace mají se spouštěním v NT systémech ještě větší problémy. Zatímco při spuštění na Windows s DOS jádrem máme možnost využít režim MS-DOS (hned při spuštění) a případně na internetu stáhnout potřebné ovladače, v NT systémech tato možnost není. Řešením, které nezabírá vždy, je vhodné nastavení parametrů spouštění aplikace ve Vlastnostech viz obrázky 4.18 a 4.17 na straně 138. Ve Windows XP můžeme nastavit režim kompatibility. Nastavuje se ve vlastnostech takovéhoto spustitelného souboru v kontextovém menu Vlastnosti karta Kompatibilita, viz obrázek 4.19 tam máme možnost si v rozbalovacím seznamu vybrat simulovaný systém, aplikace pak reálně poběží v jakémsi virtuálním počítači. Máme na výběr mezi Windows 95, Windows 98/ME, Windows NT 4 a Windows 2000 (XP zde ze zřejmého důvodu nenajdeme). Z výběru se dají vypozorovat odlišnosti zacházení s aplikacemi v těchto systémech mezi Windows 98 a ME prakticky v tomto směru nejsou odlišnosti, zatímco Windows 95 musejí být odděleny kromě jiného proto, že část jejich knihoven je 16bitová a plánovač procesů má jiný algoritmus. Pokud program potřebuje přímo přistupovat k určitému zařízení (týká se to hlavně zvukových karet ve vztahu k DOSovským hrám) a nemůžeme použít boot disketu pro naběhnutí pouze DOSu (třeba tehdy, když máme všechny disky naformátovány na NTFS), jediným řešením je použít některý emulátor. Tyto programy můžeme stáhnout na internetu, např. DOSBox na nebo použijeme některý program pro vytvoření virtuálního počítače (VMWare, Virtual- Box, VirtualPC,... ). Problémy s kompatibilitou mohou nastat při instalaci systému přes starší operační systém typu Windows, například nelze přeinstalovávat Windows 3.x ani 95 na Windows XP (je nutné provést čistou instalaci). Hlavní problémy mohou nastat s kompatibilitou ovladačů, protože 16bitové ovladače použitelné ve Windows 3.x, 9x a ME nelze používat ve Windows 2000 a XP. Obrázek 4.19: Režim kompatibility ve Windows XP Ve Windows od verze Vista přibylo problémů souvisejících s provozem starších aplikací (už proto, že starší aplikací je vlastně už i aplikace programovaná pro Windows XP). Režim kompatibility se nastavuje prakticky stejně jako ve Windows XP (také v zástupci, jeho vlastnostech, záložka Kompatibilita). Někdy však nepomůže ani to, protože Vista má mnohem striktnější pravidla přístupu k systémovým souborům. V takovém případě může pomoci spuštění programu pod správcovským účtem (položka Spustit jako v kontextovém menu a nebo příkaz runas, tuto vlastnost můžeme nastavit i přímo na kartě Kompatibilita), ale v tom případě musíme počítat s vyšším rizikem. Jiným řešením problémů s přístupy (především do Program Files) je instalace aplikace jinam (například si pro tyto účely vytvoříme nový adresář C:\programy). Windows 7 přišla s novým řešením režimu kompatibility, XP Mode. Spočívá v kombinaci dvou modulů virtualizačního nástroje MS Virtual PC a VHD obrazu (tj. obrazu systému do virtuálního počítače) Windows XP (má 0,5 GB). Takto získáme virtualizovaný systém Windows XP uvnitř Win-

150 4.6 KOMPATIBILITA VERZÍ WINDOWS 142 dows 7 a můžeme bez problémů provozovat běžné XP aplikace. Ovšem setkáme se se značnými omezeními: potřebujeme procesor s podporou virtualizace, zapnutou v BIOSu, hardware je také virtualizován, včetně grafické karty, takže žádná akcelerace grafiky, obecně jsou problémy s multimédii. XP Mode není v systému přítomen, musíme ho doinstalovat (to znamená stáhnout z webu Microsoftu a nainstalovat nejdřív MS Virtual PC a potom modul XP Mode obsahující obraz Windows XP). Úkoly Pokud máte možnost, vyzkoušejte výše popsané postupy s kompatibilitou (například ve Windows XP nebo Vista najděte některý starší program, vytvořte jeho zástupce a projděte si kartu Kompatibilita v jeho vlastnostech). C

151 Kapitola 5 Zařízení a paměti V této kapitole se budeme věnovat postupům při konfiguraci systému a aplikací specifickým pro různé verze Windows. Budeme se zabývat také provozem nenativních aplikací a správou zařízení. 5.1 Správa zařízení Ovladače zařízení Ovladač zařízení je rozhraní mezi zařízením a systémem (příp. procesy), které má především zjednodušit a ujednotit komunikaci procesů se zařízením (například u tiskárny proces při požadavku na tisk předá hodnoty předem stanovených parametrů, jako je adresa dat, která se mají tisknout, formát tisku apod., nestará se již o konkrétní implementaci pro určitou tiskárnu). Protože ve Windows procesy pracují v prostředí s multitaskingem, je nutné ošetřit možnost přístupu více procesů k jednomu zařízení. Proto se používají ovladače virtuálních zařízení, které zároveň s rozhraním pro přístup k zařízení poskytují také rozhraní pro komunikaci s více procesy (obvykle obsahuje frontu, do které se řadí požadavky procesů). Od Windows 98 Microsoft testuje ovladače a jejich použitelnost pod Windows. Pokud v laboratořích Microsoftu není nalezen žádný problém s kompatibilitou, přidělí ovladači certifikát WHQL (Windows Hardware Quality Lab) a ovladač je tzv. digitálně podepsaný. Testy se zaměřují pouze na kompatibilitu s Windows, nikoliv na kvalitu ovladače směrem k samotnému zařízení, tedy to, že je ovladač podepsaný, nic neříká o samotné kvalitě ovladače. V 64bitových Windows lze používat pouze podepsané ovladače. Ne každý výrobce však ztrácí čas čekáním, než Microsoft provede testy, a proto existuje hodně ovladačů, které sice jsou kompatibilní s Windows, ale nejsou podepsané. Někteří výrobci podepisují své ovladače vlastním certifikátem (důvěryhodným). Takto podepsané ovladače lze instalovat i v 64bitových verzích Windows. Ve Windows od verze Vista je jejich instalace obvykle bezproblémová, ve Windows XP se můžeme setkat s varovným hlášením, že tento ovladač není certifikován pro Windows (v XP jsou uznávány pouze podpisy přímo od Microsoftu). P 143

152 5.1 SPRÁVA ZAŘÍZENÍ 144 Pokud chceme nalézt nepodepsané ovladače (někdy mohou způsobovat problémy, i když to není pravidlem), můžeme použít program Ověření podpisu souboru (SigVerif, spustíme ho přes Start Spustit, napíšeme sigverif ). Na obrázku 5.1 je okno se dvěma záložkami, ve kterém upřesňujeme činnost programu, a okno s výsledným seznamem nepodepsaných souborů. Obrázek 5.1: Upřesnění možností nástroje sigverif Jako složku s ovladači můžeme zvolit System32\Drivers, po testování najdeme výsledky v souboru sigverif.txt v systémovém adresáři, a nebo si je přečteme v zobrazeném okně. V tomto souboru najdeme položky označené jako nepodepsané, podle údajů položky vyhledáme soubor ovladače a v jeho vlastnostech (v kontextovém menu) zjistíme výrobce a tím i hardware, ke kterému ovladač patří. Pak podle těchto údajů najdeme na internetu stránky výrobce a zjistíme, jestli už na nich nemá publikovány nové ovladače pro naše zařízení, které by už byly podepsané. Úkoly Na svém počítači zjistěte, zda jsou instalovány nějaké nepodepsané ovladače. C

153 5.1 SPRÁVA ZAŘÍZENÍ Instalace ovladačů Windows jdou dodávány s ovladači pro mnoho typů zařízení od různých výrobců, většinou tyto ovladače stačí alespoň pro základní používání zařízení a používají se při automatické detekci službou Plug&Play (obvykle dostaneme CD s ovladači zároveň se zařízením). Tyto ovladače jsou na instalačním CD v souboru DRIVER.CAB, po instalaci se zkopírují do některého systémového adresáře (většinou Driver Cache nebo jeho podadresáře, nebo i386), skutečné umístění zjistíme v registru v klíči HKLM/Software/Microsoft/Windows/CurrentVersion/Setup. Pokud tento soubor zůstane na instalačním CD, potřebujeme ho při instalaci každého nového zařízení. Pokud služba Plug&Play najde nové zařízení, především se pokouší najít příslušný soubor INF v adresáři Inf. V něm jsou údaje potřebné pro instalaci a především cesta k souboru ovladače (může to být driver.cab). Pokud INF soubor není nalezen, je uživatel požádán o disketu nebo CD se soubory pro instalaci ovladače. Může se stát, že zařízení nepracuje správně. Na vině může být poškozený ovladač (to může nastat i hned po instalaci, nebo po změnách v konfiguraci systému) nebo ovladač nekompatibilní s momentální konfigurací systému (s některou částí systému si nerozumí, to může nastat při instalaci takových opravných balíčků, se kterými programátor ovladače nepočítal). Když je na vině ovladač, často je možné najít na internetu jeho novější verzi (na stránkách výrobce zařízení). Po instalaci monitoru a některých dalších zařízení, pro která je důležité správné nastavení barev (např. tiskárny), můžeme také instalovat vhodný barevný profil. Barevné profily jsou v souborech s příponou ICM (Image Color Management) a najdeme je bud v souboru DRIVER.CAB nebo (a to je lepší) na CD dodávaném se zařízením. Soubory s profily jsou obvykle uloženy ve složce...\system32\spool\drivers\color. Pro monitor se instalace barevného profilu provádí přidáním tohoto souboru do seznamu v nástroji Zobrazení (Vlastnosti v kontextovém menu Plochy), karta Nastavení Upřesnit Správa barev. Úkoly 1. Prohlédněte si některé soubory v adresáři Inf (ostatně už je trochu znáte z předchozího semestru). 2. Zjistěte, jaké barevné profily pro monitor jsou navoleny a který z nich je vybrán. P C Modely ovladačů Každý ovladač je psán podle některého modelu, který obvykle také určuje, v jaké verzi Windows je možné tento ovladač používat. Ve Windows 95 se používaly dva základní typy ovladačů: P PMD (Protected Mode Driver) 32-bitový ovladač pracující v chráněném režimu, konfigurační údaje o něm jsou uloženy v registru, tyto ovladače nejsou přístupné DOS aplikacím ani Win16 aplikacím, mívají příponu SYS nebo VXD (Virtual Device Driver, ovladač virtuálního zařízení).

154 5.2 PAMĚŤOVÁ ZAŘÍZENÍ 146 RMD (Real Mode Driver) ovladač pracující v reálném režimu, konfigurační údaje (příkaz pro zavedení ovladače s konfiguračními parametry) jsou v souboru CONFIG.SYS, tyto ovladače nejsou použitelné pro aplikace a systémy, které nepoužívají soubor CONFIG.SYS. Pro některá zařízení existuje PMD i RMD varianta ovladače. Potom v případě, že má být zařízení přístupné DOS aplikaci, je potřeba nahradit PMD ovladač obdobným RMD ovladačem po dobu běhu této aplikace (např. ovladač myši). Ovladače, které lze takto bezpečně nahradit, jsou v souboru IOS.INI v systémovém adresáři (Win9x). Win32 aplikace ve Windows 95 mohou používat i RMD ovladače (většinu), ale snižuje to výkon systému. Seznam RMD ovladačů, které momentálně pracují, je v nástroji Systém na kartě Výkon. Windows 98 a 2000 zavádějí nový model ovladačů WDM (Win32 Driver Model), který má P sjednotit modely ovladačů pro Windows 98 a Windows Hlavním důvodem této změny je možnost používat ve Windows 98 ovladače psané pro Windows NT. Pro zpětnou kompatibilitu jsou v systému zahrnuty také PMD a RMD ovladače, tedy používají se tři modely. Windows XP používají především ovladače WDM, ve virtuálních strojích některých podsystémů lze používat i jiné typy ovladačů. Vista používá nový model ovladačů WDDM (Windows Display Driver Model) odlišný od modelů používaných v předchozích verzích Windows. Ve Vistě je WDDM verze 1.0, Windows 7 mají novou verzi 1.1. WDDM je navržen tak, aby v případě selhání ovladače bylo možné dále pokračovat (funkce rychlého zotavení z pádu ovladače). Hlavním přínosem WDDM ovladačů je přenos značné části multimediálních (grafických) operací z procesoru na GPU (grafický procesor na grafické kartě), což mnohdy znamená zrychlení grafických operací. Bez ovladače grafické karty s podporou WDDM nefunguje rozhraní AeroGlass. P 5.2 Pamět ová zařízení Diskové kvóty Diskové kvóty určují, kolik místa na disku (obvykle sít ovém) může který uživatel zabrat, znemožňují zabrat více než je stanovené množství nebo dovolují protokolovat překročení stanoveného místa. Je sledováno množství místa zabraného soubory, jejichž vlastníkem je daný uživatel (místo zabrané uživatelem, který patří mezi správce systému, není omezováno, protože administrátoři je vlastníkem všech systémových souborů, kterých není zrovna málo). Rozlišujeme dva pojmy: Maximální disková kvóta množství místa, které bude mít uživatel k dispozici. Úroveň pro upozornění hodnota o něco nižší než předchozí, slouží k upozornění, že se uživatel blíží horní povolené hranici. Obě hranice (maximální hranici a hranici pro upozornění) lze protokolovat, při protokolování můžeme nastavit příslušnou reakci (například upozornit uživatele nebo upozornit správce). K protokolům se dostaneme například v nástroji Prohlížeč událostí, a to v Systémovém protokolu. P

155 5.2 PAMĚŤOVÁ ZAŘÍZENÍ 147 Obecně je možné přidělovat diskové kvóty na discích (složkách), které jsou sdílené a naformátované souborovým systémem NTFS. Možnost používání kvót je jednou z vlastností tohoto souborového systému; pokud máme disk naformátován souborovým systémem FAT32 nebo starším, nemůžeme na něm kvóty používat. Kvóty jsou také záležitostí lokální sítě. Můžeme přidělovat kvóty na kterémkoliv počítači v síti, ke kterému má daný uživatel jakýkoliv typ přístupu. To ovšem vyžaduje, aby byli uživatelé v záznamech kvót identifikováni jednoznačně v rámci celé lokální sítě, tedy se používají SID uživatelů místo jejich jmen. Obrázek 5.2: Nastavení kvót Na lokálním počítači se v grafickém režimu dostaneme ke kvótám takto: zobrazíme vlastnosti disku (např. v Průzkumníkovi v kontextovém menu jednotky oddílu na disku), a pokud je typu NTFS, je zde záložka Přidělená kvóta (musíme mít dostatečné oprávnění k přístupu, aby se tato záložka zobrazila). Povolíme přidělování kvót (na obrázku 5.2 vlevo) a dále je přidělíme jednotlivým uživatelům (k podrobnějšímu nastavení pro jednotlivé uživatele se dostaneme klepnutím na tlačítko Přidělené kvóty, na obrázku 5.2 vpravo). Pokud chceme pracovat s kvótami nastavenými na jiném počítači, než u kterého sedíme, můžeme jednoduše připojit disk z toho počítače jako sít ový disk (přidělíme písmeno jednotky) a stejným způsobem jako u lokálního disku zobrazíme jeho vlastnosti. Úkoly Pro práci s kvótami existuje také příkaz fsutil quota, se kterým se seznámíme dále. Zjistěte, zda jsou na discích vašeho počítače přiděleny kvóty (pokud máte dostatečná přístupová oprávnění). C

156 5.2 PAMĚŤOVÁ ZAŘÍZENÍ Kontrola stavu disků Zde se budeme zabývat kontrolou stavu disků na softwarové (souborový systém) a hardwarové úrovni. SCANDISK (pouze Windows s DOS jádrem) program pro kontrolu povrchu disku; pokud zjistí poškození některé oblasti, zakáže do ní přístup, aby zde žádný program neukládal data (data by pak byla nepoužitelná). Má svůj protějšek v grafickém prostředí Windows. CHKDSK (název je zkratkou z Check Disk ) se chová odlišně v různých verzích Windows: ve Windows s DOS jádrem vypíše stručnou informaci o stavu systému, ve Windows s NT jádrem (je v adresáři system32) při použití bez parametrů provede rychlou (asi tak minutovou) kontrolu a vypíše informaci o stavu systému, pomocí přepínačů můžeme spustit podrobnou kontrolu s možností oprav (ta je však prováděna při následujícím startu systému programem autochk.exe), data zachráněná z poškozených sektorů najdeme v souborech s příponou CHK. 1 chkdsk provede rychlou kontrolu a vypíše informace o disku chkdsk d: provede rychlou kontrolu zadané jednotky a vypíše o ní informace chkdsk d: /F důkladná softwarová kontrola, u zjištěných chyb se pokouší provést opravu (fix errors), oddíl musí být odpojen (jen softwarově!) chkdsk d: /R důkladná hardwarová kontrola (zahrnuje v sobě i přepínač /F), hledá chybné sektory a pokouší se z nich obnovit data Následující informace se vztahují pouze k Windows s NT jádrem. Existují dvě možnosti, jak zajistit, aby oddíl na disku (svazek nebo celý disk) byl důkladně zkontrolován po startu systému: 1. dirty bit pokud kterýkoliv program s vyššími oprávněními zjistí problémy s oddílem na disku (při čtení, zápisu nebo jakékoliv jiné manipulaci s oddílem), je tento oddíl označen jako špinavý (má nastaven dirty bit), 2. položka BootExecute v registru v klíči HKLM/SYSTEM/CurrentControlSet/Control/Session Manager, obvykle za běhu systému obsahuje řetězec ve tvaru autocheck autochk * ; tato položka určuje oddíly, které mají být zkontrolovány při startu systému, i kdyby neměly nastaven dirty bit. Uvedený řetězec vlastně znamená všechno a takto je zajištěno, že při nesprávném vypnutí počítače budou při následném startu zkontrolovány všechny jednotky, tento řetězec je změněn při každém správném vypnutí počítače a opětovně nastaven při startu (takže kontrola je vyvolána, jen když nesprávně vypneme počítač). AUTOCHK (pouze Windows s NT jádrem, v adresáři system32) je program pro automatickou kontrolu odpojených disků před startem systému, nelze ho spustit, pokud systém pracuje; je spouštěn (programem chkdsk) před každým startem systému a zjišt uje, zda je některý disk označen jako špinavý (má nastaven dirty bit) nebo byla vynucena jeho kontrola v registru, u každého takového disku (oddílu) provede hloubkovou kontrolu. P 1 Někdy bývá trochu problém s obnovou dat z těchto souborů, už proto, že jde vlastně o fragmenty původních souborů z disku. Existuje několik možností, jak se s tímto problémem vypořádat, zajímavá stránka o tomto tématu je například

157 5.2 PAMĚŤOVÁ ZAŘÍZENÍ 149 CHKNTFS (pouze Windows s NT jádrem, v adresáři system32) slouží k řízení naplánování spuštění kontroly disků těsně před startem systému. Název příkazu je sice zkratkou z anglického Check NTFS, ale ve skutečnosti lze takto naplánovat také kontrolu jiných souborových systémů než NTFS (pracuje také s FAT a FAT32). Tento příkaz ve skutečnosti nedokáže měnit samotný dirty bit (ten nuluje pouze program chkdsk), ale dokáže zajistit, aby kontrola nebyla vyžadována při následujících startech systému. Také dokáže naopak vynutit kontrolu u oddílu, který nemá nastavený dirty bit. chkntfs d: zobrazí informaci o tom, zda je či není zadaný oddíl na disku označen jako špinavý (a také informaci o typu souborového systému na oddílu) chkntfs /x e: f: zadané disky nebudou kontrolovány při startu systému, i kdyby byly označeny jako špinavé (jsou vyloučeny z kontroly excluded) chkntfs /c d: zadaný disk bude zkontrolován po startu počítače, i když není označen jako špinavý. Nastavení dirty bitu lze zjistit ještě jiným způsobem příkazem fsutil dirty query (bude probíráno později). Ve Windows do verze XP lze kontrolu diskového oddílu spustit v grafickém režimu v kontextovém menu jednotky (oddílu) zvolíme Vlastnosti a na kartě Nástroje klepneme na tlačítko Zkontrolovat. V tom případě provádí kontrolu jen program explorer.exe s využitím knihoven ifsutil.dll a fmifs.dll, jen pokud v okně povolíme odpojení svazku (a případně restart), použije se chkdsk a autochk. Rozdělení rolí programů ve Windows XP (na desktopu): chkntfs umožňuje určit, co má být zkontrolováno autochk po svém spuštění (obvykle při startu systému) prověří, jestli není některý oddíl (svazek) určen ke kontrole, pokud ano, provede hloubkovou kontrolu takového oddílu chkdsk provede bud jen krátký základní test a vypíše stručnou informaci, a nebo provádí podrobné testování před vlastním startem systému nebo na odpojeném oddílu (při testování před startem systému spustí program autochk) Programy scandisk a chkdsk nejsou moc silné, mají problém s opravou poškozeného sektoru a případným zachráněním dat, ale také se jim některé chyby nedaří detekovat. V horších případech se doporučuje použít jiný nástroj bud komerční, a nebo některý z volně šiřitelných, které jsou také velmi kvalitní. Pokud je poškozena systémová část disku, volíme nástroje, které jsou bootovatelné, tj. po zasunutí CD s tímto nástrojem restartujeme počítač a systém se spustí z CD (obvykle jde o upravený Linux nebo FreeDOS). Výborný je volně šiřitelný MHDD, 2 který se poměrně snadno ovládá a pracuje s běžnými souborovými systémy, jen je vhodné pořádně číst, co nám sděluje (když zadáváme parametry pro hledání vadných oblastí, musíme explicitně stanovit, že mají být také opraveny, jinak nás program pouze informuje). Dalším zajímavým programem, který pracuje také s údaji S.M.A.R.T., je například aplikace HDDScan. 3 Pokud nevíte, co je to S.M.A.R.T., podívejte se do skript předmětu Technické vybavení osobních počítačů. 2 Stránky programu MHDD: volně dostupný. 3 Stránky programu HDDScan: volně dostupný.

158 5.2 PAMĚŤOVÁ ZAŘÍZENÍ 150 Úkoly 1. Prověřte, zda některý oddíl na disku nemá nastaven dirty bit. 2. Podívejte se do registru, jak je nastavena výše popisovaná položka BootExecute. 3. Spust te zběžnou (rychlou) kontrolu sektorů na disku (bez nutnosti restartu počítače). 4. Pokud jste dosud neslyšeli o zkratce S.M.A.R.T., pokuste se o této technologii zjistit alespoň základní informace (probírali jsme v předmětu Technické vybavení osobních počítačů). Projděte si stránky programů MHDD a HDDScan a zjistěte, co všechno tyto programy zvládají. 5. Zjistěte, k čemu slouží a jak se používá program diskperf.exe. C R Program diskpart DISKPART je program pro práci s diskovými oddíly ve Windows od verze Vista a Server 2008 (lze jej stáhnout z webu Microsoftu i pro starší systémy), je také součástí Konzoly pro zotavení a Windows PE. Ve skutečnosti se jedná o interaktivní textovou konzolu podobně jako v případě NetShellu a lze ho používat jak v interaktivním, tak i neinteraktivním módu. Tento příkaz umožňuje na velmi pokročilé úrovni pracovat s disky a jejich jednotlivými oddíly včetně dynamických svazků a dynamických oddílů. Typické úlohy jsou zjistění informací o disku či oddílu, vytvoření či zrušení oddílu, vytvoření nebo rozšíření dynamického svazku, práce s RAID (zrcadlení), připojení nebo odpojení oddílu. Některé příkazy jsou určeny k práci s konkrétním diskem nebo oddílem. Před použitím takovýchto příkazů musíme nejdřív daný disk či oddíl vybrat příkazem select, vybraný disk (oddíl) se nazývá zaměřený (focused). Neplést si s aktivním diskem, to je něco jiného! Příklad 5.1 V tomto souhrnném příkladu si ukážeme základní práci s programem diskpart. diskpart spustili jsme program, jsme v interaktivním režimu, dále zadáváme příkazy určené tomuto programu (prompt je ted ve tvaru diskpart>) list disk vypíšeme seznam disků s informacemi (pracuje také s externími disky včetně USB flash disků), v seznamu má každý disk své číslo (od 0) select disk 1 list partition vybrali jsme disk číslo 1 (tj. druhý v pořadí), tento disk je ted zaměřený vypíšeme seznam oddílů na zaměřeném disku select partition 3 zaměříme vybraný oddíl (č. 3) delete partition odstraníme zaměřený oddíl (pozor, opravdu se odstraní!), při práci s dynamickými svazky tento příkaz nepoužíváme (místo něj používáme delete volume) create partition primary size=18000 vytvoří nový primární oddíl na disku se zaměřením o velikosti MB, na disku musí být dostatek nepřiřazeného místa (nepřiřadí žádné písmeno jednotky), jiné příkazy jsou pro vytvoření rozšířeného (extended) a logického (logical) oddílu (budeme se učit na přednáškách)

159 5.2 PAMĚŤOVÁ ZAŘÍZENÍ 151 assign letter=e přiřadí vytvořenému oddílu písmeno jednotky (bude dostupný pod písmenem E:), tímto příkazem (assign mount=...) můžeme vytvořený oddíl připojit také do adresáře (bod připojení) detail disk exit zobrazí detailní informaci a disku se zaměřením odchod z prostředí programu Popis parametrů příkazu najdeme na (a také v nápovědě). Příklad 5.2 Pokud chceme instalovat jakýkoliv operační systém na počítač (typicky netbook) bez optické mechaniky (a tudíž nelze použít instalační DVD), a nebo prostě vyrobit bootovací USB flash disk, je třeba toto médium předem připravit, aby bylo použitelné pro tento účel. Předpokládejme, že chceme vytvořit instalační USB flash disk pro Windows 7 nebo Windows Vista. Potřebujeme USB flash disk o vhodné kapacitě (ideálně kolem 4 GB nebo více), počítač s DVD mechanikou a programem diskpart (bud v systému, který ho obsahuje, nebo stáhneme z internetu), instalační DVD, jehož obsah chceme přesunout na USB flash disk. USB flash disk připojíme k počítači (pro jistotu odpojíme vše s rozhraním USB, co zrovna nepotřebujeme), spustíme Příkazový řádek s právy administrátora a dále postupujeme následovně: diskpart list disk spustíme diskpart, prompt se změní na diskpart> zjistíme číslo USB flash disku, se kterým chceme pracovat, zobrazí se něco podobného: Disk### Stav Velikost Volné Dyn Gpt Disk 0 Online 18 GB 0 GB Disk 1 Online 40 GB 0 GB Disk 2 Online 3824 MB 0 GB První dvě položky jsou zřejmě pevné disky, to, co hledáme (USB flash disk), je poslední položka (disk č. 2). Sloupec Volné neznamená množství místa nezabraného daty, ale množství místa, které není zařazeno do žádného oddílu na disku. select disk 2 předáme zaměření na disk 2, se kterým budeme dále pracovat create partition primary na celém disku se zaměřením vytvoříme primární oddíl (celém, protože jsme nezadali velikost) select partition 1 právě vytvořenému oddílu předáme zaměření, tedy následující příkazy patří právě tomuto oddílu (všimněte si, že jsme nezadali 0; toto číslo je totiž přiřazeno speciálnímu oddílu MBR, který obsahuje informaci o struktuře disku, tedy první oddíl, do kterého se dá něco ukládat, má číslo 1) active označíme oddíl jako aktivní, to znamená, že z něho lze zavést operační systém

160 5.2 PAMĚŤOVÁ ZAŘÍZENÍ 152 format fs=ntfs naformátujeme aktivní oddíl souborovým systémem NTFS (pozor, tento souborový systém není příliš vhodný pro USB flash disky, na které se často zapisuje, zde ho použijeme jen proto, aby bylo možné na něj přenést instalaci Windows 7 nebo Visty) assign přiřadíme vytvořenému oddílu písmeno (žádné jsme nezadali, tedy se použije první volné) exit odchod z prostředí programu diskpart, další příkazy již zadáváme přímo v Příkazovém řádku. Nejdřív zasuneme do DVD mechaniky instalační DVD s Windows 7 nebo Vista. Dále: D: (dosad te písmeno DVD mechaniky s instalačním DVD), přesun na instalační DVD cd boot na instalačním DVD se přesuneme do adresáře boot bootsect.exe /nt60 X: (za X dosad te písmeno, které bylo přiřazeno upravenému USB flash disku, to lze zjistit například přes Tento počítač) spouštíme program, který vytvoří boot sektor na zadaném disku (aby bylo možné z něho nabootovat) xcopy D:\* X: /e zkopírujeme všechno z instalačního DVD na USB flash disk (opět musíme dosadit správná písmenka) rekurzívně; pokud se nám nechce provádět to v Příkazovém řádku, není problém vše zkopírovat v Průzkumníkovi nebo jakémkoliv souborovém manažerovi Hotovo. USB flash disk odpojíme a můžeme z něj nabootovat na kterémkoliv počítači a instalovat. Pokud nepracujeme v interaktivním režimu, používáme trochu jinou syntaxi. Interní příkazy zadáváme pomocí parametrů programu, například diskpart /add \Device\HardDisk na pevném disku, který je první v pořadí, vytvoří nový oddíl o velikosti MB (na disku musí být tolik volného místa nepřiřazeného žádnému oddílu) diskpart /delete \Device\HardDisk0\Partition1 oddíly, které běžně vidíme, jsou číslovány až od 1) diskpart /delete F: odstraní oddíl, který má přiřazeno písmeno F na disku 0 odstraní první oddíl (pozor, Úkoly 1. Zjistěte, do jaké míry program diskpart umožňuje pracovat s dynamickými svazky (používá se pojem volume). Dále zjistěte, jakým způsobem lze pomocí tohoto nástroje vytvořit RAID (diskpart umožňuje pracovat se zrcadlením disků). 2. Najděte na internetu postupy vytvoření bootovatelného USB disku a porovnejte s tím, který je popsán v příkladu 5.2. C R Program fsutil Program FSUTIL (součást systému až od verze XP) slouží ke správě diskových oddílů se souborovým systémem NTFS (ale rozumí také FAT a FAT32). Podobně jako u jiných silných příkazů je třeba mít administrátorská přístupová oprávnění (alespoň k provádění změn). Syntaxe je podobná příkazu net za názvem fsutil následuje upřesňující příkaz.

161 5.2 PAMĚŤOVÁ ZAŘÍZENÍ 153 fsutil fsinfo vypíše informace o diskových jednotkách a souborovém systému, například fsutil fsinfo drives vypíše seznam připojených jednotek (včetně externích) fsutil fsinfo drivetype d: chceme zjistit typ jednotky d: (například pevný disk, výměnné médium, sít ový disk, CD mechanika, apod.) fsinfo volumeinfo d: k zadané jednotce vypíše o něco podrobnější informaci (název a sériové číslo, souborový systém, atd.) fsutil fsinfo ntfsinfo d: pokud je na jednotce souborový systém NTFS, vypíšou se podrobné informace týkající se nastavení tohoto souborového systému (počet sektorů, počet clusterů, adresy některých metadat, atd.) fsutil fsinfo statistics d: vypíše statistické informace o jednotce (předpokládá se souborový sytém NTFS) jako je počet čtení, počet zápisů apod. Příklad 5.3 Zjistíme údaje o souborovém systému na oddílu C: pevného disku. C:\> fsutil fsinfo ntfsinfo c: Sériové císlo svazku NTFS: 0x9090dabe90daa9cc Verze: 3.1 Pocet sektoru: 0x c422f42 Celkový pocet clusteru 0x e8 Volné clustery: 0x b8ae55 Celkem vyhrazeno: 0x c0 Pocet bajtu na sektor: 512 Pocet bajtu na cluster: 4096 Pocet bajtu na segment záznamu souboru: 1024 Pocet clusteru na segment záznamu souboru: 0 Platná délka dat hlavní tabulky souboru (MFT): 0x d40000 Pocátecní císlo logického clusteru hlavní tabulky souboru (MFT): 0x c0000 Pocátecní císlo logického clusteru hlavní tabulky souboru (MFT2): 0x a14bc Zacátek zóny hlavní tabulky souboru (MFT): 0x ae00 Konec zóny hlavní tabulky souboru (MFT): 0x bca0 M Z údajů můžeme vyčíst, jak velký je oddíl (můžeme například vynásobit počet sektorů velikostí sektoru, pozor, hexadecimální číslo je třeba nejdřív převést na dekadické), sektory mají velikost 512 B (půl KiB) jak je dnes pořád ještě obvyklé (některé nejnovější disky 4 KiB), jeden cluster zabírá 8 sektorů, atd. Podobně zjistíme statistiku o daném oddílu disku: C:\> fsutil fsinfo statistics c: Typ systému souboru: NTFS Ctení souboru uživatele: Precteno bajtu souboru uživatele: Ctení disku uživatele: Zápisy do souboru uživatele: Zapsáno bajtu do souboru uživatele: Zápisy na disk uživatele: Ctení metadat: 5769 M

162 5.2 PAMĚŤOVÁ ZAŘÍZENÍ 154 Precteno bajtu metadat: Ctení metadat disku: Zápisy metadat: Zapsáno bajtu metadat: Zápisy metadat disku: Ctení hlavní tabulky souboru (MFT): 3802 Precteno bajtu tabulky MFT: Zápisy do tabulky MFT: Zapsáno bajtu tabulky MFT: Zápisy do tabulky MTF2: 0 Zapsáno bajtu tabulky MFT2: 0 Pocet ctení korenového indexu: 0 Precteno bajtu korenového indexu: 0 Zápisy do korenového indexu: 0 Zapsáno bajtu do korenového indexu: 0 Ctení rastru: 1195 Precteno bajtu rastru: Zápisy rastru: 3652 Zapsáno bajtu rastru: Ctení rastru tabulky MFT: 26 Precteno bajtu rastru tabulky MFT: Zápisy rastru tabulky MTF: 309 Zapsáno bajtu rastru tabulky MFT: Ctení indexu uživatele: 6742 Precteno bajtu indexu uživatele: Zápisy do indexu uživatele: 4614 Zapsáno bajtu do indexu uživatele: Ctení souboru protokolu: 6 Precteno bajtu souboru protokolu: Zápisy do souboru protokolu: Zapsáno bajtu do souboru protokolu: fsutil file práce s konkrétními soubory (vytváření, vyhledávání, atd.) fsutil file createnew d:\soubor.txt vytvoří nový soubor se zadaným názvem o délce B (necelých 10 KB) fsutil file findbysid novak d:\pisemnosti bude hledat soubor, jehož vlastníkem je novak, v adresáři d:\pisemnosti (funguje, pokud máme nastaveny diskové kvóty pro uživatele) Tento příkaz také dovoluje pracovat také s tzv. řídkými soubory. fsutil volume základní správa svazku možnost zjištění volného místa a možnost jeho odpojení fsutil volume diskfree d: zjistí, kolik volného místa je na disku d: (kolik lze ještě použít pro soubory pozor, neplést si s pojmem volné místo na fyzickém disku, se kterým jsme se setkali u příkazu diskpart v příkladu 5.2 na straně 151) fsutil volume dismount d: odpojí zadanou diskovou jednotku

163 5.2 PAMĚŤOVÁ ZAŘÍZENÍ 155 fsutil behavior zobrazí nebo změní chování souborového systému (NTFS) fsutil behavior query disablelastaccess zjistíme, zda je povoleno nebo zakázáno časové razítko při každém přístupu (zda se položka času posledního přístupu mění při každém přístupu k souboru včetně přístupu pouze pro čtení) pokud tento příznak není nastaven, zobrazí se hlášení disablelastaccess není aktuálne nastaven pokud naopak nastaven je, zobrazí se disablelastaccess = 1 fsutil behavior set disablelastaccess 1 nastavíme zákaz časového razítka při každém přístupu k souborům (to je praktické zvláště u SSD disků, kde každý nadbytečný zápis čehokoliv zbytečně snižuje životnost disku) Položek, které lze takto zjišt ovat nebo nastavovat, je více. Příkaz obsahuje vždy bud výraz query (zjišt ování) nebo set (nastavování). fsutil dirty pracuje s příznakem dirty ( špinavý ), se kterým jsme se setkali už u příkazu chkntfs (na straně 149) fsutil dirty query d: zjistí, zda je u oddílu D: nastaven příznak dirty fsutil dirty set d: jednotka D: je označena jako špinavá (pak by měla být tato jednotka zkontrolována při příštím startu systému) fsutil hardlink práce s pevnými odkazy (u novějších verzí NTFS jsou podporovány pevné odkazy s podobnými vlastnostmi jako pevné odkazy v unixových souborových systémech, také původní cesta k souboru je chápána jako pevný odkaz a tedy na každý soubor vede vždy nejméně jeden) fsutil hardlink create d:\zkratky\novy.dat c:\cesta\puvodni.dat vytvoří se pevný odkaz s názvem v prvním parametru za klíčovým slovem create, na existující soubor, který je posledním parametrem příkazu Pevné odkazy lze používat stejně jako původní cesty k souborům, pevný odkaz lze vytvořit pouze na běžný soubor (pevný odkaz na adresář by mohl způsobit zacyklení při některých operacích v souborovém systému) fsutil quota práce s kvótami (o kvótách jsme se učili v kapitole na straně 146). Kvóta stanovuje každému uživateli limit pro místo na jednotce, které může využívat pro své vlastní soubory. Obvykle je stanovena určitá tolerance (threshold), která sice může vyvolat poplach, ale uživatel ještě může do této stanovené míry kvótu překročit fsutil quota query d: zobrazí nastavení diskových kvót fsutil quota violations zobrazí porušení stanovených kvót fsutil quota track d: povolí sledování kvót fsutil quota enforce d: povolí vynucování kvót fsutil quota disable d: zakáže používání kvót

164 5.2 PAMĚŤOVÁ ZAŘÍZENÍ 156 fsutil quota modify d: novak vytvoří novou kvótu nebo pozmění existující pro zadaného uživatele; první číselný parametr určuje toleranci (threshold), druhý pak místo na jednotce vymezené zadanému uživateli (oba údaje v B) Poznámka: Pro úplnost souborový systém NTFS podporuje nejen pevné odkazy (které můžeme vytvářet například pomocí fsutil), ale i symbolické odkazy (to není úplně totéž jako zástupci). Lze je vytvářet (a také prohlížet a rušit) programem junction, který je ke stažení na stránkách junction -c d:programy c:\program files odkazu a jeho cíl) junction -d d:\programy odstraníme symbolický odkaz vytvoří symbolický odkaz (zadáváme název junction d:\abc.txt zjistí, zda zadaný soubor je či není symbolickým odkazem (funguje i na adresáře) junction -s c:\ vypíše (rekurzívně) všechny symbolické odkazy na disku C:, součástí výpisu může být například \\?\c:\\programy: JUNCTION Substitute Name: c:\program files Je zvláštní, že v aplikaci WinObj (seznámili jsme se s ní v kapitole o objektech) se symbolické odkazy (vytvořené pomocí junction) vůbec neobjevují, ale zato odkazy vytvořené pomocí příkazu subst tam najdeme (viz obr. 5.3). M Obrázek 5.3: WinObj po příkazu subst týká se jednotek R: a T: Úkoly 1. Zobrazte nápovědu příkazu fsutil a zjistěte, jaké další podpříkazy podporuje. 2. Pokuste se pomocí tohoto příkazu vytvořit nový soubor o nulové délce a soubor o délce 1 KB (dejte pozor na to, v jakých jednotkách se délka souboru zadává). U obou souborů použijte příponu TXT a pak je otevřete v některém editoru (třeba Poznámkovém bloku). 3. Na některý ze souborů vytvořených v předchozím úkolu vytvořte pevný odkaz v tomtéž adresáři, ale jinak pojmenovaný. Projděte si pak vlastnosti tohoto pevného odkazu (v kontextovém menu). 4. Zjistěte, zda jsou nastaveny kvóty na jednotkách pevného disku ve vašem počítači. 5. Zjistěte, jestli jsou nastavována časová razítka při každém přístupu k souboru na jednotkách vašeho disku. C R

165 5.2 PAMĚŤOVÁ ZAŘÍZENÍ Streamy v NTFS V souborovém systému NTFS můžeme ke každému souboru (i složce) přidružit stream proud dat (nebo více streamů). Fyzicky každý soubor obsahuje alespoň jeden (hlavní) stream, který je pojmenovaný názvem souboru. Ostatní streamy jsou pojmenované pouze doplňkovým řetězcem za názvem souboru a jsou přístupné přes dvojtečku, nazývají se alternativní datové streamy (ADS, Alternative Data Streams). Vytvořit stream můžeme bud programově (v procesu), a nebo ručně přesměrováním (například u krátkého řetězce stačí přesměrovat výstup příkazu echo, ale lze přesměrovat i obsah souboru). P Příklad 5.4 Vytvoříme textový soubor, jehož hlavní stream zůstane prázdný a ve dvou dalších streamech uložíme řetězce písmen. echo Ahoj > d:\soubor.txt:cesky echo Hello > d:\soubor.txt:anglicky more < soubor.txt:cesky more < soubor.txt:anglicky type test.txt první stream obsahuje český pozdrav, druhý stream obsahuje anglický pozdrav, vypíšeme stream s českým obsahem, vypíšeme další stream, vypíšeme obsah souboru všimněte si dvou věcí: tímto příkazem se nevypíše nic, soubor je sám o sobě prázdný (streamy jsou navíc, nejsou obsaženy v souboru), k výpisu souboru můžeme použít příkaz type, ale k výpisu streamů ho použít nelze (musíme je vypsat příkazem more a také přesměrování je nutné), můžete vyzkoušet výpis streamu příkazem type nebo more bez směrování (nebo nemusíte, když nemáte rádi chybová hlášení), dir test.txt vypsali jsme údaje o našem souboru velikost je 0. Je těžké poznat, jestli je u souboru ukrytý stream. Rychlé a spolehlivé (pokud máme podezření na jeden konkrétní soubor) je pokusit se tento soubor v grafickém režimu zkopírovat na diskový oddíl, jehož souborový systém nepodporuje streamy (třeba FAT32, což je obvyklé například na USB flash discích). Při pokusu o vložení podezřelého souboru na takový diskový oddíl se objeví hlášení, které vidíme na obrázku 5.4. Takto zjistíme názvy streamů a můžeme se podívat i na jejich obsah (třeba postupem z příkladu 5.4). Obrázek 5.4: Pokus o zkopírování souboru se streamy na FAT Při práci se streamy můžeme bud používat postup z předchozího příkladu, a nebo lze využít program Streams od firmy Sysinternals (je ke stažení na webu firmy). Tímto programem můžeme streamy také odstraňovat.

166 5.3 SPRÁVA PAMĚTI 158 streams soubor.txt vypíše streamy v zadaném souboru včetně jejich délky, výstup: Streams v Enumerate alternate NTFS data streams Copyright (C) Mark Russinovich Sysinternals - M soubor.txt: :anglicky:$data 8 :cesky:$data 7 streams -d soubor.txt streams -s c:\ výstup: odstraní všechny streamy u zadaného souboru. vypíše streamy všech souborů a adresářů na disku C: rekurzívně, zkrácený Streams v Enumerate alternate NTFS data streams Copyright (C) Mark Russinovich Sysinternals - M Error opening c:\pagefile.sys: Proces nemá přístup k souboru, nebot jej právě využívá jiný proces. c:\soubor.txt: :anglicky:$data 8 :cesky:$data 7 c:\documents and Settings\Uzivatel\Dokumenty\dokument.zip: :Zone.Identifier:$DATA 26 c:\windows\thumbs.db: :encryptable:$data 0... Ve Windows od verze Vista je příkaz dir obohacen o přepínač /r, který dokáže zobrazit i alternativní streamy (ve Windows XP máme v tomto směru smůlu): dir /s /b /r c:\ find $DATA Dalším nástrojem (volně dostupným) pro odhalování streamů je LADS. 4 Stream Zone.identifier bývá obvykle přidáván Internet Explorerem při stažení souboru z internetu. Ne všechny streamy jsou bohužel takto nevinné. Protože běžný uživatel prakticky nemá šanci náhodně zjistit, že k souboru patří alternativní stream (dokonce se v běžných výpisech včetně Průzkumníka neprojeví ani jeho délka), mohou být streamy zneužívány malwarem k transportu nežádoucích dat či kódu. Pokud výše popsanými technikami najdeme alternativní stream s délkou větší než obvyklou (ve výpisu streams tří- nebo víceciferné číslo), měli bychom zpozornět a spustit antispyware. Úkoly 1. Podobně jako v příkladu 5.4, vytvořte soubor se dvěma streamy. Zjistěte délku souboru a kolik místa zabírá na disku. 2. Pokud máte možnost, spust te rekurzivní vyhledávání streamů na vašem počítači. C 4 LADS je dostupný na

167 5.3 SPRÁVA PAMĚTI Správa paměti Adresování Toto téma bylo již probíráno na přednášce. Současné procesory mohou pracovat minimálně v těchto dvou režimech: 1. reálný procesor se chová jako i8086, používá jen 20 bitů na adresové sběrnici (1 MB), nelze použít ochranu paměti a tedy ani multitasking, většinou existuje podpora segmentace paměti, 2. chráněný (privilegovaný) procesor používá celý rozsah adresové sběrnice, využívá podpůrné obvody pro tento režim včetně dalších registrů (přístupných jen v chráněném režimu), podpora ochrany paměti, multitaskingu, používá se většinou segmentace se stránkováním paměti na žádost. Reálný režim procesoru Omezení adresace na 1 MB paměti se obchází takto: spuštěný proces (program) má přiděleny segmenty paměti pro konkrétní účely (například u Intelu kód, data, další data, zásobník, halda) absolutní adresy začátku segmentů začínají vždy na adrese, která je dvojkově zaokrouhlená nejméně na 4 bity (tj. adresa v binární podobě končí nejméně čtyřmi nulami) v segmentových registrech se ukládá upravená absolutní adresa začátku segmentu posunutá o 4 bity doprava binárně hex. absolutní adresa segmentu: B20 v segmentovém registru: B2 používáme relativní adresy uvnitř segmentu (offset), ty se ukládají do ostatních adresových a univerzálních registrů Současné operační systémy tento režim přímo nevyužívají. Chráněný (privilegovaný) režim znamená především možnost (ne nutnost) hardwarové ochrany paměti. Od předchozího se liší přidáním některých součástí (jsou přidány některé registry a příznaky) a odlišným zpracováním adres. V chráněném režimu mohou procesy běžet v několika různých okruzích Ring 0, Ring 1, Ring 2, Ring 3. Nejvnitřnější okruh, Ring 0, je nejvíce chráněný, je určen pro běh jádra operačního systému, ostatní okruhy mají úrovně ochrany odstupňovány. Registry a příznaky související s tímto režimem nesmí být jakkoliv ovlivňovány procesy běžícími v jiném okruhu než ring0, některé jsou pouze pro čtení dokonce i pro procesy z Ring 0. Ve skutečnosti jsou obvykle používány jen dva okruhy Ring 0 pro jádro operačního systému (privilegovaný/chráněný režim, režim jádra) a Ring 3 pro ostatní procesy (uživatelský režim). Doporučuje se sice například používat Ring 1 pro ovladače hardwaru, ale prakticky žádný běžný operační systém to nedělá. Adresace probíhá odlišně v privilegovaném režimu (Ring 0) a v uživatelském režimu (Ring 3). V privilegovaném režimu jsou v segmentových registrech přímo adresy segmentů, kdežto v uživatelském režimu najdeme v těchto registrech selektory.

168 5.3 SPRÁVA PAMĚTI 160 Adresace ve Windows v chráněném režimu funguje takto: pro různé objekty včetně bloků (segmentů) paměti se používají deskriptory (popisovače), každý deskriptor obsahuje GDT... Proces ABCD LDT deskriptor (ABCD) deskriptor (proměnné)... Operační systém Proměnné prom selektor offset P Instrukce... read prom... Obrázek 5.5: Tabulky deskriptorů ve Windows data související s používáním objektu (např. u segmentu paměti umístění, velikost, typ, apod., u zařízení jeho identifikaci, popis, požadavky na zdroje, atd.) přístupová oprávnění (SID s jejich případnými oprávněními) místo přímých adres segmentů se používají selektory; selektor je ukazatel na deskriptor (popisovač) každý proces (včetně systémových) má svou vlastní LDT (Local Descriptor Table) s deskriptory vlastních objektů existuje tabulka GDT (Global Descriptor Table) vedená systémem, ve které jsou deskriptory tabulek LDT všech procesů selektor je ukazatel do tabulky deskriptorů, obsahuje index řádku v dané tabulce LDT nebo GDT (u paměti jde o deskriptor daného segmentu), informaci, zda jde o index v GDT (bit je nastaven na hodnotu 0) nebo LDT (nastaven na 1), dva bity pro úroveň oprávnění (u Windows je to 00 pro ring0 nebo 11 pro ring3) v uživatelském režimu jsou v segmentových registrech selektory, tj. adresujeme dvojicí selektor:offset segmenty jsou dále děleny na stránky, tj. překlad virtuální adresy selektor:offset na fyzickou je víceúrovňový

169 5.3 SPRÁVA PAMĚTI 161 Při používání chráněného režimu možná dojde k závažnému posunu. Firma Microsoft již dlouho pracuje na novém operačním systému Singularity, který je momentálně chápán jako testovací prostředí nových myšlenek a technologií a zřejmě ještě dlouho v této fázi vývoje zůstane (uživatelům by zřejmě hodně vadilo chybějící grafické prostředí). Je zajímavé, že v Singularity je ochrana paměti a jiných zdrojů plně softwarová hardwarová ochrana se zde nepoužívá (z důvodu urychlení činnosti systému), všechny procesy běží v Ring 0. U novějších procesorů se objevila ochrana proti spouštění kódu na pamět ových stránkách s daty. U procesorů AMD jde o NX bit (Non- Executive), u Intelu XD bit (Execute Disable). Pokud má stránka nastaven tento bit na 1, je považována za datovou a při pokusu o zacházení s obsahem stránky jako s kódem (spuštění instrukcí zde uložených) je vyvolána výjimka, která většinou končí ukončením procesu, který se o to pokusil. Účelem je zabránit útokům typu přetečení paměti. Ve Windows (od verze XP) se tento typ ochrany (funkce DEP Zabránění spuštění dat) nastavuje v nástroji Systém, záložka Upřesnit, Možnosti výkonu. Úkoly Zjistěte, zda je zapnuta funkce DEP (Zabránění spouštění dat). Obrázek 5.6: Funkce Zabránění spuštění dat P C Stránkování Stránkovací soubor se obvykle jmenuje pagefile.sys a je na systémovém disku, ale ve skutečnosti můžeme mít více stránkovacích souborů (v tom případě by však každý měl být na jiném pevném disku). Názvy stránkovacích souborů najdeme v klíči HKLM/SYSTEM/CurrentControlSet/Control/Session Manager/Memory Management, a to v položce typu pole řetězců PagingFiles. Pokud máme více stránkovacích souborů, měl by být každý na jiném fyzickém disku (pokud je jich víc na stejném fyzickém disku, třeba i na jiných oddílech, může to systém dokonce zpomalit). Umístění stránkovacího souboru do samostatného oddílu na disku (odděleně od oddílů se systémem a daty) může být užitečné například proto, že takto nehrozí fragmentace stránkovacího souboru (ale na druhou stranu tady máme horní ohraničení pamět ové oblasti, která může být pro stránkování využita). V tomtéž klíči je ještě jedna zajímavá položka ClearPageFileAtShutdown. Pokud existuje a je nastavená na 1, před každým (regulérním) vypnutím systému se smaže stránkovací soubor. To je důležité z hlediska bezpečnosti, protože v stránkovacím souboru se mohou nacházet důležité P

170 5.3 SPRÁVA PAMĚTI 162 informace, které by se neměly dostat do nepovolaných rukou (jistá verze Windows takto zveřejnila nezašifrované heslo administrátora). Při potřebě uvolnění rámců v operační paměti se pro výběr oběti používá na jednoprocesorových systémech hodinový algoritmus, na víceprocesorových systémech algoritmus FIFO. Úkoly Zjistěte, kolik máte stránkovacích souborů a jak se jmenují. Také zkontrolujte, zda máte nastaveno mazání stránkovacího souboru při každém vypnutí systému. P C Struktura paměti Na architektuře x86 (tj. 32bitové) je na desktopu k dispozici standardně maximálně 4 GB virtuální paměti pro aplikaci, z toho max. 2 GB využívá proces, do zbylých 2 GB se mapuje systém. Toto rozložení lze změnit v XP a Server 2003 na 3+1, a to tak, že v souboru Boot.ini přidáme přepínač /3GB. FFFFFFFF C C FFFFFFF Nestránkovaný fond Stránkovaný fond Mezipamět systému Hyperprostor Stránkovací tabulky procesů Zavedené ovladače Vrstva HAL Jádro a exekutiva Kód DLL knihoven Zásobníky vláken Globální proměnné Aplikační kód 2 GB 2 GB Obrázek 5.7: Struktura paměti procesu na architektuře x86 Na obrázku 5.7 je běžná struktura virtuální paměti uživatelského procesu. Vysvětlíme si některé pojmy: Pracovní sada (Working Set, WS) je celkové množství paměti, která je aplikaci (prozatím) přidělena (pro označení horní hranice přidělení paměti se také používá pojem Peak WS ). Pracovní sada se dělí na dvě části soukromou (private) a sdílenou (shared). Údaje o pracovní sadě a obecně o paměti využívané procesy vidíme na obrázku?? (v Process Exploreru). Stránkovaný fond (Paged Pool) je virtuální pamět, která je přidělená procesu a může být stránkována (tedy odkládaná na disk, když je třeba uvolnit rámce ve fyzické paměti). P

171 5.3 SPRÁVA PAMĚTI 163 Obrázek 5.8: Pamět procesu Thunderbird.exe v Process Exploreru a Správci úloh Nestránkovaný fond (Non-paged Pool) je virtuální pamět, která je přidělená procesu a nemůže být stránkována, vždy se nachází ve fyzické operační paměti; tento typ virtuální paměti se používá pro data s časově kritickou dostupností. Hodnoty stránkovaného a nestránkovaného fondu uváděné v příslušných nástrojích (například ve Správci úloh) je však třeba brát s rezervou. Je tak pouze stanoveno, kolik které paměti minimálně spadá do dané kategorie. Na obrázku 5.8 vidíme hodnoty pro pamět procesu v Process Exploreru (včetně okna vlastností procesu) a pro srovnání tentýž proces ve Správci úloh. Pro přístup k dynamickým knihovnám se používá metoda známá také z jiných operačních systémů, copy-on-write. Spočívá v tom, že dokud proces ke knihovně přistupuje jen pro čtení, čte se ze sdíleného umístění knihovny, ale v okamžiku, kdy se proces pokusí zapisovat, knihovna je namapována do adresového prostoru procesu (na obrázku 5.7 jde o oblast v horních 2 GB) a zápis se provádí do soukromé kopie knihovny, aby pamět originální knihovny nebyla pozměněna. Úkoly 1. Otevřete Process Explorer. Dále spust te program Poznámkový blok (notepad.exe). V Process Exploreru najděte řádek pro Poznámkový blok, zobrazte vlastnosti (poklepáním na řádek) a ve vlastnostech se přesuňte na kartu Performance. 2. Okna umístěte tak, abyste viděli zároveň jak okno Poznámkového bloku, tak i okno s vlastnostmi jeho procesu. V následujícím postupu se zaměřte na údaje o pracovní sadě a virtuální paměti procesu. 3. Dále v Poznámkovém bloku běžným způsobem otevřete některý velký textový soubor (je jedno s jakou příponou). Sledujte, co se děje s pracovní sadou procesu při volbě otevření souboru v menu a co se stane při zobrazení obsahu otevíraného souboru. C

172 5.3 SPRÁVA PAMĚTI Správa paměti ve Windows od verze Vista Ve Windows od verze Vista (a také v serverové linii verzí od 2008) se koncepce správy paměti zcela změnila. Zatímco do verze XP včetně byla pamět přidělována procesům podle jejich momentálních potřeb, od verze Vista to funguje jinak. Když se pokusíme zjistit využívání paměti, s překvapením zjistíme, že je používáno velmi mnoho fyzické paměti (často téměř všechna). Je to z toho důvodu, že systém přímo masívně přednačítá do paměti to, o čem předpokládá, že bude v brzké době používáno. Tato funkce v určité omezené míře byla zahrnuta už ve Windows XP pod názvem Prefetch, ve Vistě byla v tomto směru značně rozšířena a nazýváme ji Superfetch. Funkce Superfetch je zajišt ována stejnojmennou službou běžící s poměrně nízkou prioritou, aby nezatěžovala systém. Je možné ji zastavit a znovu spustit jako každou jinou službu, například příkaz net stop superfetch zastaví tuto službu a pamět se začne pomalu uvolňovat (ne okamžitě). Tento postup volíme například tehdy, když máme spuštěnou aplikaci (třeba hru), která má vysoké nebo proměnlivé nároky na operační pamět. Od verze Vista se dost těžko odhaduje skutečná spotřeba paměti procesem. Příslušné ukazatele (pracovní sadu, stránkovaný fond, atd.) sice získáme podobným způsobem jako v předchozích verzích, ale uvedeným číslům nelze moc věřit (ani součty podmnožin pracovní sady nesedí), můžeme je použít pouze pro základní orientaci. Další technologie týkající se paměti také už vpodstatě známe z předchozího semestru, například ReadyBoost (používáme USB flash pamět jako nastavení cache paměti pro disk) nebo ReadyDrive (tam je flash pamět přímo součástí krabice s diskem, takže oproti ReadyBoost nemusí systém počítat s vytrhnutím flashky z konektoru bez řádného odpojení). Úkoly Pokud máte možnost pracovat s verzí Vista nebo novější, otevřete konzolu se službami (services.msc) a najděte službu Superfetch. Zjistěte její vlastnosti jak je spouštěna, ve kterém souboru se nachází, jaké má závislosti, pod jakým účtem je spouštěna apod. P C

173 Kapitola 6 Nasazení systému V této kapitole probereme některé důležité rysy operačních systémů typu Windows. Zde najdeme pokročilejší nebo komplexnější témata, která nebylo možné zařadit do předchozích kapitol. 6.1 Konfigurace systému a aplikací Konfigurační soubory pro starší programy Prostředí DOS programů se konfiguruje ve speciálních konfiguračních souborech, jiných pro systémy s DOS jádrem a jiných pro NT systémy. Níže uvedené soubory obsahují výchozí konfiguraci, ale u každého staršího programu lze ve vlastnostech jeho zástupce určit jakýkoliv jiný soubor podobné struktury, který (předem) vytvoříme. V systémech s DOS jádrem až do verze Windows ME se používají soubory P CONFIG.SYS konfigurace hardware, obvykle se zde načítaji ovladače, včetně ovladačů rozšířené paměti. Používáme zde speciální příkazy (např. DEVICE nebo DEVICEHIGH pro zavedení ovladače do paměti). Bývá tady také nakonfigurován ovladač zajišt ující národní prostředí a zobrazování českých znaků na obrazovce, například COUNTRY=042,852,C:\...\COUNTRY.SYS DEVICE=C:\...\DISPLAY.SYS CON=(EGA,,1) Ten první zajistí podporu českého prostředí (načtení české znakové stránky Latin2 852, nastavení českého formátu pro datum a další objekty 042), ten druhý načte ovladač pro podporu české znakové sady na obrazovce. Místo teček bude samozřejmě cesta k souboru. AUTOEXEC.BAT konfigurace uživatelského prostředí (operační systém a software). Mohou se zde používat prakticky všechny výše uvedené příkazy (je to dávkový soubor, většinou se zde nastavují systémové proměnné nebo spouštějí některé programy), a pak ještě další konfigurační příkazy, obvykle jde o modifikace příkazu MODE, například MODE CON CP PREPARE = ((852) C:\...\EGA.CPI) 165

174 6.1 KONFIGURACE SYSTÉMU A APLIKACÍ 166 MODE CON CP SELECT = 852 KEYB CZ, 852, C:\...\KEYBOARD.SYS Příkaz MODE má hodně možností použití, slouží obvykle k nastavování vlastností některých zařízení (obrazovky, tiskárny apod.). CON je zařízení obrazovka, CP (nebo CODEPAGE) je znaková stránka, první příkaz tuto stránku připraví k použití, druhý řádek ji vybere ze seznamu připravených stránek, třetí nastaví českou klávesnici. V systémech s NT jádrem se tyto soubory nepoužívají, pro konfiguraci DOS prostředí (včetně P prostředí příkazu COMMAND) se používají obdobné soubory ve složce System32, a to CONFIG.NT (obdoba CONFIG.SYS) a AUTOEXEC.NT (obdoba AUTOEXEC.BAT). Sada příkazů pro tyto soubory je obdobná sadě příkazů pro konfigurační soubory systémů s DOS jádrem, ale ne úplně stejná. Některé příkazy není nutné použít, protože se provedou automaticky (například nastavení národního prostředí a znakové sady). Soubory (NT) jsou okomentovány, ale nejsou zdokumentovány v nápovědě (alespoň základní příkazy však ano). Obrázek 6.1: Určení konfiguračních souborů pro DOS program Můžeme si vytvořit vlastní varianty těchto souborů, pro daný DOS program určíme jejich používání ve vlastnostech spustitelného souboru (pokud to nejde, musíme nejdřív vytvořit zástupce spustitelného souboru a pak provést nastavení ve vlastnostech tohoto zástupce), na kartě Program, tlačítko Upřesnit, jak vidíme na obrázku 6.1. Úkoly 1. Prohlédněte si soubory autoexec.nt a config.nt, zjistěte, jaká nastavení momentálně obsahují. 2. Pokud máte některou starší DOS aplikaci, vytvořte jejího zástupce a v jeho vlastnostech zkontrolujte, které konfigurační soubory jsou nastaveny. Pak vytvořte nové (ve stejném adresáři, kde je aplikace), a přesměrujte na ně konfiguraci aplikace. 3. Zjistěte, co vše lze nastavovat příkazem mode. C R INI soubory Soubory s příponou INI se ve starších verzích Windows běžně používaly jako konfigurační soubory, zvláště v době, kdy ještě neexistoval registr. Dodnes se pro tyto účely používají a protože běžní uživatelé mají jen omezený přístup do registru, použití INI souborů místo umístění konfigurace do registru zjednodušuje instalaci a případnou další konfiguraci, protože INI soubory lze samozřejmě umístit i do domovské složky uživatele. Soubory s příponou INI najdeme i v systémových složkách. Je to zejména soubor desktop.ini, který je umístěn v každé složce, pro kterou je zapnuto Vlastní nastavení (v Možnostech složky). Některé systémové INI soubory existují spíše z důvodu zpětné kompatibility s aplikacemi Windows 3.x.

175 6.1 KONFIGURACE SYSTÉMU A APLIKACÍ 167 Konfigurační informace ve vlastních INI souborech využívají také s úspěchem aplikace portované (přenesené) z jiných operačních systémů (OpenOffice.org, Firefox aj.), kde je používání textových konfiguračních souborů běžné a proto přenesení tohoto chování je jednodušší než programování přístupu do registru. Ale i aplikace primárně psané pro Windows často ukládají konfiguraci do INI souborů. Jedná se o textové soubory s částečně vázaným formátem (tj. je zvykem zachovávat určitá formátovací pravidla). Většina programovacích jazyků podporuje práci s INI soubory speciálními příkazy pro tento účel určenými, uživatelé je také mohou otevírat v textových editorech (ale neukládat s formátováním!), například v Poznámkovém bloku. INI soubory jsou rozděleny na sekce. Každá sekce začíná názvem sekce umístěným v hranatých závorkách, pomocí programových prostředků (příkazů) se lze v INI souboru rychle přesunout na sekci s daným názvem. Uvnitř každé sekce je pak sekvence přiřazovacích příkazů (klíčů) ve tvaru vlastnost = hodnota, každý na jednom řádku. Můžeme také používat komentáře (začínají středníkem). INI soubor může vypadat například takto: ; nastavení fontu programu: [Font] hlavni=bookman kodprog=times M ; barvy použité v okně: [Barva] pozadi=white font=black zvyrazneny=red ; umístění a rozměry okna programu: [Okno] left=20 right=0 width=750 height=400 Pro systémové INI soubory existuje ve Windows Editor systémové konfigurace, spouštěný příkazem sysedit.exe. Úkoly 1. Najděte jakýkoliv soubor desktop.ini a prozkoumejte jeho obsah. 2. Najděte kterýkoliv soubor s příponou INI v některém z podadresářů v adresáři Program Files, otevřete v Poznámkovém bloku a prohlédněte si jeho strukturu. 3. Otevřete Editor systémové konfigurace a zjistěte, které soubory jsou v něm dostupné. C INF soubory INF soubory jsou podobné INI souborům, i včetně jejich struktury. Jejich určení je ale trochu jiné. Obvykle obsahují konfigurační informace ovladačů a většina z nich se nachází ve složce Inf, některé také ve složce System32. Jsou také rozděleny do sekcí, lze na ně použít tytéž programátorské postupy.

176 6.1 KONFIGURACE SYSTÉMU A APLIKACÍ 168 K INF souborům existují do páru stejně pojmenované soubory s příponou PNF. Narozdíl od INF souborů, PNF soubory jsou binární, předkompilované. INF soubory obvykle začínají sekcí [Version], ve které je informace o nejnižší verzi Windows, pro kterou je soubor určen (často tu bývá například $Chicago$, tj. pro všechna Windows od verze 95 1 ) nebo $Windows NT$ (tj. pro NT systémy, nelze použít například pro Windows 95/98/ME). Dále je zde většinou název a kód třídy zařízení. Pokud soubor nepatří konkrétní třídě (například layout.inf nebo apps.inf), je kód nulový a název není uveden. Asi nejsrozumitelnější je poslední sekce až ke konci souborů, [Strings]. Tady najdeme konkrétní přiřazení řetězců zkratkám použitým výše. Nejdůležitějším INF souborem je layout.inf. Na tento soubor se odvolává většina ostatních INF souborů, obsahuje obecné informace o systému, které jsou potřebné pro instalaci a nastavení ovladačů. Soubor začíná takto: [Version] signature=$windows NT$ ClassGUID= Dalším obecným INF souborem je apps.inf, který zajišt uje správné chování starých 16bitových aplikací a jejich ovladačů. Pro změnu si ukážeme část poslední sekce (je velmi dlouhá): [Strings]... ACAD.EXE= Autocad ACAD386.BAT= Autocad BASIC.COM= Microsoft Basic BC.EXE.1= Borland C++ IDE BC.EXE.2= Microsoft Basic Compiler COMMAND.COM= Příkazový řádek MS-DOS EDIT.COM= MS-DOS Editor EDIT.EXE= IBM Professional Editor MEM.EXE= MS-DOS Memory Information MEMMAKER.EXE= MS-DOS Memory Optimizer PAINT.BAT= PC Paintbrush IV Plus PCSHELL.EXE= PCTools PCShell PING.EXE= Nástroj FTP PING UNDEL.EXE= PCTOOLS - UnDelete UNDELETE.EXE= UNDELETE (dos)... M M Ve složce Inf najdeme mnoho zajímavých souborů, například au.inf pomáhá nastavit automatické aktualizace (AutoUpdate), games.inf obsahuje informace o jednoduchých předinstalovaných hrách, cdrom.inf slouží při instalaci CD mechanik, atd. Úkoly 1. Najděte soubor monitor.inf (je ve složce Inf). Prohlédněte si celou strukturu tohoto souboru. Zjistěte, pro které verze Windows je tento soubor určen, do jaké třídy patří zařízení, která má pomoci instalovat, prohlédněte si také sekci [Strings]. 2. Zkopírujte do schránky identifikační číslo třídy zařízení (ClassGUID). Otevřete registr (regedit) a vyhledejte klíč s tímto názvem. Prohlédněte si obsah nalezeného klíče. C R 1 Chicago je kódové jméno Windows 95.

177 6.1 KONFIGURACE SYSTÉMU A APLIKACÍ Registr V této podsekci shrneme a rozšíříme naše dosavadní znalosti o registru Windows (v angličtině Windows Registry). Z předchozího semestru víme, že rozlišujeme několik pojmů: větev registru začíná vždy některým z hlavních klíčů HKLM (Local Machine), HKU (Users), HKCU (Current User), HKCR (Classes Root), HKCC (Current Config), podstrom registru dva z hlavních klíčů jsou na počítači unikátní (to jsou podstromy) HKLM a HKU, ostatní hlavní klíče pouze odkazují na některý z podklíčů těchto podstromů podregistr (hive, úl) tento pojem se vztahuje k souborům, ve kterých je registr uložen: několik systémových podregistrů s názvy sam, security, software, system, všechny jsou uloženy v...\system32\config, jde o podklíče v klíči HKLM, pro každého uživatele jeden s názvem ntuser.dat uložený v profilu uživatele, tyto podklíče jsou v klíči HKU, resp. HKCU pro právě přihlášeného uživatele, další pomocné podregistry, především HKU/.Default (tento podregistr najdeme ve stejném adresáři jako systémové podregistry, soubor default), a dále klíče HKU/ SID _Classes (tento podregistr je v souboru %userprofile%/local Settings/Data Aplikací/Microsoft Windows/usrClass.dat, kde podřetězec %userprofile% je cesta k profilu uživatele s daným SID). Všimněte si, že v klíči HKLM je ještě jeden podklíč hardware. Pro tento podklíč však neexistuje žádný podregistr, protože všechny údaje, které v něm najdeme, jsou dynamicky generovány při každém startu systému a proto nejsou nikde uloženy. Víme, že ve Windows řady NT (a ve Windows s DOS jádrem od verze 95) se konfigurace systému a aplikací obvykle ukládá do registru. Protože se jedná o binární soubory, je zpracování údajů registru pro procesy (a nebo v textové konzole) o něco náročnější, nelze použít přímou úpravu těchto souborů. Shrňme si, jaké máme možnosti: programy regedit.exe a regedt32.exe pouze pro uživatele klepajícího myší u počítače, i vzdáleného, soubory s příponou REG lze jen bud exportovat z výše zmíněných programů, a nebo načíst do registru nová data, ale pro proces není možné tímto způsobem data z registru získat, příslušné API funkce a nebo funkce či třídy a objekty nabízené programovacími nástroji (pro procesy), program reg.exe (pro uživatele i procesy, je až od Windows verze XP/Server 2003), další. Ted nás bude zajímat program reg.exe. Tento program je určen k běhu v Příkazovém řádku a s jistými omezeními ho lze použít i procesem. Má syntaxi podobnou příkazu net, ale množství variant je výrazně menší. Probereme postupně jednotlivé varianty. reg query takto získáváme údaje z registru; zadáváme vždy větev registru, která nás zajímá (větve začínají některým z řetězců HKLM, HKU, HKCU, HKCC, HKCR), můžeme zadat také větev ze vzdáleného registru (na jiném počítači), řetězec obsahující mezery uzavřeme do uvozovek

178 6.1 KONFIGURACE SYSTÉMU A APLIKACÍ 170 reg query HKLM\system\currentcontrolset\Control\Session Manager vypíšou se všechny záznamy (položky) zadaného klíče a všechny jeho podklíče reg query HKCU\Control panel\desktop /v autoendtasks přepínač /v vypíše momentální nastavení hodnoty AutoEndTasks v zadaném klíči reg query HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\ Memory Management /v clearpagefileatshutdown takto zjistíme momentální nastavení hodnoty (položky) ClearPageFileAtShutdown v zadaném klíči reg query HKCU\Software\OpenOffice.org /s vypíšou se všechny údaje, a to rekurzívně i v podklíčích reg query \\pocitac\hku takto přistupujeme ke vzdálenému registru (jednoduše před název hlavního klíče dáme název počítače podle UNC adresy); na vzdálených počítačích můžeme přistupovat pouze k podstromům registru, tj. ke klíčům HKLM a HKU (a jejich podklíčům), nelze zadat například HKCU reg copy kopíruje obsah jednoho klíče do druhého (počítá se spíše s využitím kopírování mezi dvěma různými počítači) reg copy \\RefPocitac\HKLM\software \\JinyPocit\HKLM\software /s /F zkopíruje celou softwarovou konfiguraci (obecně) z jednoho počítače na jiný (pozor, pokud chceme tímto způsobem přenášet konfiguraci mezi počítači, musíme toho přenést poněkud více), a to rekurzívně (/s) a bez požadavku na potvrzování kopírování (/F) Pokud nezadáme UNC počítače, pracuje se s větví registru lokálního počítače. reg delete odstraní z registru podklíč nebo položku reg delete HKCR\.xxx odstraní zadaný podklíč v reg delete HKLM\software\program /v cfile odstraní položku cfile v zadaném klíči reg delete HKLM\software\program /ve v zadaném klíči odstraní všechny položky, které nemají vloženu žádnou hodnotu (empty) reg delete HKLM\software\program /va v zadaném klíči odstraní všechny položky (ale podklíče nechá) reg export slouží k exportu větve do souboru s příponou REG reg export HKCU\AppEvents\EventLabels d:\uzivateludalosti.reg exportujeme zadanou větev registru do REG souboru reg import importujeme obsah REG souboru do registru reg import uzivateludalosti.reg import zadaného REG souboru Příkaz reg má ještě další parametry. Kromě běžných větví registru můžeme také zvlášt pracovat s podregistry. Podregistr můžeme dočasně připojit, pak znovu odpojit nebo uložit podregistr do

179 6.1 KONFIGURACE SYSTÉMU A APLIKACÍ 171 souboru s příponou HIV (zkratka z hive ), připojovat můžeme pouze pod klíče HKLM a HKU. Pro tyto účely slouží podpříkazy save, load, atd. Používání příkazu reg přímo na Příkazovém řádku je poměrně jednoduché (když neznáme syntaxi, stačí použít přepínač /?, stejně jako u kteréhokoliv jiného příkazu), horší je to ve skriptu (dávkovém souboru) nebo v procesu. Příkaz totiž vypisuje poněkud hodně informací (nejen to, co chceme). Na začátku výpisu se vždy zobrazí řádek! REG.EXE VERSION xxx (zobrazí se číslo verze souboru) a zbytek výpisu je prokládán prázdnými řádky. Při automatickém zpracování tedy musíme přeskočit řádky začínající symbolem! a prázdné řádky, a dále je třeba rozpoznat názvy klíčů od názvů položek. Pokud nás zajímá, které podregistry jsou kde uloženy (a obvykle takto také můžeme zjistit přiřazení SID konkrétnímu uživateli), podíváme se do klíče HKLM/SYSTEM/CurrentControl- Set/Control/hivelist, ve kterém najdeme položky nazvané podle názvů objektů registru, jejichž hodnotou je umístění příslušného souboru. Úkoly 1. V nápovědě příkazu reg zjistěte, jak konkrétně se dá pracovat s podregistry. 2. Vyberte si kteroukoliv větev registru a vyzkoušejte na ní příkazy reg query (včetně přepínačů) a reg export. 3. V nápovědě příkazu for zjistěte, jak při použití parametru /F určit, že řádky začínající symbolem! budou považovány za komentáře. Dále najděte způsob, jak při použití příkazu for přeskočit několik prvních řádků (například ten s komentářem). 4. Pokud máte dostatečná přístupová oprávnění, vyzkoušejte si připojení podregistru (můžete v grafickém režimu): Otevřete složku...\windows\repair. Obsah této složky je obvykle generován při instalaci nebo reinstalaci systému, kdy se jednotlivé podregistry teprve vytvářejí. Vytvořte kopii souboru system (bez přípony), kopii nazvěte např. system.hiv. Tento krok není až tak nezbytný, ale z bezpečnostních důvodů budeme pracovat s touto vytvořenou kopií. Otevřete Editor registru (regedit.exe, na Windows 2000 regedt32.exe). Klepněte na klíč HKLM (aby byl aktivní). V hlavním menu aplikace zvolte Soubor Načíst podregistr, najděte kopii, kterou jste vytvořili v předchozím kroku (system.hiv). Je třeba zadat název klíče, zadejte Test (může to být cokoliv, ale bez diakritiky a bez mezer). V klíči HKLM se objeví podklíč Test. Prohlédněte si jeho obsah a porovnejte s klíčem HKLM/System. Pak připojený podregistr odpojte sbalte jeho strom, klepněte na jeho název (Test) a pak v hlavním menu zvolte Soubor Uvolnit podregistr. Tento postup je výhodný například tehdy, když počítač nelze spustit a příčinu chceme najít (nebo napravit) v registru (podregistr můžeme připojit i z jiného počítače a nebo například z prostředí Windows PE). Postup si můžete vyzkoušet i s použitím příkazu reg jde o podpříkazy load a unload. Syntaxi zjistíte v nápovědě příkazu. M C R

180 6.2 START SYSTÉMU Podívejte se do adresáře, ve kterém je systémová část registru...\system32\config. Zobrazte vlastnosti kteréhokoliv podregistru (souboru bez přípony, máte zapnuté zobrazování přípon souborů známých typů?). Všimněte si, že údaje Velikost a Velikost na disku jsou stejné (porovnejte s jiným typem souborů, třeba s některým LOG souborem). Je to z toho důvodu, že pokud je soubor s podregistrem prodlužován (nebo zkracován), přidává se vždy najednou celý blok paměti o velikosti 4096 B (4 KB), která je odvozena od obvyklé velikosti clusteru na disku (můžete si ověřit třeba na kalkulačce). 6. Vlastníkem načtených podregistrů (tedy souborů system, sam, atd.) je jádro. Ve struktuře procesů zobrazených v aplikaci Process Explorer je jádro představováno řádkem System. Zobrazte seznam manipulátorů vlastněných tímto procesem (handlů) a najděte mezi nimi podregistry (jedná se o objekty typu soubor, file). R R 6.2 Start systému Windows s DOS jádrem Při startu systému lze použít klávesnici pro určení typu spuštění Windows. Klávesy nebo klávesové zkratky držíme od chvíle před startem systému po dobu, než systém na tyto klávesy zareaguje. Jsou to: F5 F6 start bez konfiguračních souborů (soubory config.sys a autoexec.bat) totéž, ale v síti F8 start s úvodním (startovacím) menu (v některých verzích Windows také klávesa Ctrl ) Shift+F5 Shift start MS-DOS 7.0 bez konfiguračních souborů pokud tuto klávesu držíme po celou dobu startu systému od potvrzení přihlášení (až do chvíle, kdy se objeví ikony na ploše), nespustí se programy uložené ve složkách Po spuštění (Startup) Úvodní (startovací) menu umožňuje například spustit nouzový režim, nebo pokud máme zároveň nainstalované předchozí verze Windows (ne přeinstalované), tak je lze spustit odtud. Úvodní menu je použitelné především pro možnost spuštění systému v nouzovém režimu. V tomto režimu je systém načten ve výchozím nastavení (standardní ovladače monitoru a myši, z ostatních ovladačů pouze to nejnutnější). Systém spouštíme v nouzovém režimu, pokud nemůžeme spustit systém po instalaci nového ovladače nebo aplikace, po nevhodných zásazích do konfigurace systému nebo při jakémkoliv poškození ovladačů. Je možné odtud také instalovat aktualizace Windows včetně Service Packů. Pokud chceme, aby se ve Windows s DOS jádrem vždy při startu systému zobrazilo úvodní menu, pak do MSDOS.SYS přidáme do sekce [Options] řádek BootMenu=1 P

181 6.2 START SYSTÉMU 173 Je možné zakázat zobrazování startovací nabídky pomocí kláves F5 a F8, a to také v souboru MSDOS.SYS. Toto nastavení se provádí také v sekci [Options], kde přidáme řádek BootKeys=0 V systémech s NT jádrem je pro tento účel třeba upravit soubor ntldr Windows 2000 a XP Úvodní (startovací) menu zobrazíme tak, že držíme klávesu F8 je tato vlastnost zakázána, nefunguje to). Ve Windows S NT jádrem startovací menu nabízí tyto možnosti: během startu systému (ale pokud Stav nouze: Při startu systému jsou načteny pouze ovladače pro nejdůležitější zařízení (monitor, myš, klávesnice, apod.), a to standardní (od Microsoftu), není zprovozněna sít, jsou spuštěny pouze nejdůležitější služby systému. Stav nouze s prací v síti: Totéž jako předchozí bod, navíc jsou načteny i ovladače pro práci v síti. Stav nouze se systémem MS-DOS: (Stav nouze s příkazovým řádkem) Zde nejde o pravý systém MS-DOS (některé soubory, které s MS-DOSem souvisejí, ve Windows NT ani neexistují), ale o spuštění systému bez grafického rozhraní, registru a služeb Windows, pouze s nejnutnějšími standardními ovladači, je to obdoba Příkazového řádku. Povolit protokolování při spouštění: Systém se spouští jako obvykle, ale během tohoto procesu se vytváří protokol (textový soubor s názvem ntbtlog.txt v systémovém adresáři) obsahující informace o stavu načtení všech ovladačů a služeb (zda bylo či nebylo načtení úspěšné). Je to obdoba souboru bootlog.txt ze systémů s DOS jádrem. Do souboru ntbtlog.txt je ukládán protokol také při předchozích možnostech Stavu nouze. Zapnout režim VGA: Omezení na načtení pouze standardních verzí ovladačů se týká pouze ovladače grafické karty. Tuto položku použijeme, pokud se nezdařila instalace ovladače grafické karty nebo je tento ovladač poškozen (monitor je při běžném spuštění systému nečitelný ). Poslední známá platná konfigurace: Při spuštění systému není brán ohled na změny v konfiguraci provedené pomocí nástrojů ve Windows (registr, konfigurace ovladačů v registru), ale použije se nastavení uložené v registru, změny v konfiguraci do definitivní konfigurace dostávají až při restartu nebo dalším spuštění systému, tedy tyto změny jsou zahozeny ). Nelze tak řešit změny v konfiguraci typu poškozených systémových souborů nebo ovladačů. Režim ladění: Pro diagnostiku problémů můžeme použít nástroje pro ladění jádra (některé jsou ke stáhnutí na stránkách Microsoftu). Během spouštění systému mohou být zasílány sériovým kabelem informace o ladění do jiného počítače. Údaje o konfiguracích jsou v klíči HKLM/System. V klíči HKLM/System/Select najdeme několik důležitých položek: Current obsahuje číslo momentální platné konfigurace; obvykle je zde číslo 1, což znamená, že platná konfigurace je v klíči HKLM/System/ControlSet001, do tohoto klíče odkazuje klíč HKLM/System/CurrentControlSet, P

182 6.2 START SYSTÉMU 174 Default označuje výchozí volbu, obvykle obsahuje stejné číslo jako Current, LastKnownGood obsahuje číslo poslední známé platné konfigurace (před změnami, které mohly způsobit problémy), například pokud je zde číslo 2, poslední známá platná konfigurace je v klíči HKLM/System/ControlSet002, Failed obsahuje číslo konfigurace, jejíž načtení se nezdařilo (pokud je zde 0, znamená to, že žádné problémy se nevyskytly). V úvodním menu se mohou objevit i další položky. Některé jsou tam přidány při instalaci po síti nebo dodatečné instalaci některých modulů, například pokud chceme, aby zde byla možnost spuštění Konzoly pro zotavení (s Konzolou pro zotavení jsme se již trochu seznámili v předchozím semestru), vložíme do mechaniky instalační CD a nainstalujeme ji, tedy zadáme příkaz (předpokládejme, že CD disku je přidělena jednotka X): X:\i386\winnt32.exe /cmdcons Start počítače probíhá takto: 1. BIOS spouští test POST (Power On Self Test) pro základní desku kontrola hardwaru (množství operační paměti, připojené disky, klávesnice, apod.), načte konfiguraci počítače z paměti CMOS (čip na základní desce), tam také zjistí pořadí zařízení, ze kterých se má spustit operační systém, pak proběhne test POST také na některých rozšiřujících kartách (např. řadiče disků, grafická karta), 2. BIOS se pokouší zavést operační systém nejdřív z prvního zaváděcího zařízení (obvykle to je pevný disk), v případě neúspěchu (disk není systémový,... ) z druhého, atd.; disk, ze kterého lze načíst systém, musí být označen příznakem aktivní (o tomto příznaku jsme se už něco dozvěděli například u příkazu diskpart), 3. pokud BIOS našel zaváděcí zařízení, ze kterého lze zavést operační systém, spustí příslušný zavaděč (ve speciálním sektoru na disku je jeho adresa). V případě Windows řady NT je tímto zavaděčem proces ntldr (NT Loader, nachází se na systémovém disku), který provede samotné zavedení systému. Zavaděčem může být také některý Boot Manager, který umožní zvolit si mezi více nainstalovanými operačními systémy, po zvolení je spuštěn již konkrétní zavaděč operačního systému (ntldr je vlastně taky jednoduchý Boot Manager, ale umí pracovat pouze s operačními systémy z rodiny Windows). V případě zavádění Windows 2000 a XP na platformě x86 je další průběh následující: 1. proces ntldr načte soubor BOOT.INI, pokud je v něm uvedeno více operačních systémů z rodiny Windows, zobrazí nabídku těchto systémů (s vlastnostmi uvedenými v BOOT.INI), další body platí pro případ, že byl zvolen systém Windows řady NT, jinak jinak je předáno řízení souboru BOOTSECT.DOS (obsahuje údaje o boot sektorech operačních systémů Windows s DOS jádrem), případně zavaděči jiného NT systému, 2. ntldr přepne procesor z reálného do chráněného režimu a načte některé systémové soubory, BIOS již dále není používán pro přístup k zařízením, 3. ntldr spouští program ntdetect.com, který provede detekci hardwaru (postupuje podle zvoleného hardwarového profilu, pokud jsou tyto profily definovány) a získané informace předá procesu ntldr, P

183 6.2 START SYSTÉMU ntldr spustí hlavní soubor jádra ntoskrnl.exe a načte knihovnu hal.dll (Hardware Abstraction Layer, vrstva abstrakce hardwaru), načítá řídicí sady (většinou ovladače a služby) uvedené v registru v klíči HKLM/System/Current ControlSet (nebo ControlSetxxx, podle typu spuštění systému), včetně služeb, které se mají spouštět při startu počítače, 5. ntldr spustí Správce relací (relací uživatelů, sessions) SMSS.EXE a předá mu řízení, 6. Správce relací dále vytváří systémové proměnné, spouští ty podsystémy, které jsou potřeba již při začátku práce na počítači: především podsystém Windows, který je nutný i pro nastartování grafického režimu (pro režim jádra je představován ovladačem Win32k.sys, pro uživatelský režim souborem csrss.exe), spustí Správce přihlašování (winlogon.exe), atd., 7. Správce prihlašování pak spouští podsystém SCM (Správce služeb určený souborem services.exe, seznámíme se s ním v následující kapitole na straně 100) a podsystém LSASS (pro ověřování přístupu, soubor lsass.exe, taktéž se s ním seznámíme později), a dále umožní přihlášení uživatele (podsystém lsass kontroluje údaje získané při přihlášení), 8. uživatel je přihlášen a projeví se některá nastavení jako třeba Zásady skupiny (pro počítač i uživatele), případně přihlašovací skripty, pokud existují, jsou spuštěny procesy, které se mají spustit po přihlášení jsou uvedeny v registru a ve složce Po spuštění (Startup). Rozpoznávání zařízení službou Plug&Play běží od spuštění této služby (bod 4.) nezávisle na přihlašovacím procesu. Další informace můžeme získat například na adresách Konfiguraci zavádění systému můžeme provádět bud přímo v souboru boot.ini (je vždy na disku C:, i když není systémový) nebo v grafickém režimu v ovládacím panelu Systém (v kontextovém menu ikony Tento počítač zvolíme Vlastnosti nebo jednoduše spustíme soubor sysdm.cpl), záložka Upřesnit, část Spuštění a zotavení systému. Víme, že v souboru boot.ini je konfigurace zavádění Windows. Tento soubor můžeme upravovat bud přímo (ovšem je chráněn atributem read-only a příslušnými ACL seznamy) nebo v nástroji Systém (záložka Upřesnit, oblast Spuštění a zotavení systému) pouze základní nastavení. Ve Windows XP a Server 2003 je k dispozici nástroj bootcfg (v Konzole pro zotavení). Umožňuje pracovat se souborem boot.ini na Příkazovém řádku, a to i na vzdáleném počítači (v lokální síti). Syntaxí se nebudeme podrobně zabývat (nápovědu lze získat běžným způsobem jako u kteréhokoliv jiného příkazu), podrobnější informace najdeme například na adresách Parametry použitelné v souboru boot.ini najdeme například na

184 6.3 INSTALACE WINDOWS Windows Vista a novější Vista od SP1 obsahuje podporu EFI (EFI je modernější varianta BIOSu, probírali jsme to v předmětu Technické vybavení osobních počítačů). Místo souboru ntldr se pro načtení systému používá dvojice programů: Windows Boot Manager (soubor bootmgr) správce zavádění systémů (zobrazuje startovací nabídku), Windows Loader (soubor winload.exe) provede vlastní zavedení systému. Jedním z mnoha rozdílů mezi ntldr a bootmgr je samozřejmě na straně bootmgr podpora EFI (je zobrazován v EFI jako jedna z rozpoznaných položek). Start počítače probíhá takto: start BIOSu nebo EFI, podle architektury, včetně příslušných testů, start Windows Boot Managera (bootmgr), zobrazení jeho nabídky (pokud je tak nastaven), v nabídce je volba pro spuštění Windows Vista nebo novější (spuštěním winload.exe), obnovení z hibernace (spuštěním winresume.exe), případné spuštění starší verze Windows, pokud je některá nainstalována, další volby. Pro konfiguraci zavádění lze použít rozhraní BCD od firmy Microsoft. Toto rozhraní přistupuje k prostředkům přes WMI. Je to programové rozhraní (používané procesem, jedná se o sadu funkcí). BCDEdit je nástroj pro Příkazový řádek, který využívá rozhraní BCD. Je obsažen přímo ve Windows (od verze Vista/Server 2008) a slouží k podobnému účelu jako bootcfg v Konzole pro zotavení Windows XP. Popis parametrů najdeme například na Program BCDEdit není zrovna uživatelsky přítulný. Aplikace EasyBCD 2 od firmy NeoSmart Technologies sloužící ke stejnému účelu má přehledné grafické rozhraní a je volně ke stažení. Umožňuje dokonce snadné nastavení zařazení unixových operačních systémů do startovací nabídky Windows Boot Managera. Úkoly 1. Na svém počítači najděte výše popsané soubory (platné pro váš operační systém). Nezapomeňte si zobrazit skryté soubory a chráněné soubory operačního systému. Také nechte zobrazovat přípony souborů známých typů (vzpomeňte si, kde se tato nastavení provádějí). 2. Otevřete soubor msdos.sys (je vždy na disku C:, a to i na NT systémech). Projděte si sekci [options]. 3. Na internetu najděte stránky s popisem aplikace EasyBCD a zjistěte, co vše v ní lze nastavovat. 4. V registru najděte klíč HKLM/System/Select a prohlédněte si momentální hodnoty položek v tomto klíči. Prohlédněte si vlastnosti souboru ntdetect.com a dále podle verze Windows bud ntldr nebo bootmgr a winload.exe. P C 2 EasyBCD je ke stažení na

185 6.3 INSTALACE WINDOWS Instalace Windows Instalace Windows do verze XP Rozlišujeme několik základních typů instalací Windows: Čistá instalace: instalujeme na prázdný zformátovaný logický disk (budoucí systémový disk) nebo provedeme formátování na začátku instalace, instalace probíhá bez jakékoliv vazby na předchozí operační systém, který byl případně na daném logickém disku nainstalován. Inovace (přeinstalování): na budoucím systémovém disku je již nainstalován některý operační systém typu Windows, chceme ho přeinstalovat na vyšší verzi. U některých systémů nelze provést inovaci (například nelze Windows 3.x nebo 95 inovovat na Windows XP, ale na Windows 98 nebo 2000 již ano). Instalace vedle jiného operačního systému: provádí se do jiného adresáře (složky) nebo na jiný logický disk, podle typu systémů. Účelem je funkčnost předchozího (předchozích) i nového operačního systému. Poslední možnost může být v případě Windows problematická. Za určitých okolností dokážou vedle sebe na jednom logickém disku existovat MS-DOS a některé Windows s DOS jádrem, pokud ale chceme instalovat Windows s NT jádrem vedle jiných Windows, musí to být na jiný logický disk. Jiný operační systém než Windows je tvrdě ignorován. Problémy nastávají s přístupem k zavaděči jiných systémů řešení bude probíráno později. Za normálních okolností (instalujeme přímo na klientském počítači, máme bootovací CD mechaniku) se instalace spustí automaticky po nabootování z CD, instalaci provádí soubor setup.exe. Na instalačním disku je však ještě několik programů, které provádějí instalaci, používají se například při automatizované instalaci nebo v případě, že nemáme bootovací CD mechaniku. Možnosti instalace na desktopu: Běžná instalace: program setup.exe, sedíme u počítače a přímo zadáváme údaje. Bezobslužná instalace: pro Windows XP jsou instalační soubory WINNT32.EXE a WINNT.EXE ve složce i386 na instalačním disku. Použijeme ji, pokud máme instalovat velké množství počítačů s různými hardwarovými architekturami a případně různý software. Sysprep (Nástroj přípravy systému): v instalačním souboru DEPLOY.CAB (jde o archiv podobně jako ZIP) ve složce Support\Tools na instalačním disku. Je použitelná, pokud instalovaný počítač má stejnou vrstvu HAL 3 jako ten, ze kterého instalujeme (referenční), což obvykle znamená naprosto stejný hardware; tento nástroj dokáže provést pouze čistou instalaci (nikoliv reinstalaci). Sysprep vytvoří bitovou kopii systému referenčního počítače (image) bez specifických informací, a ta se nakopíruje na ostatní počítače. 4 Takto lze přenášet nejen systém, ale také všechny P 3 Architekturu systému budeme probírat na přednáškách HAL (Hardware Abstraction Layer) je součást jádra závislá na hardware; Windows na dvou počítačích mají stejnou vrstvu HAL, pokud jsou instalovány na stejném HW. 4 Přesný postup používání Sysprep včetně formy souborů odpovědí lze najít na internetu, například na adrese html.

186 6.3 INSTALACE WINDOWS 178 nainstalované aplikace a konfiguraci. Nevýhodou je omezení velikosti image na kapacitu disku CD. Některé verze Windows nabízejí více různých možností instalace, zajímavé jsou především možnosti pro automatizovanou instalaci (typicky v síti s Windows Serverem). Následující možnosti jsou použitelné v lokální síti s Windows server. RIS (Služba vzdálené instalace): je součástí serverových variant Windows od verze Je řešena podobně jako Sysprep, ale nejsme omezeni kapacitou CD (instalace probíhá po síti), je nutné mít v síti zprovozněnou službu Active Directory. SMS (Systems Management Server): také na serverových Windows. Je použitelný pouze pro inovaci existující instalace některého systému Windows. Nabízí možnost načasování inovace, určení počítačů, kterých se bude týkat, instalaci opravných balíčků, apod. Existují také další způsoby instalace či inovace. Lze použít i netradiční možnosti typu bitové kopie (obraz disku, image) systémového disku, se kterou nebude pracovat server Windows, ale Linux nebo jiný operační systém (nebo použijeme speciální programy pro vytvoření obrazu systémového disku na bootovacím CD nebo disketě, některé z nich jsou také postaveny na Linuxu, nebo běží na jiném počítači v síti), to je možnost velmi vhodná pro obnovu poškozeného systému (předem vytvoříme nepoškozený obraz), data by pokud možno měla být na jiném logickém disku nebo na síti. Během pořizování bitové kopie systému (at už jakoukoliv metodou) kopírovaný systém nesmí běžet. Často je také nutné tento systém předem upravit (například u nástroje Sysprep); upravovat nemusíme, pokud bitovou kopii chceme použít jako zálohu našeho systému pro případné pozdější znovunačtení na tentýž počítač (ale pozor na případné změny hardwaru). Automatizovaná instalace probíhá s minimem zásahů uživatele (správce), pro vstupy se používají soubory odpovědí (answer file, to jsou textové soubory s informacemi, které by bylo jinak nutné zadávat během instalace, případně tady mohou být příkazy pro spuštění určitých programů včetně instalačních a konfiguračních nástrojů). Přípona souborů odpovědí bývá obvykle TXT nebo INF, například sysprep.inf. Soubory odpovědí můžeme vytvářet bud ručně, a nebo s využitím specializovaného programu, například Správce instalace (setupmgr.exe), který najdeme na instalačním CD ve složce Support\Tools. Podrobné informace o automatizovaných instalacích a o formě souborů odpovědí pro různé metody jsou v Resource Kitu 5 pro zvolenou verzi Windows, a nebo na internetu 6. V případě, že CD mechanika počítače není bootovací, instalace se provede tak, že nabootujeme z instalační diskety Windows 98 (ta se dá opatřit například na a v zobrazeném menu zvolíme Spustit systém s podporou CD-ROM. Vytvoří se virtuální CD disk, přes který již je přístupná CD mechanika. Přepneme se na tuto mechaniku (písmena jednotek mohou být posunutá) a instalaci spustíme příkazem i386\winnt.exe (program setup.exe v prostředí DOSu nefunguje). To, jakou verzi systému máme, zjistíme v nástroji Systém, případně rychle pomocí příkazu winver 5 Resource Kit pro Windows 2000 je dokonce celý dostupný na internetu (stačí do vyhledávače zadat například Resource Kit 2000 ). 6 Například adresy (ve vyhledávání použijte bezobslužná instalace nebo třeba answer file installation ), (ve vyhledávání použijte soubor odpovědí ), P

187 6.3 INSTALACE WINDOWS 179 nebo ver. Některé verze Windows (včetně Windows XP) je nutné aktivovat. Není to totéž co registrace (registrace umožňuje využívat některé další služby Microsoftu). Bez aktivace běží systém po určitou dobu (60 dnů, Grace Period) bez jakýchkoliv restrikcí. 7 Aktivace nebývá nutná u některých typů licencí, např. OEM (produkt byl aktivován při instalaci) nebo některých hromadných licencích. Aktivaci také můžeme provést při automatizované instalaci úpravou souboru odpovědí (funguje, pokud je počítač připojen k internetu). Samotná aktivace spočívá ve vygenerování kódu typického pro určitý počítač, vytváří se na základě hardwarové konfigurace počítače (to je vlastně důvod, proč se po razantnějších a opakovaných změnách konfigurace začne systém chovat jako neaktivovaný). Tento kód je uložen v souboru wpa.dbl v adresáři System32. Závisí na 10 parametrech, po změně 5 z nich je považován za neplatný. Aktivaci je teoreticky nutné provést při každém přeinstalování Windows, ale ve skutečnosti stačí, když si včas zálohujeme soubor wpa.dbl a po přeinstalování ho vrátíme do System32. Úkoly 1. V nápovědě nebo na internetu zjistěte, jaké parametry mají programy winnt a winnt32. Jak podle těchto parametrů můžeme určit umístění souboru odpovědí? 2. Stručně charakterizujte vlastnosti instalace z programů setup, winnt a sysprep (v souboru deploy.cab) na instalačním disku systému, především rozdíly mezi nimi. P C Nástroje k bezobslužné instalaci Visty a novějších verzí Windows jsou od verze distribuovány na DVD (u starších verzí bylo CD) ve formátu WIM (Windows Imaging). Zatímco jiné typy obrazů disků jsou strukturovány podle stop na médiu, WIM je strukturován podle souborů (modulů). Pro automatizovanou instalaci potřebujeme bud jeden referenční (vzorový) počítač, který je kompletně nainstalovaný a nakonfigurovaný včetně instalace aplikací, a nebo instalační médium (pokud netrváme na automatizaci instalace aplikací). Vždy je nutné vytvořit soubor odpovědí. Od verze Vista jde o soubor ve formátu XML s názvem unattend.xml nebo autounattend.xml. Pro bezobslužnou instalaci budeme potřebovat některé z následujících nástrojů. Windows AIK (Automated Installation Kit) 8 je sada nástrojů určených k usnadnění automatizované instalace Windows. Je volně ke stažení na webu Microsoftu. Obsahuje několik nástrojů, které nás mohou zajímat (pro různé verze Windows zde najdeme trochu jinou množinu nástrojů), dva z nich jsou dále používány: ImageX slouží k zachycení bitové kopie pro instalaci z již nainstalovaného počítače (dokáže zachytit nejen nainstalovaná Windows, ale i konfiguraci a aplikace), taktéž umožňuje manipulovat s bitovými kopiemi (přidávat nebo odstraňovat soubory), P 7 Původně běžel systém bez aktivace v režimu snížené funkčnosti (některé funkce systému nebyly zprovozněny), od verze Vista SP1 a Windows Server 2008 již tomu tak není. Grace Period byla u Windows Server 2008 R2 snížena na 30 dní. 8 Stačí zadat do Googlu řetězec windows aik site:microsoft.com.

188 6.3 INSTALACE WINDOWS 180 SIM (Windows System Image Manager, také WSIM) nástroj pro vytváření souborů odpovědí, manipulaci s existujícími bitovými kopiemi, atd. (ve starších verzích se pro vytváření souborů odpovědí používal Setup Manager). Instaluje se poněkud nezvykle stáhnutý soubor (měl by odpovídat verzi Windows, kterou máme na počítači nainstalovanou) je ve skutečnosti obraz disku (pro Vistu má příponu IMG, pro Windows 7 příponu ISO) a je poměrně velký (pro Vistu téměř 1 GB). Je nutné stáhnutý obraz vypálit na přenosný disk (nebo připojit jako virtuální mechaniku) a (v grafickém prostředí, které se zobrazí po spuštění z disku) nainstalovat. Další informace najdeme na adresách tutorials/deploying-vista-understanding-windows-aik.html Projdeme si nástroje, které zde z Windows AIK využijeme. Obrázek 6.2: Windows SIM (v anglické verzi) SIM je nástroj s grafickým rozhraním, který lze kromě jiného použít pro vytvoření souboru odpovědí a bezobslužnou instalaci z DVD. Po nainstalování AIK najdeme tuto aplikaci v menu Start Programy MS Windows AIK Správce bitových kopií systému Windows (resp. Windows System Image Manager). Okno aplikace obsahuje několik podoken, nás zajímají podokna Bitová kopie (Windows Image v anglické verzi) a Soubor odpovědí (Answer File v anglické verzi). Podokno Bitová kopie slouží k vytvoření a modifikaci bitové kopie, ze které bude systém instalován, a v podokně Soubor odpovědí vytváříme a modifikujeme soubory odpovědí (můžeme jich mít i více).

189 6.3 INSTALACE WINDOWS 181 ImageX je nástroj s textovým rozhraním (aby byl použitelný i ve skriptu). Má několik funkcí, které řídíme přepínači (vždy lze použít jen jediný z hlavních přepínačů, pak existují ještě dodatečné přepínače a parametry). Slouží k vytváření a správě WIM souborů. Hlavní úlohou, při které se uplatňuje, je vytvoření bitové kopie z nainstalovaného (včetně aplikací) referenčního počítače. Windows PE se hodí při vytvoření bitové kopie referenčního počítače. Může být bud na optickém médiu (většinou CD) nebo na USB flash disku, prostředí PE spustíme nabootováním z tohoto datového média. Pokud nemáme (Windows PE obvykle bývá k dispozici na instalačním DVD Windows), můžeme je vytvořit na počítači s nainstalovanou Vistou nebo vyšší verzí Windows: 1. Instalujeme Windows AIK. 2. Zvolíme Start Programy MS Windows AIK a zvolíme položku pro nástroje Windows PE (pokud pracujeme s nižšími přístupovými oprávněními, tak na tuto položku klepneme pravým tlačítkem myši a zvolíme spuštění s právy administrátora). 3. V příkazovém řádku PE, který se spustí, použijeme příkaz copype i86 c:\winpe (platí, pokud máme variantu pro 32bitovou hardwarovou architekturu; jestliže jde o variantu pro 64bitovou architekturu, použijeme místo i86 volbu amd64 nebo ia64 podle typu procesoru), můžeme použít také jinou cestu k výslednému obrazu. V zadané složce se vytvoří adresářová struktura, ve které najdeme prostředí Windows PE (winpe.wim) a také bootovací informace. 4. Do obrazu přidáme nástroj ImageX: WIM soubor s obrazem připojíme, abychom ho mohli modifikovat: imagex /mountrw c:\winpe\winpe.wim 1 c:\winpe\mount (připojujeme pro čtení i zápis /mountrw, dále zadáváme soubor s obrazem, následuje číslo 1 znamenající první obraz v tomto souboru v jednom WIM souboru může být více obrazů, obraz připojíme do složky c:\winpe\mount), přidáme do obrazu program imagex: copy C:\WAIK\tools\x86\imagex.exe c:\winpe\mount\windows\system32 (případně napíšeme správnou cestu k imagex.exe, pokud je jiná), stejným způsobem zkopírujeme soubor wimscript.ini, použijeme stejná umístění jako v předchozím bodu (tento soubor je konfiguračním souborem pro imagex.exe), obraz odpojíme příkazem imagex.exe /unmount /commit c:\winpe\mount 5. Pokud chceme vytvořit bootovací CD, musíme nejdřív stanovit, že obraz prostředí Windows PE má být zároveň bootovacím programem (tj. spustí se po nabootování z média): copy c:\winpe\winpe.wim c:\winpe\iso\sources\boot.wim /y 6. vytvoříme ISO soubor, který pak lze vypálit na CD: oscdimg -n -h -bc:\winpe\etfsboot.com c:\winpe\iso c:\winpe\winpe.iso (program oscdimg je součástí Windows AIK). Vytvořený ISO obraz vypálíme na CD v kterémkoliv programu, který to umí (například ImgBurn). Bod 4 provedeme jen tehdy, pokud chceme do obrazu něco přidávat, jinak je nepovinný. Jestliže chceme mít Windows PE na USB flash disku místo na CD, použijeme postup popsaný na stránce

190 6.3 INSTALACE WINDOWS nebo v příkladu 5.2 na straně 151 v těchto skriptech jde o nahrazení posledního bodu postupu úpravou USB flash disku a následným zkopírováním potřebných souborů. Sysprep bylo nutné do starších verzí (Windows XP, Server 2003 a starších) doinstalovat, od verze Windows Vista a Server 2008 je již součástí systému a najdeme jej ve složce...\system32\sysprep. Hlavním účelem nástroje Sysprep je odstranit všechny specifické informace (SID, dodatečně nainstalované ovladače Plug&Play zařízení, body obnovy, atd.), většinou v přípravě systému pro pořízení obecně použitelné bitové kopie. Obrázek 6.3: Nastavení nástroje Sysprep (česká a anglická verze) Tento nástroj lze spouštět jak v textovém, tak i v grafickém režimu (grafické rozhraní české a anglické varianty vidíme na obrázku 6.3). Podrobný popis nástroje najdeme například na stránce tutorials/deploying-vista-part5.html. Okno nástroje Sysprep obsahuje tři prvky: v rozbalovacím seznamu určujeme, zda chceme systém spustit v auditovacím režimu (audit mode; je určen pro OEM prodejce, v tomto režimu lze měnit nastavení instalace a ze souboru odpovědí se načítají především sekce obsahující v názvu řetězec audit ), a nebo spustit uvítací centrum při dalším startu systému (tuto volbu vidíme na obrázcích, zvolíme ji), můžeme zaškrtnout pole, které provede zobecnění (generalizaci) zaškrtneme (protože chceme odstranit všechny specifické informace), určíme, co se má dít při ukončení nástroje Sysprep restart, vypnutí nebo nic (zvolíme některou z prvních dvou možností). Pokud budeme výsledný obraz načítat v prostředí Windows PE, předem zasuneme datové médium s Windows PE a v poslední volbě zadáme restart, jestliže chceme obraz načítat po síti, zvolíme vypnutí a v BIOSu nastavíme bootování ze sítě. Úkoly 1. Najděte na internetu seznam nástrojů, které jsou součástí Windows AIK (můžete zkusit například řetězec windows aik site:technet.microsoft.com na Googlu). C

191 6.3 INSTALACE WINDOWS Najděte na internetu podrobný popis nástroje imagex (včetně parametrů příkazu), je možné použít podobný způsob získání informací jako v předchozím bodu. 3. Zjistěte, které nástroje jsou obsaženy ve Windows PE (můžete zkusit například vyhledávací řetězec windows pe tools site:technet.microsoft.com na Googlu). 4. Vzpomeňte si, k jakým typům úloh lze použít Windows PE a jak se vlastně spouští a používá (o Windows PE jsme slyšeli už v minulém semestru). Pokud máte možnost, vytvořte si vlastní Windows PE s nástroji, které uznáte za potřebné. 5. Na internetu (například na výše uvedené adrese) zjistěte, jaké přepínače lze u nástroje Sysprep zvolit, pokud je používán v textovém režimu (přepínače odpovídají volbám, které zde byly popsány). Sestavte příkaz odpovídající nastavením popsaným pro grafický režim nástroje. R R Instalace Visty a novějších verzí Pokud instalujeme na počítač, u kterého přímo sedíme, stačí instalační DVD (nebo instalační USB flash disk, jak bylo naznačeno výše, příprava flash disku je v příkladu 5.2 na straně 151). Mnohé ze sekce o instalaci Windows XP platí i pro instalaci Windows Vista. Můžeme bud provést čistou instalaci, inovaci (s určitými problémy) nebo instalaci vedle jiného operačního systému. Taktéž nutnost aktivace zůstává zachována. Windows Vista mají přepracované jádro a z toho důvodu se liší také instalace. Jádro je od této verze silně inspirováno unixovými systémy je modulární a vlastnosti výsledné varianty k instalaci jsou určeny poskládáním jednotlivých modulů. Samotný princip instalace je inspirován principem, který se objevil o několik let dříve u některých linuxových distribucí živé (bootovací) médium umožňuje během instalace běžně pracovat. V případě Windows je použito prostředí Windows PE 2.0 (a novější), které může být jedním z modulů. Jak bylo výše uvedeno, Windows jsou od verze Vista distribuovány na DVD ve formátu WIM. Jedná se vlastně o obraz disku, který je komprimovaný (pomocí různých postupů je zmenšena jeho velikost) a neredundantní (každá informace je zde jen jednou, i když po instalaci může být na disku na více různých místech). Zatímco jiné typy obrazů jsou strukturovány podle stop na médiu, WIM je strukturován podle WIM souborů (modulů). Soubory s příponou WIM jsou technicky vlastně archivy podobně jako ZIP, každý může obsahovat i několik tzv. obrazů (obvykle souborů nebo jiných typů dat). Existují pouze dvě varianty instalačního DVD 32bitová a 64bitová podle toho, pro jakou hardwarovou architekturu je DVD určeno. To znamená, že DVD obsahuje všechny existující moduly pro danou hardwarovou architekturu a lze je použít pro instalaci kterékoliv varianty Windows (Home, Ultimate, atd.). Moduly z obrazu, které se mají nainstalovat, jsou stanoveny při instalaci podle typu zakoupené licence (podle Product Key, který uživatel obdržel při koupi). Pokud Product Key není během instalace zadáván, vybíráme variantu ze seznamu během instalace. Lze také použít automatizovanou instalaci. Potřebujeme bud jeden referenční (vzorový) počítač, který je kompletně nainstalovaný a nakonfigurovaný včetně instalace aplikací, a nebo instalační médium (pokud netrváme na automatizaci instalace aplikací). P

192 6.3 INSTALACE WINDOWS 184 Soubor odpovědí je od verze Vista ve formátu XML s obvyklým názvem unattend.xml nebo autounattend.xml. Podíváme se na dvě možnosti bezobslužné instalace. Bezobslužná instalace z DVD znamená instalaci s využitím instalačního média (DVD) a souboru P odpovědí. Celý postup je následující: 1. Stáhneme a nainstalujeme Windows AIK. Spustíme výše popsaný nástroj SIM a připojíme instalační DVD Windows (bud vložíme do mechaniky nebo připojíme jeho obraz do virtuální mechaniky). 2. Na instalačním DVD najdeme složku sources a v ní soubor install.wim. Zkopírujeme ho někam na pevný disk, předpokládejme umístění c:\sources\install.wim. 3. Stanovíme bitovou kopii, pro kterou budeme vytvářet soubor odpovědí: V SIM, podokně Bitová kopie, klepneme pravým tlačítkem na položku Vyberte bitovou kopii a v kontextovém menu zvolíme Vybrat bitovou kopii. V dialogovém okně najdeme cestu k souboru install.wim, který jsme uložili na pevný disk (zde c:\sources\install.wim). Otevře se okno se seznamem bitových kopií, které jsou k dispozici (odpovídají variantám Windows pro danou verzi). Vybereme variantu, kterou potřebujeme (na kterou máme licenci). Může se zobrazit upozornění, že pro vybranou bitovou kopii ještě není vytvořen soubor katalogu, což provedeme (klepneme na tlačítko Ano, resp. OK v tomto okně). 4. Začneme vytvářet soubor odpovědí autounattend.xml tak, že v SIM v podokně Soubor odpovědí klepneme pravým tlačítkem na položku Vytvořit nebo otevřít soubor odpovědí a vybereme Nový soubor odpovědí. 5. Naplníme soubor odpovědí tak, že v podokně Bitová kopie tak, že postupně projdeme položky zde uvedené (jsou ve stromové struktuře) a na ty, které budeme chtít zařadit, klepneme pravým tlačítkem myši. V zobrazeném kontextovém menu klepneme na konkrétní položku, kterou chceme vložit do souboru odpovědí. Takto můžeme například stanovit, jak se má rozdělit pevný disk apod. 6. Položka, kterou jsme vybrali v podokně Bitová kopie, se objeví i v podokně Soubor odpovědí, taktéž ve stromové struktuře. Procházíme jednotlivé položky; po klepnutí na položku se ve vedlejším podokně Vlastnosti zobrazí konkrétní vlastnosti vybrané položky, které můžeme pozměnit. 7. Po provedení všech potřebných změn uložíme vytvořený soubor odpovědí pod názvem autounattend.xml na pevný disk a pak zkopírujeme na disketu nebo USB flash disk, a to do kořenového adresáře (nesmí být v žádné složce!). (Přesun k cílovému počítači) 8. Na počítači, kde chceme provést tento typ instalace, vložíme do příslušné mechaniky/konektoru disketu nebo USB flash disk se souborem odpovědí. 9. Dále do DVD mechaniky vložíme instalační DVD Windows.

193 6.3 INSTALACE WINDOWS Restartujeme tento počítač a necháme proběhnout instalaci. Soubor odpovědí by měl být automaticky rozpoznán a použit. Kdyby došlo k nějaké chybě (například kdyby nebylo správně detekováno médium se souborem odpovědí, probíhala by instalace klasickým způsobem, zadávali bychom všechny informace ručně. Bezobslužná instalace podle referenčního počítače představuje možnost nainstalovat a nakonfigurovat referenční počítač (včetně instalace aplikací), vytvořit bitovou kopii takto nakonfigurovaného systému a použít pro instalaci dalších počítačů. Oproti předchozímu postupu je výhodou instalace hotového systému na všechny počítače. Předně potřebujeme referenční (výchozí) počítač s nainstalovaným operačním systémem a všemi aplikacemi, nakonfigurovaný. Tento počítač nebude v dané instalaci používán pro běžnou práci, protože v následujícím postupu z něj budou některé důležité informace odstraněny. Postup: P 1. Nainstalujeme a nakonfigurujeme referenční počítač. Ručně smažeme vše, co nelze zpracovat jinak a přitom to v bitové kopii nechceme (například některé aplikace, nepotřebné uživatelské účty, dočasné soubory apod.). 2. Vytvoříme soubor odpovědí stejným způsobem, jak bylo popsáno v předchozím textu (můžeme ho nazvat například sysprep.xml, je to celkem jedno). Soubor odpovědí můžeme vytvořit na referenčním počítači, ale protože je k tomu obvykle třeba Windows AIK, většinou jej vytváříme jinde (třeba na serveru). Několik ukázek takového souboru je například na 3. Soubor odpovědí umístíme na referenční počítač do adresáře...\system32\sysprep. 4. Na referenčním počítači spustíme nástroj Příprava systému (Sysprep) popsaný na straně 182. Sysprep připraví tento počítač pro vytvoření bitové kopie odstraní všechny specifické informace (identifikátory HW a SW, autentizační informace apod.). Jedná se o nástroj s grafickým rozhraním (vidíme na obrázku 6.3), ve kterém provedeme tyto kroky: zaškrtneme pole Zobecnit (Generalize), v rozbalovacím seznamu Akce čištění systému (System Cleanup Action) zvolíme Zobrazit prostředí při prvním zapnutí počítače (Enter System Out-of-Box Experience (OOBE)) v rozbalovacím seznamu Možnosti vypnutí (Shutdown Options) necháme volbu pro restart. To vše můžeme souhrnně provést příkazem sysprep /oobe /generalize /shutdown /unattend:sysprep.xml (zadáme takový název souboru odpovědí, který jsme vytvořili). 5. Po restartu nabootujeme Windows PE (měli bychom se předem přesvědčit, že v BIOSu je nastaveno jako první bootování z datového média, na kterém máme Windows PE). 6. Vytvoříme obraz referenčního počítače pomocí nástroje XImage, který je součástí Windows AIK, a pokud jsme Windows PE vytvořili výše popsaným způsobem, tak tento nástroj máme k dispozici ve Windows PE. Ted záleží na tom, kam vlastně chceme obraz uložit. Může to být na výměnné médium, ale je třeba počítat s tím, že půjde o poměrně mnoho dat. Jestliže chceme obraz ukládat na sít, měli bychom se nejdřív připojit k serveru, který bude úložištěm: net use Z: \\server\adr_instalace /user:doména\uživatel

194 6.3 INSTALACE WINDOWS 186 (příkaz net jsme se učili na straně 31), zadali jsme písmeno, pod kterým má být sít ový disk připojen, pak server a adresář na něm (doplníme podle skutečnosti), dále je důležité se na serveru přihlásit pod uživatelským jménem s dostatečně vysokými přístupovými oprávněními k zadanému adresáři, také doplníme podle skutečnosti. Budeme požádáni o zadání hesla. Pokud chceme obraz uložit na výměnné médium, stačí ho připojit (pro zjednodušení budeme předpokládat, že je také dostupné pod písmenem Z:. Také by mohl nastat problém se souborovým systémem například na USB flash disk nelze ukládat tak velké soubory, pokud je naformátován souborovým systémem FAT (což obvykle je), takže bychom jej měli předem naformátovat na NTFS. V takovém případě by bylo lepší použít spíše externí pevný nebo SSD disk s vhodným souborovým systémem. 7. Obraz systému vytvoříme příkazem imagex /capture c: z:\winxxx.wim Komentář /compress maximum /check (capture znamená zachytit), což znamená, že vytváříme co nejvíce komprimovaný obsah disku C:, ukládáme do zadaného WIM souboru a chceme provést kontrolu integrity výsledného souboru (poslední parametr). Komentář může usnadnit rozpoznávání, pokud máme vytvořeno více obrazů. Soubor můžeme pojmenovat jakkoliv (jen přípona je důležitá), písmena XXX mohou být třeba verze Windows nebo bližší určení typu klienta. Pokud ukládáme na sít, nemusíme použít syntaxi s písmenem jednotky, ale můžeme napsat UNC cestu (pak je zbytečné připojovat sít ový disk k jednotce příkazem net use z předchozího bodu, ovšem zadání hesla se nevyhneme). (Přesun k cílovému počítači nebo přístup přes sít ) 8. Na cílovém počítači opět nabootujeme Windows PE a připojíme úložiště, na kterém máme uložen obraz systému (sít ový disk nebo výměnné médium). 9. Pokud je to nutné (často je), vytvoříme na disku oddíl pro instalaci. Pro tento účel můžeme použít příkazy diskpart (vytvoření oddílu) a format (vytvoření souborového systému, pravděpodobně NTFS). S oběma nástroji jsme se seznámili v předchozích kapitolách. 10. Aplikujeme (načteme) sejmutý obraz, který jsme vytvořili na referenčním počítači: imagex /apply z:\winverzexxx.wim Komentář c: (všimněte si, že posloupnost parametrů určujících WIM soubor a disk je opačná oproti posloupnosti při použití přepínače /capture). Nástroj ImageX lze používat kromě jiného i pro offline práci s vytvořeným obrazem. Obraz připojíme do souborového systému parametrem /mountrw (podrobnosti v nápovědě příkazu), pak s ním pracujeme například v Průzkumníkovi (můžeme přidávat nebo odstraňovat soubory, aktualizovat apod.), po provedených změnách musíme obraz odpojit parametrem /unmount. Bitovou kopii referenčního počítače můžeme vytvořit a přenést na sít také jinak než pomocí nástroje ImageX s využitím služby WDS. Úkoly 1. Zjistěte, co vše lze dělat pomocí ImageX (jaké má parametry apod.). C

195 6.4 AKTUALIZACE SYSTÉMU Nemusíte znát výše popsané postupy do podrobna, ale shrňte si, co vše k bezobslužným instalacím potřebujete. 3. OEM prodejci často využívají OOBE (Out-Of-Box Experience) pro úpravy instalace Windows, také existuje možnost vytvořit soubor oobe.xml (pro Windows od verze Vista). Pokuste se zjistit (třeba na internetu), co vše lze takto ovlivňovat. Dobrým zdrojem může být například adresa tutorials/deploying-vista-part9.html, kde najdeme velmi zajímavý seriál o nasazení Windows Vista (a novějších verzí). R Služba pro nasazení systému Windows (WDS) Služba pro nasazení systému Windows (WDS, Windows Deployment Service) je nástupcem služby RIS ve Windows od verze Vista. Narozdíl od bezobslužné instalace z DVD umožňuje instalovat také po síti, a narozdíl od starší služby RIS je odstraněna závislost na hardwaru (lze instalovat i na počítače s různým hardwarovým vybavením, s pouhým rozlišením na 32- nebo 64bitovou architekturu). Stejně jako RIS, také WDS je služba na straně serveru, musíme tedy mít v síti server Windows Server 2008 nebo novější. V síti je vyžadováno funkční Active Directory, DHCP a DNS server. Aby WDS mohla řádně fungovat, musí být na serveru nainstalována a musí obsahovat alespoň jednu spouštěcí bitovou kopii, která slouží ke startu klientského počítače přes sít (lze pracovat na klientovi, i vzdáleně, ale systém běží na serveru), ale také např. k řízení instalace klientského počítače z některé instalační bitové kopie, nemusíme vytvářet Windows PE, alespoň jednu instalační bitovou kopii (z té se instalují klientské počítače). Ve Windows Server 2008 se pracuje s rolemi, z nichž jedna je také WDS. Tedy instalace WDS probíhá přidáním této role. Instalujeme běžným způsobem jako cokoliv jiného na serveru máme k dispozici jakousi hlavní grafickou konzolu Správce serveru (Server Manager) dostupnou hned z tlačítka Start, v této konzole najdeme instalování nové role a několika klepnutími myší přidáme roli WDS. Popis činnosti a správy WDS je nad rámec těchto skript, proto nezbývá než odkázat na literaturu (vše je popsáno prakticky v každé knize určené pro správce Windows serveru). WDS dokáže ulehčit mnohé z úkolů, které jsme probírali výše o instalaci Windows. O instalaci Windows najdeme další informace na adresách P 6.4 Aktualizace systému Podpora aktualizací je součástí rozhraní Windows od verze 98, pod názvem Windows Update v novějších verzích českých variant systému Automatické aktualizace. Microsoft stanovil druhé úterý každého měsíce pro den pravidelných bezpečnostních záplat (tomu dni se také říká Patch Day, den záplat), ale bezpečnostně závažné záplaty jsou distribuovány i mimo tyto dny.

196 6.5 CHYBY PŘI BĚHU APLIKACÍ A SYSTÉMU 188 Z předchozího semestru už víme, jaké typy aktualizací Windows existují a jak lze řídit jejich využívání na lokálním počítači. Jestliže však ve větší organizaci chceme zajistit aktualizaci všech počítačů v síti, není vhodné nechávat každého uživatele zvlášt stahovat aktualizace ze serveru Microsoft Update. Obvyklým řešením je stanovení lokálního serveru WSUS (Windows Server Update Services), který stahuje aktualizace z webu Microsoftu a dále je distribuuje v lokální síti. Server WSUS (samozřejmě softwarový server, ne kus hardwaru) lze stáhnout ze stránek Na téže stránce najdeme také návod k instalaci (dokonce v češtině). Samotnou instalací nás provází průvodce (můžeme instalovat bud z grafického režimu formou přidání role, a nebo jendoduše spuštěním instalačního souboru), tedy jen potvrzujeme a zadáváme případné pozměňující informace. Měli bychom si předem rozmyslet, kam budou ukládány aktualizace stáhnuté z internetu (dostatečně velký adresář nebo disk), také bychom měli vědět, který webový server máme nainstalován (to administrátoři obvykle vědí) a který databázový systém používáme (stačí například MySQL). Někdy je nutné upravit firewall a proxy server (pokud je používáme) tak, aby WSUS server měl bezproblémový přístup k aktualizacím na webu Microsoftu. Používají se porty 80 (pro HTTP) nebo 443 (pro HTTPS a SSL). Konfigurace stahování aktualizací (které balíčky se mají stahovat včetně jazykových verzí a verzí systému, jak často apod.) se provádí obvykle v konzole Update Services na serveru WSUS. Je to běžná konzola s unifikovaným grafickým rozhraním, jaké známe například z konzoly Správa počítače (compmgmt.msc). Dále je nutné nakonfigurovat klientské počítače v síti. Nejobvyklejší možností je využití zásad skupiny (v minulém semestru jsme se s nimi seznámili spíše na lokálním počítači, ale jde o zásady použitelné především na úrovni lokální sítě). V konzole Zásady skupiny (místně nebo vzdáleně na lokálním počítači) vybereme v části konfigurace počítače větev Šablony pro správu, podvětev Součásti systému Windows a najdeme Windows Update (pokud tam není, musíme importovat soubor wuau.adm přes kontextové menu položky Šablony pro správu). V tomto uzlu nás zajímají položky Konfigurace automatických aktualizací poklepeme na položku, povolíme, určíme, zda se aktualizace mají přímo stahovat, nebo jestli se má pouze zobrazit upozornění, atd., Určení umístění intranetové služby MS Update poklepeme, povolíme, zadáme adresu našeho WSUS serveru (do obou polí pro zjišt ování aktualizací i statistik). Počítače v síti lze rozdělit do skupin (to je ostatně obvyklé zvláště ve velkých sítích) a používat pro ně různé konfigurace i co se týče aktualizací. Přes konzolu automatických aktualizací na serveru také můžeme kromě jiného sledovat stav aktualizací na jednotlivých počítačích. Úkoly 1. Ověřte si, jak vlastně jsou nastaveny automatické aktualizace na vašem počítači zda jsou stahovány a instalovány automaticky. 2. Pokud na svém počítači nemáte v Zásadách skupiny položku Windows Update, importujte její ADM soubor výše popsaným způsobem. 3. Podívejte se, jak jsou v této položce nastaveny zásady, především odkud stahujete aktualizace. P C

197 6.5 CHYBY PŘI BĚHU APLIKACÍ A SYSTÉMU Chyby při běhu aplikací a systému Někdy se stane, že se aplikace při své práci dostane do nekonečné smyčky nebo dojde k uváznutí při čekání na prostředek (bude probíráno na přednáškách), a nereaguje. U Win aplikací to poznáme ve Správci úloh (známe z předchozího semestru) označením neodpovídá u této aplikace. Ve Správci úloh také můžeme tuto aplikaci násilně ukončit označením aplikace a stisknutím tlačítka Ukončit úlohu. Pokud je některá aplikace spuštěna v celoobrazovkovém režimu (DOS aplikace, Flash, prezentace PowerPoint, Adobe Reader), a zasekne se nebo nenabízí možnost pro své ukončení, přesuneme se do Windows, kde se dá zlikvidovat : Alt+Enter Alt+Tab (do okna), pak v kontextovém menu tlačítka aplikace na Hlavním panelu zvolíme Zavřít, (přepnutí úlohy), podobně jako v předchozím případě, Ctrl+Esc nebo (otevření menu Start), podobně jako v předchozích případech, Ctrl+Alt+Del nebo Ctrl+Shift+Esc zobrazíme Správce úloh, v něm aplikaci ukončíme. Jestliže je poškozen některý z chráněných systémových souborů (nebo přepsán při instalaci nové aplikace), lze ho opravit programem System File Checker. Tento program obnovuje systémové soubory ze zálohy. Spustíme ho příkazem sfc (vlastně ho už známe) při použití vhodných parametrů (viz nápovědu příkazu například je možné spustit okamžitou kontrolu, kontrolu při příštím spuštění Windows nebo pravidelnou kontrolu při každém spuštění. Modrá obrazovka ( obrazovka smrti, BSOD Blue Screen of Death, podle terminologie Microsoftu obrazovka Stop ) se zobrazí při narušení jádra systému (chybějící nebo poškozená část systému, zaseknutí systémové části, provádění některého kódu ve smyčce, spuštění více antivirových programů či firewallů zároveň,... ), někdy za to může virus. Modrou obrazovku generuje vždy jádro systému. Často je jedinou možností restart počítače. Pokud se tato obrazovka objeví při startu systému, je to zřejmě způsobeno nesprávnou instalací nebo konfigurací některého zařízení. Řešením je spustit Windows v nouzovém režimu a prohlédnout protokol bootlog.txt nebo ntbtlog.txt. Pokud se objeví modrá obrazovka, systém (s NT jádrem) vytvoří soubor výpisu stavu paměti, ze kterého je možné zjistit přesnou příčinu tohoto stavu (je použitelný také v případě, že se nepodaří nastartovat systém, jen zkopírujeme soubor): omezený výpis paměti (ve složce Windows\Minidump na systémovém disku, zabírá jen 64 kb paměti), obsahuje pouze zásobník vlákna, které způsobilo pád jádra, výpis stavu paměti jádra (tamtéž, rozsáhlejší), obsahuje výpis paměti používané jádrem, úplný výpis stavu paměti (v souboru Memory.dmp na systémovém disku, zabírá místo odpovídající fyzické kapacitě operační paměti plus 1 MB) a obsahuje výpis paměti jak jádra, tak i uživatelského prostoru (tj. všech běžících procesů). O tom, který výpis bude generován, rozhodujeme pomocí nástroje Systém, záložka Upřesnit, Spuštění a zotavení systému, tlačítko Nastavení (nejobvyklejší volbou je minidump, omezený výpis paměti). Použitelný je také soubor Pagefile.sys na systémovém disku (stránkovací soubor, obsahuje celou logickou pamět ). P P

198 6.5 CHYBY PŘI BĚHU APLIKACÍ A SYSTÉMU 190 V souboru s výpisem paměti jako takovém bychom se jen těžko orientovali. Pro jeho analýzu se používají nástroje na ladění jádra. Informace najdete v příloze a nebo na adrese os debug.html. Jestliže se objeví chyba při startu Windows z těchto způsobů: (nelze nastartovat Windows), reagujeme některým 1. Použijeme některou možnost pro nouzový režim (stiskneme F8 při startu systému, viz str. 172), může to být i obnovení pomocí Poslední známé platné konfigurace. V nouzovém režimu můžeme pro obnovení systému použít mimo jiné i nástroj Obnovení systému (od verze XP), obnovit registr ze zálohy, spouštět různé programy včetně nástrojů pro konfiguraci a úpravu registru (samozřejmě podle typu spuštění nouzového režimu). 2. Spustíme Konzolu pro zotavení nebo Windows PE, platí pro systémy s NT jádrem). 3. Ve Windows NT 4.x a 2000 lze vytvořit disk se zálohou systému Záchrannou a opravnou disketu (v nástroji Zálohování, možnost Záchranná opravná disketa), a to včetně registru, ten můžeme vedle dalších možností opravy využít v Konzole pro zotavení, volba Opravit... pomocí procesu záchranné opravy, možnost ruční opravy. Záchranný disk musíme předem vytvořit!!! 4. Ve Windows XP je možnost vytvoření záchranné opravné diskety nahrazena možností Automatické obnovení systému, dostupnou (kromě jiných umístění) v nástroji Zálohování (ntbackup.exe). Systém zálohujeme v době, kdy je funkční (také v nástroji Zálohování). Vytvořenou zálohu (datové médium s vlastní zálohou a disketu se zálohou konfigurace disku) máme možnost obnovit také v případě, že se nepodaří spustit Windows: při spuštění počítače nabootujeme z instalačního CD. Brzy po startu počítače (ještě v textové části instalace) se objeví (na krátkou dobu!) výzva Stiskněte klávesu F5 pro spuštění Automatického obnovení systému. Stiskneme klávesu F5 a dále provedeme to, co po nás proces bude chtít (především bychom měli mít připraven datový nosič se zálohou). 5. V systému s DOS jádrem můžeme nabootovat ze spouštěcí diskety. Tu vytvoříme v nástroji Přidat nebo odebrat programy, záložka Spouštěcí disketa. Po naformátování můžeme na disketu zkopírovat pár nástrojů, které bychom mohli případně potřebovat, musí to být programy nezávislé na registru, DLL knihovnách apod. Takto vytvořená disketa neumožňuje přístup na disky NTFS (pokud neseženeme prográmek, který to zařídí ). 6. Použijeme jiné nástroje, které máme momentálně k dispozici (jsou také specializované nástroje použitelné pro tyto účely). Spouštěcí disketu pro bootování vytvořenou ve Windows 9x nebo ME lze ve skutečnosti použít i ve Windows 2000/XP. Můžeme ji dokonce v těchto systémech i vytvořit (i když při jejím použití můžeme mít k dispozici méně možností než u spouštěcí diskety vytvořené ve Windows s DOS jádrem), a to tak, že do disketové mechaniky zasuneme disketu, zobrazíme její kontextové menu (třeba v Průzkumníkovi) a vybereme Naformátovat. V možnostech formátování použijeme volbu Vytvořit spouštěcí disketu MS- DOS. Ve skutečnosti je to spouštěcí disketa Windows ME (po nabootování z této diskety si to ostatně můžeme ověřit příkazem VER). Ukázka je na obrázku 6.4.

199 6.5 CHYBY PŘI BĚHU APLIKACÍ A SYSTÉMU 191 Obrázek 6.4: Vytvoření spouštěcí diskety ve Windows XP Startovací diskety pro různé verze Windows jsou ke stažení na mnoha místech na internetu, například na (je tam také spousta dalších užitečných informací včetně HowToGuides Jak na to ). Obsah standardní startovací diskety můžeme doplnit některými užitečnými programy, které se mohou hodit, pokud Windows nelze spustit, případně část obsahu nahradit jinými programy. Doporučuje se například přidat nástroje ntfsdos ( pro read-only podporu NTFS disků), Shsucdx ( podpora CD-ROM, náhrada mscdex.exe), případně pkunzip.exe (a co se dá, předem zabalíme do ZIP archivu, program pkunzip to v případě potřeby rozbalí). Chyby na ovladači: Ve Windows XP máme v případě instalace chybného ovladače možnost vrátit změny na ovladači. Ve Správci zařízení (ten je dostupný v nástroji Systém, karta Hardware) najdeme zařízení, které dělá problémy, zobrazíme jeho vlastnosti a na kartě Ovladač použijeme tlačítko Vrátit změny ovladače. To je samozřejmě použitelné pouze tehdy, když se dostaneme do grafického prostředí Windows, funkce má pouze odbourat nutnost ovladač ručně odinstalovat a nainstalovat ten původní. Jinou možností nápravy je návrat k poslední funkční konfiguraci nebo nástroj Obnovení systému. Ovladače zařízení mohou být v čerstvě uvedené verzi Windows velký problém. Za určitých okolností je možné použít režim kompatibility pro ovladače pokud je ovladač nebo alespoň jeho instalační program reprezentován spustitelným souborem, ve Vlastnostech zástupce tohoto programu nastavíme režim kompatibility tak, jak bylo výše popsáno. Úkoly 1. Vyzkoušejte zobrazení startovací nabídky při startu operačního systému a prohlédněte si položky zobrazované nabídky. Spust te systém v nouzovém režimu. C

200 6.6 SPRÁVA SOFTWARU Zjistěte, jaký typ výpisu stavu paměti při modré obrazovce je generován a kam konkrétně se ukládá. Zjistěte, zda má být systém při modré obrazovce automaticky restartován. 3. Zobrazte nápovědu programu System File Checker (sfc) a zjistěte, co znamená použití přepínačů /quiet a /cancel. 4. Vyzkoušejte, jak je možné vrátit změny na ovladači nebo ovladač odinstalovat (nemusíte postup dovést až do konce). 5. Prohlédněte si seznam bodů obnovy, které jsou vytvořeny za poslední týden. 6.6 Správa softwaru Instalace aplikací Většina aplikací dnes nabízí instalační proces, který provede vše potřebné od detekce ovladačů přes editaci registru a registraci DLL knihoven až po přesun adresářů a souborů na pevný disk. Tento instalační proces si programátor bud vytvoří sám, a nebo využije některý existující program, který pouze upraví. Instalační programy využívají do určité míry službu Služba Windows Installer zabudovanou do Windows, ale jinak se jejich vlastnosti mohou hodně lišit. Hodně používaný je nástroj InstallShield Developer ( který nabízí prakticky vše, co si programátor může přát, ale možná i z toho důvodu jsou používány i jiné programy, například taktéž velmi silný, ale přehlednější Wise Installation System ( CreateInstall ( nebo Inno Setup ( freeware, je velmi jednoduchý, třebaže použitelný). Služba Windows Installer: Tato služba zaznamenává všechny změny, které jsou prováděny v sys- P tému během instalace aplikací a zajišt uje možnost vrátit provedené změny při nesprávně provedené instalaci (automaticky vytváří body obnovy). Dokáže také zabránit některým konfliktům mezi aplikacemi způsobeným aktualizacemi sdílené dynamické knihovny (dříve nainstalované aplikace mohou mít s touto knihovnou po aktualizaci problémy). Některé aplikace (např. MS Word) využívají i další funkci této služby, a to instalace některých součástí až při prvním použití (instalace na vyžádání součásti se při samotné instalaci produktu nenainstalují, ale až ve chvíli, kdy je některý uživatel chce poprvé použít, což může být nebezpečná záludnost kdo má mít pořád po ruce instalační médium?). Automatizace instalace softwaru: Pomocí nástroje Zásady skupiny můžeme na počítačích v do- P méně se službou Active Directory řídit instalaci následujícím způsobem: aplikaci neinstalujeme osobně, ale přenecháme tuto čest uživateli, i když mu neponecháme mnoho volnosti a proces bude automatizovaný. Aplikaci můžeme přiřadit počítači aplikace se tváří, jakoby byla již nainstalována, její odkaz je například v menu Start Programy, ale samotná instalace se spustí v okamžiku, kdy se uživatel počítače pokusí aplikaci poprvé použít. P

201 6.6 SPRÁVA SOFTWARU 193 přiřadit uživateli podobně jako předchozí, ale aplikace je nasimulována v menu Start Programy pouze při přihlášení toho uživatele (a to v jakémkoliv počítači, ke kterému se může přihlašovat), kterému je přiřazena, po spuštění se nainstaluje tak, aby byla dostupná tomuto uživateli. publikovat uživatel může sám rozhodnout, jestli si aplikaci nainstaluje; aplikace je uvedena v nástroji Přidat nebo odebrat programy. Pro instalaci můžeme na lokálním počítači použít nástroj Přidat nebo odebrat programy z Ovládacích panelů, ale pokud chceme instalovat ze serveru na klientské počítače, tento postup není moc praktický. K automatizované instalaci aplikací můžeme ve Windows Server 2003 použít Systems Management Server (SMS), a to během instalace systému i později. Tento způsob je vhodný zvláště pro rozsáhlé instalace. SMS umožňuje při instalaci používat obrazy SMS vytvoří obraz referenčního počítače, pak na tento počítač nainstalujeme aplikaci, SMS vytvoří znovu obraz a porovná rozdíly. Tyto rozdíly jsou pak aplikovány při vzdálené instalaci téže aplikace na ostatních počítačích v síti. Tato metoda se může zdát výhodná a někdy může ušetřit hodně času, ale poměrně často se při takovéto instalaci aplikací z obrazu setkáváme s problémy (instalace někdy není provedena zcela korektně). Od verze 2008 se místo SMS používá System Center Configuration Manager (ConfMgr, také SCCM) Instalační soubory aplikací Pokud chce aplikace využívat pokročilejší možnosti služby Windows Installer, stačí vytvořit instalační soubor s příponou MSI. Soubory MSI jsou instalační balíčky, jde o obdobu instalačních balíčků, které známe z Linuxu. V těchto souborech bývá (skoro) všechno, co je třeba při instalaci aplikace, ale MSI soubor může být doprovázen jedním nebo více soubory s příponou CAB, ve kterých kromě dat může být uložena bezpečnostní informace (včetně digitálního podpisu). Kromě msi jsou používány ještě další přípony, například MSP pro záplaty (patch) nebo MST pro transformace (tento soubor lze vytvořit zároveň se souborem MSI, obsahuje transformace, které je nutné provést po instalaci, například v registru, často jsou takto řešeny jazykové varianty). Na Příkazovém řádku můžeme použít nástroj msiexec, který instaluje (nebo odinstaluje) zadaný MSI balíček. msiexec /? zobrazí se okno (v grafickém režimu) s nápovědou msiexec /i cesta\balíček.msi msiexec /x cesta\balíček.msi nainstalujeme zadaný balíček odinstalujeme zadaný balíček msiexec /i cesta\balíček.msi /L*V logsoubor.log do zadaného LOG souboru se zapíše informace o průběhu instalace; tímto způsobem můžeme zjistit, proč instalace aplikace selhává msiexec /x {56D35A37-90B7-45BC-B3AA-9C5233F8E3D7} instalace balíčku zadaného pomocí GUID (GUID zjistíme například v LOG souboru podle předchozího příkazu), tento postup někdy funguje i v případě, že odinstalace aplikace se nedaří při zadání názvu balíčku msiexec /ju cesta\balíček.msi přiřadí (inzeruje) aplikaci uživateli (právě přihlášenému) P

202 6.6 SPRÁVA SOFTWARU 194 msiexec /jm cesta\balíček.msi přiřadí aplikaci všem uživatelům počítače (tj. počítači) msiexec /a cesta\balíček.msi administrativní (sít ová) instalace jsme dotázáni na místo, kam má být aplikace umístěna, a potom se balíček na zadaném místě rozbalí podobně, jako by se opravdu instaloval, ale neprovedou se žádné změny v systému (předpokládáme, že jde o server, tedy aplikace nebude provozována na serveru), vytvoří se menší MSI balíček, který je již dostupný klientským počítačům (publikován) msiexec /a soubor.msi /p záplata.msp na síti použití záplaty na aplikaci, která byla publikována Dalšími přepínači lze například podrobně řídit logování, zakázat zobrazování grafického rozhraní instalátoru (pro bezobslužný mód instalace), apod. Pomocí Active Directory můžeme instalovat po síti takto: přihlásíme se na server, který je doménovým řadičem Active Directory, a to jako Domain/Administrator, provedeme administrativní instalaci (msiexec /a), ted by nám mělo být známo umístění MSI souboru ve sdílené složce na tomto serveru (tato složka musí být přístupná všem klientům, na kterých chceme instalovat), na serveru spustíme MMC konzolu Group Policy Management (správa zásad skupiny), zobrazí se struktura položek, ve které najdeme Group Policy Objects (GPO), v kontextovém menu položky zvolíme Nový (New), vytvoříme nový GPO (vpodstatě jde o novou zásadu, která má být aplikována na zadané počítače), vhodně nazveme (podle instalované aplikace), po vytvoření musíme GPO nastavit klepneme na vytvořenou položku a nastavíme vše, co potřebujeme (v pravém podokně na všech záložkách), například určíme objekty, na které se má zásada aplikovat (v našem případě počítače), potom v kontextovém menu vytvořeného GPO zvolíme Edit; otevře se konzola Group Policy pro tuto položku, ve které najdeme Computer Configuration Software Settings Software Installation, v kontextovém menu této položky zvolíme New Package a najdeme MSI balíček, který jsme vytvořili na začátku tohoto postupu, dále určíme, jestli na balíček chceme aplikovat nějaké transformace (volba Advanced rozšířené možnosti nasazení), v tom případě musíme ve vlastnostech položky nat ukat příslušné volby pro transformace, potvrdíme, v konzole Group Policy pro námi vytvořený GPO ještě nastavíme podrobnosti instalace najdeme Computer Configuration Administrative Templates Windows Components Windows Installer a nastavíme zde zásady podle našich požadavků (například můžeme nastavit, že se má aplikace instalovat se zvýšenými oprávněními apod.). Možných postupů je více. Konkrétně pro jednotlivé produkty se můžeme podívat například na adresy ad 8.pdf

203 6.6 SPRÁVA SOFTWARU 195 InstallShield vytváří místo MSI souborů spustitelné instalační EXE soubory. Hlavní spustitelný soubor instalace se většinou nazývá setup.exe a podporuje některé běžné přepínače (například pro vytvoření souboru odpovědí setup.iss, bezobslužné instalace apod.). setup.exe /r pokud nemáme soubor odpovědí, takto ho vytvoříme (spustí se modelová instalace, ve které naklikáme vše potřebné a všechna zvolená nastavení se uloží do souboru...\windows\setup.iss), vytvořený soubor odpovědí pak přesuneme do složky, ve které máme instalační soubor setup.exe setup.exe /s pokud máme ve stejné složce i soubor odpovědí setup.iss, je takto spuštěna bezobslužná instalace Zajímavý článek o instalátorech aplikací najdeme například na Úkoly 1. Zobrazte nápovědu příkazu msiexec a zjistěte, co vše lze během činnosti tohoto programu ukládat do LOG souboru a jakým způsobem se tyto volby nastavují. 2. Na internetu zjistěte, jaké parametry (kromě výše uvedených) může mít setup.exe vytvořený programem InstallShield. C R IntelliMirror Technologie IntelliMirror slouží k centrální správě softwaru, uživatelských dat a nastavení v lokální síti. Většina možností, které nabízí, vyžaduje používání služby Active Directory, ale některé možnosti mohou být používány i v síti bez Active Directory (samozřejmě potřebujeme sít se serverem, na kterém je nainstalována některá serverová verze Windows od 2000). Technologie IntelliMirror umožňuje například P konfiguraci nastavení uživatelů a počítačů, nastavení zabezpečení v doméně, používání přihlašovacích a odhlašovacích skriptů, správu cestovních profilů, centrální instalaci a aktualizaci softwaru v síti. Jak bylo výše uvedeno, IntelliMirror je poměrně úzce svázán s Active Directory. S některými položkami Active Directory týkajícími se IntelliMirror jsme vlastně už pracovali (například v sekci o instalaci softwaru to byly položky Administrative Templates, Software Installation apod.). Centrální instalace a aktualizace softwaru: Tento úkol se provádí pomocí Zásad skupiny (Group Policy Management) ve službě Active Directory. Můžeme tak bez nutnosti fyzické návštěvy u konkrétního počítače instalovat software, inovovat na novou verzi, aktualizovat operační systém (opravné balíčky, bezpečnostní záplaty). Ukázku jsme už viděli, můžeme software přiřadit či publikovat.

204 6.6 SPRÁVA SOFTWARU 196 Úkoly Ne každý má přístup k serveru, ale některé z výše popsaných položek si můžeme prohlédnout i na desktopové variantě Windows (kromě variant Home). Spustíme Zásady skupiny (gpedit.msc) a v Konfiguraci počítače (Computer Configuration) najdeme C uzel Nastavení softwaru (Software Settings) je možné, že v něm nic není, uzel Šablony pro správu Součásti systému Windows Služba Windows Installer (Administrative Templates Windows Components Windows Installer) podívejte se, jak jsou zde nastaveny zásady.

205 Přílohy pro pokročilé

206 Příloha A Ladění programů a jádra Windows Zde se budeme věnovat nástrojům usnadňujícím sledování a nalezení chyb při běhu procesů, služeb, ovladačů a samotného jádra. A.1 Princip ladění Debuggery jsou nástroje pro ladění programů nebo jádra operačního systému. Ve Windows máme k dispozici jako výchozí debugger Dr. Watson, ale rozsáhlejší programovací prostředí tento jednoduchý debugger nahrazují vlastním programem. Ladění jádra se používá nejen ke sledování operací v jádru probíhajících a sdílených prostředků, ale také tímto způsobem můžeme zjistit důvod chybného chování aplikace nebo ovladače. Přes debugger se připojíme k běžícímu procesu a máme možnost zkoumat (a ovlivňovat) jeho adresový prostor a různé vlastnosti. Ladění jádra lze provádět různými nástroji, které si obvykle musíme pro tento účel nainstalovat například Windows Debugging Tools od Microsoftu (konkrétně nás zajímá WinDbg nebo jeho textová obdoba kd.exe) nebo LiveKD od Sysinternals. Oba tyto programy jsou volně ke stažení na serveru Microsoftu. P A.2 Dr. Watson DrWatson je aplikace, která může zjistit příčinu chyb při běhu aplikací včetně součástí systému. Je dostupná v nástroji Systémové informace (Start Programy Příslušenství Systémové nástroje, v menu Nástroje) nebo spuštěním programu drwtsn32.exe. Použití této aplikace má smysl především pro programátory, kteří tak mohou své aplikace ladit, odchytávat chyby. Dr. Watson ukládá všechny ladicí informace do protokolu (drwtsn32.log), který si pak programátor může prohlédnout. Můžeme také určit, co se do protokolu bude 198

207 A.3 WinDbg 199 ukládat, například zda se má pro moduly aplikace uložit tabulka symbolů, kontexty procesů (viz kapitolu o procesech), apod. Jak bylo výše poznamenáno, debugger Dr. Watson bývá často nahrazován jinými programy obvykle při instalaci rozsáhlejších programovacích prostředí. Který debugger je nastaven, zjistíme v registru v klíči HKLM/Software/Microsoft/Windows NT/CurrentVersion/AeDebug v řetězcové hodnotě Debugger, ve které je uložen nástroj s celou cestou. Pokud chceme z nějakého důvodu dočasně využít program Dr. Watson a pak se vrátit k právě nastavenému, provedeme to takto: najdeme výše popsanou hodnotu v registru, exportujeme tento klíč do REG souboru, na Příkazovém řádku nebo v menu Start Spustit zadáme drwtsn32 -i používáme program Dr. Watson, vrátíme do registru původní nastavení spuštěním REG souboru vytvořeného v druhém bodu tohoto výčtu (třeba poklepáním na tento soubor). Úkoly 1. Zjistěte, který debugger je na vašem počítači nastaven. 2. Spust te okno aplikace Dr. Watson a zjistěte v něm, kam se ukládá soubor protokolu, kam se ukládá stav systému, co vše se má uložit apod. C A.3 WinDbg A.3.1 Instalace a nastavení programu Instalace: Předpokládejme, že budeme chtít použít program WinDbg. Na stránkách zadáme do vyhledávacího okýnka řetězec windbg, ve výsledcích vyhledávání zvolíme hned první možnost ( Install Debugging Tools... ) a vybereme si verzi pro náš systém (nejnovější, poměrně často se mění). Stáhne se soubor s příponou MSI, který spustíme a projdeme instalací. V nabídce Start Programy se objeví položka Debugging Tools for Windows WinDbg. Ve složce, do které byl program nainstalován, je také textová obdoba programu kd.exe, která má prakticky stejné funkce, až na grafické rozhraní.

208 A.3 WinDbg 200 Úpravy: Zprovoznění programu zahrnuje několik úprav. Vytvoříme adresář (složku) s názvem symbols, a to někde v adresáři, do kterého se nainstaloval program, například C:\Program Files\Debugging Tools for Windows\symbols. Spustíme WinDbg, v menu najdeme File Symbol File Path a zadáme tento řetězec s cestou k vytvořenému adresáři symbols: srv*c:\cesta_k_adresáři_symbols* Například (v adrese je opravdu msdl, ne msdn): srv*c:\program Files\Debugging Tools for Windows\symbols* crosoft.com/download/symbols Do zvoleného adresáře (předem vytvořeného) si debugger sám stáhne soubory, které potřebuje pro ladění. Předpokládá se, že máme přístup na internet, v opačném případě musíme vytvořit sady symbolů ručně. Informace o způsobu vytvoření sady symbolů najdeme v nápovědě. Obrázek A.2: Vložení adresy pro získání symbolů Úkoly do WinDbg Pokud máte možnost, pokuste se nainstalovat a zprovoznit program WinDbg a vyzkoušejte dále popsané postupy. C A.3.2 Práce se souborem výpisu při zhroucení Windows Pokud dojde k závažnému problému, jsou veškeré potřebné informace o průběhu selhání zapsány ve speciálním souboru (obvykle memory.dmp). Název a umístění tohoto souboru najdeme podle popisu v kapitole 6.5 v odstavci Modrá obrazovka na straně 189. Následující postup lze provést jen tehdy, když soubor s výpisem stavu systému existuje (tj. když nastala chyba v jádře a objevila se modrá obrazovka). V rozhraní WinDbg zvolíme File Open Crash Dump, najdeme daný soubor, jeho otevření trvá několik desítek sekund. Zobrazí se obsah daného DMP souboru, najdeme ho na obrázku A.3 na straně 201. Z tohoto základního výpisu lze zjistit pouze obecné informace. Na řádku Probably caused by najdeme název ovladače nebo modulu jádra, který pravděpodobně chybu způsobil, informace o něm zobrazí příkaz lm popsaný v následující sekci. K podrobnějším se dostaneme použitím příkazu, který je nám ve výpisu doporučen (napíšeme ho do řádku na spodním okraji okna) příkaz začíná symbolem! jako většina příkazů ve WinDbg:!analyze -v Dostaneme analýzu souboru výpisu, ze které je obvykle možné zjistit důvod havárie. Výpis je zachycen na obrázku A.4. Je zde uveden název procesu, při jehož zpracování došlo k chybě (část PROCESS_NAME ), a také by nás měl zajímat výpis obsahu zásobníku (část STACK_TEXT ) tohoto procesu. Ze zásobníku totiž poznáme, které funkce byly právě ve zpracování, když došlo k chybě.

209 A.3 WinDbg 201 Obrázek A.3: Načtení DBG souboru do programu WinDbg Zásobník čteme odspoda. Z ukázkového výpisu vidíme, že funkce s adresou 0x7c90eb94 uvnitř adresového prostoru procesu zavolala funkci KiFastCallEntry v modulu nt (to je ntoskrnl), která zavolala funkci NtDeviceIoControlFile v témže modulu, atd. Poslední (na vrcholu zásobníku) je volání chybového ovladače myfault. Pokud přímo nedošlo ke zhroucení jádra systému (modrá obrazovka), není standardně výpis stavu systému generován. Když však přesto chceme takový soubor vytvořit, připojíme se k lokálnímu jádru operačního systému (postup je popsán v sekci A.3.3) a použijeme v rozhraní WinDbg příkaz.dump /m c:\tmp\memory.dmp (případně jiný název souboru, tečka na začátku řádku je součástí příkazu). Přepínač /m způsobí vygenerování minimálního výpisu obsahu paměti (minidump), jiné přepínače zjistíme zadáním příkazu bez jakýchkoliv parametrů. A.3.3 Práce ve WinDbg bez načtení DBG souboru

210 A.3 WinDbg 202 Obrázek A.4: Výsledky analýzy DBG souboru ve WinDbg Příkazový řádek debuggeru se zobrazí až po načtení některého DMP souboru, a nebo po připojení k jádru některého počítače. Ve Windows XP a Windows Server 2003 (a vyšších) máme možnost se připojit i k lokálnímu jádru, ve starších verzích však pouze k jádru systému na jiném počítači. Programu WinDbg tedy musíme sdělit, že chceme pracovat na lokálním (nebo vzdáleném) počítači. V menu najdeme File Kernel Debug a zvolíme pro připojení k lokálnímu jádru záložku Local, Obrázek A.5: Funkce Kernel Debug pro připojení k jádru na jiném počítači vybíráme mezi záložkami podle typu připojení k tomuto počítači (výchozí je COM, znamená to použití COM portu nebo virtuálního sériového rozhraní, další možností je 1394, což je FireWire rozhraní, a nebo USB 2.0). Pak už se zobrazí okno, na jehož spodním konci můžeme zadávat příkazy je na obrázku A.6. Zatímco při analýze dmp souboru byl v příkazovém řádku prompt kd>, při ladění lokálního jádra máme prompt lkd>. Dále můžeme zadávat příkazy (některé začínají symbolem!, to jsou tzv. rozšíření). Například příkaz!process vypíše informace o právě běžícím procesu. Pokud máme spuštěny spíše interak-

211 A.3 WinDbg 203 Obrázek A.6: Kernel Debug na lokálním počítači tivní procesy, tak se pravděpodobně vypíše proces Idle (nečinný, ve skutečnosti nejde o proces) nebo WinDbg, takže tento příkaz má smysl spíše tehdy, když chceme zjistit, který proces dlouhodobě zabírá procesor (například se mohl dostat do nekonečné smyčky). Na obrázku A.7 vidíme výpis stavu běžícího procesu s tím, že při prvním provedení příkazu byl procesor přidělen procesu WinDbg, při druhém provedení příkazu to byl program s obrazem Lin.exe. V tomto rozhraní můžeme použít i další podobné příkazy, například!process 0 0 pro výpis všech aktivních procesů (dva parametry v hodnotě 0),!process adresa_začátku_prostoru_procesu zobrazí detailní informace o daném procesu a jeho vláknech (musíme zadat adresu procesu, kterou získáme například z výpisu předchozího příkladu, je to první číselný údaj o každém procesu v seznamuk anebo jeho CID, které je také součástí výpisu), viz obrázek A.8,!thread pro výpis běžícího vlákna,!thread adresa_vlákna pro výpis konkrétního vlákna, adresu získáme z výpisu příkazu!process s adresou procesu v parametru,!peb adresa_peb_procesu zobrazí obsah bloku PEB (něco jako PCB procesu), tedy soubor obrazu, načtené moduly, adresu heapu (haldy) procesu, hodnoty proměnných prostředí procesu, atd., je nutné zadat adresu PEB, kterou získáme například pomocí příkazu!process 0 0!ready zobrazí vlákna, která jsou ve stavu připraven (čekají na procesor), pokud jsou spuštěny spíše interaktivní procesy, je seznam obvykle prázdný, lm i vypíše moduly (načtené i nenačtené) včetně obrazu (tj. názvu spustitelného souboru), lm ov vypíše veškeré dostupné informace o zavedených modulech parametr o znamená pouze zavedené moduly, parametr v určuje upovídaný mód (verbose), tedy vypíše všechny dostupné informace,

212 A.3 WinDbg 204 Obrázek A.7: Výpis stavu běžícího procesu lm e vypíše moduly, které mají problém se zavedením symbolů (tento výpis by měl být pokud možno prázdný, v opačném případě je modul nesprávně naprogramován),!lmi adresa_začátku_modulu zobrazí podrobné informace o načteném modulu, zadáme vždy adresu, která je na výpisu modulů (dle předchozích příkazů) uvedena na začátku řádku jako startovní,

213 A.3 WinDbg 205 Obrázek A.8: Informace o procesu!stacks zobrazí informaci o kernel zásobnících spuštěných vláken, ve výpisu najdeme ID procesu a vlákna (tyto údaje jsou v prvním sloupci odděleny tečkou), adresu vlákna, délku běhu, stav a momentální adresu vrcholu zásobníku,!locks zobrazí seznam objektů výkonné části (sdílených), které jsou momentálně vlastněny, všechny (i nepoužívané) zobrazíme použitím s parametrem -d,!vm zobrazí podrobné informace o virtuální paměti (včetně jejího využívání jednotlivými procesy),!token číslo_tokenu vypíše veškeré informace o zadaném objektu typu token token je objekt, ve kterém jsou uloženy bezpečnostní informace (například přístupová oprávnění, SID souvisejících účtů a skupin apod.), číslo tokenu získáme takto: příkazem!process 0 0 vypíšeme seznam procesů, ve kterém najdeme ten proces, který nás zajímá, zjistíme jeho CID, zjištěné CID použijeme jako parametr příkazu!process (jako jediný parametr), tam najdeme řádek Token, na něm je číslo tokenu.

214 A.3 WinDbg 206 dt _OBJECT_HEADER adresa_objektu výpis hlavičky objektu (velká písmena u názvu struktury musí být, také pozor na podtržítka), adresu objektu získáme z různých výpisů; například pokud chceme vypsat informace o hlavičce objektu procesu (proces je také objekt), vypíšeme si informaci o daném procesu příkazem!process adresa_procesu (adresu procesu získáme dle výše uvedeného popisu tohoto příkazu), hledaná adresa objektu je na řádku ObjectHeader. Příkaz bez zadání adresy vypíše pouze strukturu typu hlavičky objektu.!object \device zobrazí seznam objektů typu zařízení, a to adresu, typ a název,!devobj nějaké_zařízení vypíše informaci o objektu typu zařízení, zařízení může být zadáno adresou nebo (od Windows 2000) názvem, obojí zjistíme z výpisu předchozího příkazu,!devstack nějaké_zařízení zařízení, vypíše informace o objektech zařízení přidružených k danému!drvobj nějaký_ovladač 7 vypíše informace o zadaném ovladači; ovladač je zadán adresou, kterou získáme například z výpisu příkazu!devobj (údaj je označen jako DriverObject), číslo 7 na konci příkazu určuje, že se mají také vypsat rutiny nabízené ovladačem včetně jejich přístupových bodů. Na obrázku A.10 je výstup tohoto příkazu a předchozích dvou, týká se jednoho z USB rozbočovačů. Příkazů je mnohem více, jejich seznam a popis najdeme také v nápovědě dostupné z prostředí WinDbg. Obrázek A.9: Výstup příkazů!stacks a!locks (první výpis je velmi dlouhý, jeho část byla odstraněna) A.3.4 Funkce napojení se na proces

215 A.3 WinDbg 207 Obrázek A.10: Výstup příkazů!devobj,!devstack a!drvobj Někdy je třeba kontrolovat nebo ovlivňovat běh procesu a jeho adresový prostor. WinDbg nabízí tuto možnost, ale musíme počítat s tím, že běh procesu, na který se napojíme, se značně zpomalí. V menu nástroje WinDbg je volba File Attach to a Process. Po jejím vybrání se zobrazí okno, ve kterém se můžeme napojit na některý spuštěný proces. V okně s procesy klepneme na proces, jehož běh nás zajímá, jeho PID se automaticky vloží do řádku pro výběr ID procesu. Dále bychom měli klepnout na volbu Noninvasive, která zajistí, že adresový prostor procesu nebude debuggerem narušováno (ovšem při invazivním napojení máme možnost proces doopravdy ladit, tedy například kromě přidávání breakpointů také měnit obsah registrů, pamět ových míst apod.). Při invazivním napojení je standardně po ukončení ladění proces automaticky ukončen. Na obrázku A.11 je ukázka výběru neinvazivního napojení na proces Kalkulačka (calc.exe). Obrázek A.11: Napojení na proces

216 A.3 WinDbg 208 Obrázek A.12: Zobrazená okna Command, Call Stack a Disassembly Některé informace o běhu procesu můžeme získat z oken, která lze otevřít přes nabídku View. Na obrázku A.12 vidíme otevřená okna Command (pro zadávání příkazů debuggeru), Call Stack (obsah kernel zásobníku vláken) a Disassembly (zpětné přeložení strojových instrukcí do assembleru). Dále zde najdeme například okno s obsahem registrů procesoru nebo okno s obsahem pamět ové oblasti. Také je k dispozici okno Watch pro sledování proměnných, které se používá způsobem obvyklým v běžných programovacích prostředích. V menu také najdeme nabídku Debug. Některé položky nabídky jsou určeny spíše pro invazivní ladění, jiné lze použít i při neinvazivním. Opět jde o běžné možnosti nabízené debuggery v programovacích prostředích. Je tady také volba Stop Debugging, kterou bychom měli správně ukončit každé ladění procesu.

ČÁST 1 ÚVOD. Instalace operačního systému 21 Aktualizace operačního systému 57 Příkazový řádek 77 Windows Script Host 103 ČÁST 2 ŘEŠENÍ

ČÁST 1 ÚVOD. Instalace operačního systému 21 Aktualizace operačního systému 57 Příkazový řádek 77 Windows Script Host 103 ČÁST 2 ŘEŠENÍ Stručný obsah ČÁST 1 ÚVOD Instalace operačního systému 21 Aktualizace operačního systému 57 Příkazový řádek 77 Windows Script Host 103 ČÁST 2 ŘEŠENÍ Uživatelé a skupiny 117 Soubory a složky 199 Správa

Více

Slezská univerzita v Opavě. Ústav informatiky

Slezská univerzita v Opavě. Ústav informatiky Šárka Vavrečková Operační systémy cvičení Část I: Windows Slezská univerzita v Opavě Filozoficko-přírodovědecká fakulta Ústav informatiky Opava, poslední aktualizace 24. března 2017 Anotace: Tento dokument

Více

Téma 8: Konfigurace počítačů se systémem Windows 7 IV

Téma 8: Konfigurace počítačů se systémem Windows 7 IV Téma 8: Konfigurace počítačů se systémem Windows 7 IV 1 Teoretické znalosti V tomto cvičení budete pracovat se správou vlastností systému, postupně projdete všechny karty tohoto nastavení a vyzkoušíte

Více

Zálohování v MS Windows 10

Zálohování v MS Windows 10 Zálohování v MS Windows 10 Historie souborů Způsob zálohování jako v MS Windows 8.1 Nastavení Aktualizace a zabezpečení Zálohování nebo Ovládací panely Systém a zabezpečení - Historie souborů Přidat jednotku

Více

Pro označení disku se používají písmena velké abecedy, za nimiž následuje dvojtečka.

Pro označení disku se používají písmena velké abecedy, za nimiž následuje dvojtečka. 1 Disky, adresáře (složky) a soubory Disky Pro označení disku se používají písmena velké abecedy, za nimiž následuje dvojtečka. A:, B: C:, D:, E:, F: až Z: - označení disketových mechanik - ostatní disky

Více

Úvod do analýzy. Ústav informatiky, FPF SU Opava sarka.vavreckova@fpf.slu.cz. Poslední aktualizace: 8. prosince 2013

Úvod do analýzy. Ústav informatiky, FPF SU Opava sarka.vavreckova@fpf.slu.cz. Poslední aktualizace: 8. prosince 2013 počítačových sítí Šárka Vavrečková Ústav informatiky, FPF SU Opava sarka.vavreckova@fpf.slu.cz Poslední aktualizace: 8. prosince 2013 Základní pojmy z počítačových sítí Základní pojmy Protokol popisuje

Více

Modul 2. Druhá sada úkolů:

Modul 2. Druhá sada úkolů: Zadání Druhá sada úkolů: Modul 2 Všechny potřebné složky a soubory pro splnění následující sady úkolů se nachází ve složce sada2. 1. Ve složce Ulohy vytvořte šest nových složek (podle obrázku) a pojmenujte

Více

Příručka rychlého nastavení připojení sítě

Příručka rychlého nastavení připojení sítě Xerox WorkCentre M118/M118i Příručka rychlého nastavení připojení sítě 701P42718 V této příručce naleznete následující pokyny: Procházení obrazovek na displeji na straně 2 Nastavení sítě pomocí DHCP na

Více

František Hudek. duben ročník

František Hudek. duben ročník VY_32_INOVACE_FH09_WIN Jméno autora výukového materiálu Datum (období), ve kterém byl VM vytvořen Ročník, pro který je VM určen Vzdělávací oblast, obor, okruh, téma Anotace František Hudek duben 2013 6.

Více

Možnosti využití Windows Server 2003

Možnosti využití Windows Server 2003 Možnosti využití Windows Server 2003 Seminář z cyklu "Krůček vpřed v uskutečňování standardu služeb ICT" 1 2 3 4 5 6 Konfigurace serveru jako řadiče domény Připojení stanice do domény Vytváření doménových

Více

Popis programu EnicomD

Popis programu EnicomD Popis programu EnicomD Pomocí programu ENICOM D lze konfigurovat výstup RS 232 přijímačů Rx1 DIN/DATA a Rx1 DATA (přidělovat textové řetězce k jednotlivým vysílačům resp. tlačítkům a nastavovat parametry

Více

Implementace LMS MOODLE. na Windows 2003 Server a IIS 6.0

Implementace LMS MOODLE. na Windows 2003 Server a IIS 6.0 Implementace LMS MOODLE na Windows 2003 Server a IIS 6.0 Obsah 1 ÚVOD... 3 1.1 Instalace PHP... 3 1.1.1 Nastavení práv k adresáři PHP... 3 1.1.2 Úprava souboru php.ini... 4 1.1.3 Proměnné prostředí...

Více

ORGANIZACE DAT V PROSTŘEDÍ MS WINDOWS 10

ORGANIZACE DAT V PROSTŘEDÍ MS WINDOWS 10 ORGANIZACE DAT V PROSTŘEDÍ MS WINDOWS 10 Disky, složky, soubory 1. Disky a) označují se písmenem a dvojtečkou A:, B: disketové jednotky C:,... pevné místní disky (někdy disk rozdělený na více oddílů) D:,...

Více

Přednáška 2. Systémy souborů OS UNIX. Nástroje pro práci se souborovým systémem. Úvod do Operačních Systémů Přednáška 2

Přednáška 2. Systémy souborů OS UNIX. Nástroje pro práci se souborovým systémem. Úvod do Operačních Systémů Přednáška 2 Přednáška 2 Systémy souborů OS UNIX. Nástroje pro práci se souborovým systémem. 1 Systém souborů (FS) I 2 Systém souborů II Logický systém souborů pro běžného uživatele se jeví jako jediná homogenní struktura

Více

Správa zařízení Scan Station Pro 550 a Servisní nástroje zařízení Scan Station

Správa zařízení Scan Station Pro 550 a Servisní nástroje zařízení Scan Station Správa zařízení Scan Station Pro 550 a Servisní nástroje zařízení Scan Station Konfigurační příručka A-61732_cs 7J4367 Správa zařízení Kodak Scan Station Pro 550 Obsah Rozdíly... 1 Instalace... 2 Vytváření

Více

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: 1. lekce 1. Minimální program do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: #include #include int main() { printf("hello world!\n"); return 0; 2.

Více

František Hudek. červen ročník

František Hudek. červen ročník VY_32_INOVACE_FH17_WIN Jméno autora výukového materiálu Datum (období), ve kterém byl VM vytvořen Ročník, pro který je VM určen Vzdělávací oblast, obor, okruh, téma Anotace František Hudek červen 2013

Více

Registrační číslo projektu: CZ.1.07/1.5.00/34.0553 Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost

Registrační číslo projektu: CZ.1.07/1.5.00/34.0553 Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost Registrační číslo projektu: CZ.1.07/1.5.00/34.0553 CZ.1.07 Vzděláním pro konkurenceschopnost Projekt je realizován v rámci Operačního programu Vzdělávání pro konkurence schopnost, který je spolufinancován

Více

Instalace programu ProVIS

Instalace programu ProVIS Instalace programu ProVIS Tento program umožňuje instalovat program ProVIS. Umožňuje vybrat, kam se bude instalovat, a jednotlivé součásti instalace. Instalace probíhá v několika krocích. Každý krok má

Více

NASTAVENÍ PROGRAMU EVIDENCE AUTOBAZARU PRO OS VISTA, WIN7 a WIN8 LOKÁLNÍ INSTALACE (PRO 1 POČÍTAČ)

NASTAVENÍ PROGRAMU EVIDENCE AUTOBAZARU PRO OS VISTA, WIN7 a WIN8 LOKÁLNÍ INSTALACE (PRO 1 POČÍTAČ) NASTAVENÍ PROGRAMU EVIDENCE AUTOBAZARU PRO OS VISTA, WIN7 a WIN8 LOKÁLNÍ INSTALACE (PRO 1 POČÍTAČ) Pro správný provoz programu na OS MS VISTA a WIN7 je po nainstalování programu nutno provést, případně

Více

Komu je tato kniha určena? Jak je kniha uspořádána? Konvence použité v té to knize. Část i základy Microsoft Windows XP Professional

Komu je tato kniha určena? Jak je kniha uspořádána? Konvence použité v té to knize. Část i základy Microsoft Windows XP Professional Obsah Poděkování Úvod Komu je tato kniha určena? Jak je kniha uspořádána? Konvence použité v té to knize podpora xix xxi xxi xxii xxiii xxiv Část i základy Microsoft Windows XP Professional KAPITOLA 1

Více

Maturitní téma: Operační MS-DOS

Maturitní téma: Operační MS-DOS Maturitní téma: Operační MS-DOS OS - základní softwarové vybavení každého, počítače. DOS byl diskový operační systém určený pro práci na počítačích kompaktabilních s počítači IBM PC. MSDOS poskytoval uživateli

Více

IPFW. Aplikace pro ovládání placeného připojení k Internetu. verze 1.1

IPFW. Aplikace pro ovládání placeného připojení k Internetu. verze 1.1 IPFW Aplikace pro ovládání placeného připojení k Internetu verze 1.1 Popis aplikace Aplikace IPFW (IP Firewall) je určen k řízení placeného připojení k Internetu ve spojení s elektronickým mincovníkem

Více

9. Sítě MS Windows. Distribuce Windows. Obchodní označení. Jednoduchý OS pro osobní počítače, pouze FAT, základní podpora peer to peer sítí,

9. Sítě MS Windows. Distribuce Windows. Obchodní označení. Jednoduchý OS pro osobní počítače, pouze FAT, základní podpora peer to peer sítí, 9. Sítě MS Windows MS Windows existoval ve 2 vývojových větvích 9x a NT, tyto později byly sloučeny. V současnosti existují aktuální verze Windows XP a Windows 2003 Server. (Očekává se vydání Windows Vista)

Více

Nastavení programu pro práci v síti

Nastavení programu pro práci v síti Nastavení programu pro práci v síti Upozornění: následující text nelze chápat jako kompletní instalační instrukce - jedná se pouze stručný návod, který z principu nemůže popsat všechny možné stavy ve vašem

Více

Téma 6: Konfigurace počítačů se systémem Windows 7 II

Téma 6: Konfigurace počítačů se systémem Windows 7 II Téma 6: Konfigurace počítačů se systémem Windows 7 II 1 Teoretické znalosti V tomto cvičení se dozvíte více o nástroji WMI sytému Windows 7 a použití nástrojů na podporu systému. Vyzkoušíte si funkci zálohování,

Více

Instalace SQL 2008 R2 na Windows 7 (64bit)

Instalace SQL 2008 R2 na Windows 7 (64bit) Instalace SQL 2008 R2 na Windows 7 (64bit) Pokud máte ještě nainstalovaný MS SQL server Express 2005, odinstalujte jej, předtím nezapomeňte zálohovat databázi. Kromě Windows 7 je instalace určena také

Více

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: 1. lekce 1. Minimální program do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: #include #include int main() { printf("hello world!\n"); return 0; 2.

Více

Registrační číslo projektu: CZ.1.07/1.5.00/34.0553 Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost

Registrační číslo projektu: CZ.1.07/1.5.00/34.0553 Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost Registrační číslo projektu: CZ.1.07/1.5.00/34.0553 CZ.1.07 Vzděláním pro konkurenceschopnost Projekt je realizován v rámci Operačního programu Vzdělávání pro konkurence schopnost, který je spolufinancován

Více

DUM 15 téma: Další příkazy příkazové řádky

DUM 15 téma: Další příkazy příkazové řádky DUM 15 téma: Další příkazy příkazové řádky ze sady: 03 tematický okruh sady: Tvorba skript a maker ze šablony: 10Algoritmizace a programování určeno pro: 2-3.ročník vzdělávací obor: 18-20-M/01 Informační

Více

Konfigurace Windows 7

Konfigurace Windows 7 Konfigurace Windows 7 Klíčové pojmy: Uživatelská a systémová konfigurace, UAC, Rodičovská kontrola. Uživatelská konfigurace Vzhled Grafické rozhraní Aero Nabízí průhlednost, 3D efekty Zvyšuje nároky na

Více

Semestrální projekt do předmětu SPS

Semestrální projekt do předmětu SPS Semestrální projekt do předmětu SPS Název projektu: Instalace a provoz protokolu IPv6 v nových verzích MS Windows (XP). Ověření proti routerům Cisco a Linux. Cíl projektu: Autoři: Cílem tohoto projektu

Více

Úvod do Unixu. man: příkaz pro zobrazení nápovědy k danému příkazu, programu (pokud je k dispozici), např. man cp. pwd: vypíše cestu k aktuální pozici

Úvod do Unixu. man: příkaz pro zobrazení nápovědy k danému příkazu, programu (pokud je k dispozici), např. man cp. pwd: vypíše cestu k aktuální pozici Základní příkazy Úvod do Unixu man: příkaz pro zobrazení nápovědy k danému příkazu, programu (pokud je k dispozici), např. man cp vypíše nápovědu o příkazu cp, manuálová stránka se ukončí stisknutím klávesy

Více

STRUč Ná Př íruč KA pro Windows Vista

STRUč Ná Př íruč KA pro Windows Vista STRUč Ná Př íruč KA pro Windows Vista OBSAH Kapitola 1: SYSTéMOVé POžADAVKY...1 Kapitola 2: INSTALACE SOFTWARU TISKáRNY V SYSTéMU WINDOWS...2 Instalace softwaru pro lokální tisk... 2 Instalace softwaru

Více

Jak používat program P-touch Transfer Manager

Jak používat program P-touch Transfer Manager Jak používat program P-touch Transfer Manager Verze 0 CZE Úvod Důležité upozornění Obsah tohoto dokumentu a technické parametry příslušného výrobku podléhají změnám bez předchozího upozornění. Společnost

Více

Ovládací panel. Barevná multifunkční tiskárna Xerox WorkCentre 6655 Technologie Xerox ConnectKey 2.0

Ovládací panel. Barevná multifunkční tiskárna Xerox WorkCentre 6655 Technologie Xerox ConnectKey 2.0 Ovládací panel Služby dostupné na vaší sestavě tiskárny se mohou lišit. Podrobnosti týkající se služeb a nastavení najdete v uživatelské příručce. 4 5 Dotyková obrazovka Nabídky 6 8 Alfanumerická klávesnice

Více

BRICSCAD V15. Licencování

BRICSCAD V15. Licencování BRICSCAD V15 Licencování Protea spol. s r.o. Makovského 1339/16 236 00 Praha 6 - Řepy tel.: 235 316 232, 235 316 237 fax: 235 316 038 e-mail: obchod@protea.cz web: www.protea.cz Copyright Protea spol.

Více

Patrol Management System 2.0

Patrol Management System 2.0 Patrol Management System 2.0 Uživatelský manuál RF 5000 Obsah 1 Základní popis aplikačního prostředí 1.1 Hardwarové požadavky 1.2 Aplikační prostředí 1.3 Instalace software 2 Jak používat software 2.1

Více

APS mini.ed programová nadstavba pro základní vyhodnocení docházky. Příručka uživatele verze 2.2.0.6

APS mini.ed programová nadstavba pro základní vyhodnocení docházky. Příručka uživatele verze 2.2.0.6 APS mini.ed programová nadstavba pro základní vyhodnocení docházky Příručka uživatele verze 2.2.0.6 APS mini.ed Příručka uživatele Obsah Obsah... 2 Instalace a konfigurace programu... 3 Popis programu...

Více

ČÁST 1. Základy 32bitového programování ve Windows

ČÁST 1. Základy 32bitového programování ve Windows Obsah Úvod 13 ČÁST 1 Základy 32bitového programování ve Windows Kapitola 1 Nástroje pro programování ve Windows 19 První program v Assembleru a jeho kompilace 19 Objektové soubory 23 Direktiva INVOKE 25

Více

Uživatelský manuál. Aplikace GraphViewer. Vytvořil: Viktor Dlouhý

Uživatelský manuál. Aplikace GraphViewer. Vytvořil: Viktor Dlouhý Uživatelský manuál Aplikace GraphViewer Vytvořil: Viktor Dlouhý Obsah 1. Obecně... 3 2. Co aplikace umí... 3 3. Struktura aplikace... 4 4. Mobilní verze aplikace... 5 5. Vytvoření projektu... 6 6. Části

Více

Internetový prohlížeč-vyhledávání a ukládání dat z internetu do počítače

Internetový prohlížeč-vyhledávání a ukládání dat z internetu do počítače VY_32_INOVACE_In 6.,7.11 Internetový prohlížeč-vyhledávání a ukládání dat z internetu do počítače Anotace: V prezentaci se žák seznámí se základními typy prohlížečů. Zaměříme se na prohlížeč Internet Explorer.

Více

SKYLA Pro II. Popis instalace programu

SKYLA Pro II. Popis instalace programu SKYLA Pro II Popis instalace programu Rev. 30.07.2014 O manuálu Dokument popisuje celý proces instalace programu Skyla Pro II, který se v některých ohledech liší od instalace předchozích verzí a upozorňuje

Více

POZOR!!! INSTALACE POD WINDOWS 200 / XP / VISTA PROBÍHÁ VE DVOU ETAPÁCH A JE NUTNÉ DOKON

POZOR!!! INSTALACE POD WINDOWS 200 / XP / VISTA PROBÍHÁ VE DVOU ETAPÁCH A JE NUTNÉ DOKON Program SK2 Připojení adaptérusk2 k počítači Propojte svůj počítač pomocí přiloženého propojovacího USB kabelu s adaptérem SK2. SK2 v prostředí Windows 2000 - XP - Vista - po propojení počítače s adaptérem

Více

Čtvrtek 3. listopadu. Makra v Excelu. Obecná definice makra: Spouštění makra: Druhy maker, způsoby tvorby a jejich ukládání

Čtvrtek 3. listopadu. Makra v Excelu. Obecná definice makra: Spouštění makra: Druhy maker, způsoby tvorby a jejich ukládání Čtvrtek 3. listopadu Makra v Excelu Obecná definice makra: Podle definice je makro strukturovanou definicí jedné nebo několika akcí, které chceme, aby MS Excel vykonal jako odezvu na nějakou námi definovanou

Více

Příručka nastavení funkcí snímání

Příručka nastavení funkcí snímání Příručka nastavení funkcí snímání WorkCentre M123/M128 WorkCentre Pro 123/128 701P42171_CS 2004. Všechna práva vyhrazena. Uplatňovaná ochrana autorských práv se vztahuje na všechny formy a záležitosti

Více

Operační systém MS Windows XP Professional

Operační systém MS Windows XP Professional Operační systém MS Windows XP Professional Operační systém základní programové vybavení počítače zprostředkovává komunikaci uživatele s počítačem s technickým vybavením počítače s aplikačním programovým

Více

Zá kládní nástávení prostr edí operáč ní ho syste mu Windows 7 á vybrány čh áplikáčí

Zá kládní nástávení prostr edí operáč ní ho syste mu Windows 7 á vybrány čh áplikáčí Zá kládní nástávení prostr edí operáč ní ho syste mu Windows 7 á vybrány čh áplikáčí Doporučené změny z výchozího nastavení pro pohodln ější práci s odečítači a digitálními lupami (kombinováno s informacemi

Více

Postup instalace softwaru Creo3:

Postup instalace softwaru Creo3: Postup instalace softwaru Creo3: Poznámka na úvod: Po základní instalaci Crea 3 je jeho prostředí nastaveno do výchozí konfigurace, která neodpovídá nastavení prostředí v učebnách. I v tomto výchozím nastavení

Více

Registrační číslo projektu: CZ.1.07/1.5.00/ Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost

Registrační číslo projektu: CZ.1.07/1.5.00/ Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost Registrační číslo projektu: CZ.1.07/1.5.00/34.0553 CZ.1.07 Vzděláním pro konkurenceschopnost Projekt je realizován v rámci Operačního programu Vzdělávání pro konkurence schopnost, který je spolufinancován

Více

Školící dokumentace administrátorů IS KRIZKOM (úroveň ÚSÚ) role ( administrátor )

Školící dokumentace administrátorů IS KRIZKOM (úroveň ÚSÚ) role ( administrátor ) Školící dokumentace administrátorů IS KRIZKOM (úroveň ÚSÚ) role ( administrátor ) DATASYS s.r.o., Jeseniova 2829/20, 130 00 Praha 3 tel.: +420225308111, fax: +420225308110 www.datasys.cz Obsah 1.1 Historie

Více

Školící dokumentace administrátorů IS KRIZKOM (úroveň KRAJ) (role manager, administrátor )

Školící dokumentace administrátorů IS KRIZKOM (úroveň KRAJ) (role manager, administrátor ) Školící dokumentace administrátorů IS KRIZKOM (úroveň KRAJ) (role manager, administrátor ) DATASYS s.r.o., Jeseniova 2829/20, 130 00 Praha 3 tel.: +420225308111, fax: +420225308110 www.datasys.cz Obsah

Více

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Číslo a název šablony Číslo didaktického materiálu Druh didaktického materiálu Autor Jazyk Téma sady didaktických materiálů Téma didaktického materiálu Vyučovací předmět Cílová skupina (ročník) Úroveň

Více

VZDÁLENÉ PŘIPOJENÍ - OpenVPN. Popis a vlastnosti služby

VZDÁLENÉ PŘIPOJENÍ - OpenVPN. Popis a vlastnosti služby Příručka - Vzdálené připojení - OpenVPN 1 VZDÁLENÉ PŘIPOJENÍ - OpenVPN OBSAH Popis a vlastnosti služby Popis instalace OpenVPN klienta pro Windows Postup připojení k serveru Používání, tipy Řešení problémů

Více

Maturitní témata pro 1.KŠPA Kladno, s.r.o. Počítačové sítě a komunikace

Maturitní témata pro 1.KŠPA Kladno, s.r.o. Počítačové sítě a komunikace Maturitní témata pro 1KŠPA Kladno, sro Předmět Typ zkoušky Obor Forma Zkoušející Období Počítačové sítě a komunikace Profilová ústní Informační technologie Denní / Dálková Mgr Martin Štorek MZ2017 strana

Více

Registrační číslo projektu: CZ.1.07/1.5.00/34.0553 Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost

Registrační číslo projektu: CZ.1.07/1.5.00/34.0553 Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost Registrační číslo projektu: CZ.1.07/1.5.00/34.0553 CZ.1.07 Vzděláním pro konkurenceschopnost Projekt je realizován v rámci Operačního programu Vzdělávání pro konkurence schopnost, který je spolufinancován

Více

APS Administrator.OP

APS Administrator.OP APS Administrator.OP Rozšiřující webový modul pro APS Administrator Přehled přítomnosti osob v oblastech a místnostech Instalační a uživatelská příručka 2004 2013,TECH FASS s.r.o., Věštínská 1611/19, Praha,

Více

ZMODO NVR KIT. Instalační příručka

ZMODO NVR KIT. Instalační příručka ZMODO NVR KIT Instalační příručka KROK 1 1. Zkontrolujte si obsah balení ZMODO NVR Kitu: NVR server 4 x IP kamera Napájecí adaptéry pro IP kamery LAN kabel CD se softwarem Příručka ( ke stažení na www.umax.cz)

Více

Redakční systém Joomla. Prokop Zelený

Redakční systém Joomla. Prokop Zelený Redakční systém Joomla Prokop Zelený 1 Co jsou to red. systémy? Redakční systémy (anglicky Content Management System - CMS) jsou webové aplikace používané pro snadnou správu obsahu stránek. Hlavním cílem

Více

Základní příkazy OS UNIX

Základní příkazy OS UNIX 1 Základní příkazy OS UNIX Výpis obsahu adresáře ls [přepínače] [soubor]! výpis informací o zadaných souborech! pokud zadáme jméno adresáře, je vypsán obsah adresáře (seznam souborů, které jsou v adresáři

Více

Stručný obsah. Úvod 15. KAPITOLA 1 První kroky v systému Windows 8 19. KAPITOLA 2 Hlavní panel a jeho možnosti 41. KAPITOLA 3 Soubory a složky 51

Stručný obsah. Úvod 15. KAPITOLA 1 První kroky v systému Windows 8 19. KAPITOLA 2 Hlavní panel a jeho možnosti 41. KAPITOLA 3 Soubory a složky 51 Stručný obsah Úvod 15 KAPITOLA 1 První kroky v systému Windows 8 19 KAPITOLA 2 Hlavní panel a jeho možnosti 41 KAPITOLA 3 Soubory a složky 51 KAPITOLA 4 Práce se schránkou 85 KAPITOLA 5 Osobní přizpůsobení

Více

Postup přechodu na podporované prostředí. Přechod aplikace BankKlient na nový operační systém formou reinstalace ze zálohy

Postup přechodu na podporované prostředí. Přechod aplikace BankKlient na nový operační systém formou reinstalace ze zálohy Postup přechodu na podporované prostředí Přechod aplikace BankKlient na nový operační systém formou reinstalace ze zálohy Obsah Zálohování BankKlienta... 3 Přihlášení do BankKlienta... 3 Kontrola verze

Více

NÁVOD PRO INSTALACI APLIKACE PRIORITY KM HODNOCENÍ PRIORIT PŘI ŘEŠENÍ KONTAMINOVANÝCH MÍST

NÁVOD PRO INSTALACI APLIKACE PRIORITY KM HODNOCENÍ PRIORIT PŘI ŘEŠENÍ KONTAMINOVANÝCH MÍST NÁVOD PRO INSTALACI APLIKACE PRIORITY KM HODNOCENÍ PRIORIT PŘI ŘEŠENÍ KONTAMINOVANÝCH MÍST 1. Požadavky na vybavení počítače a obsah CD 1.1. Technické požadavky a požadavky na operační systém K využívání

Více

POČÍTAČOVÉ SÍTĚ A KOMUNIKACE OBOR: INFORMAČNÍ TECHNOLOGIE

POČÍTAČOVÉ SÍTĚ A KOMUNIKACE OBOR: INFORMAČNÍ TECHNOLOGIE POČÍTAČOVÉ SÍTĚ A KOMUNIKACE OBOR: INFORMAČNÍ TECHNOLOGIE 1. Počítačové sítě, základní rozdělení počítačových sítí a. vznik a vývoj počítačových sítí b. výhody počítačových sítí c. rozdělení sítí z hlediska

Více

.NET Framework verze 3.5... 4 Program pro připojení ke vzdálené ploše (RDC) verze 7.1... 5

.NET Framework verze 3.5... 4 Program pro připojení ke vzdálené ploše (RDC) verze 7.1... 5 Obsah Přístup k serveru ČMIS Kancelář Online... 2 Úvod... 2 Uživatelé s operačním systémem Windows XP musí nainstalovat:... 2 Uživatelé s operačním systémem Windows Vista musí nainstalovat:... 4.NET Framework

Více

Téma 2 - DNS a DHCP-řešení

Téma 2 - DNS a DHCP-řešení Téma 2 - DNS a DHCP-řešení Všechny virtuální servery jsou částečně předkonfigurovány. V provozu je služba Active Directory Domain Controller, díky které jsou vytvořena doména ITAcademy a subdomény SW.ITAcademy

Více

POČÍTAČOVÉ SÍTĚ A KOMUNIKACE

POČÍTAČOVÉ SÍTĚ A KOMUNIKACE POČÍTAČOVÉ SÍTĚ A KOMUNIKACE OBOR: EKONOMIKA A PODNIKÁNÍ ZAMĚŘENÍ: VÝPOČETNÍ TECHNIKA FORMA: DENNÍ STUDIUM 1. Počítačové sítě, základní rozdělení počítačových sítí a. vznik a vývoj počítačových sítí b.

Více

VComNet uživatelská příručka. VComNet. Uživatelská příručka Úvod. Vlastnosti aplikace. Blokové schéma. «library» MetelCom LAN

VComNet uživatelská příručka. VComNet. Uživatelská příručka Úvod. Vlastnosti aplikace. Blokové schéma. «library» MetelCom LAN VComNet Uživatelská příručka Úvod Aplikace VComNet je určena pro realizaci komunikace aplikací běžících na operačním systému Windows se zařízeními, které jsou připojeny pomocí datové sběrnice RS485 (RS422/RS232)

Více

Síťové propojení, konfigurace počítačů a programu Praktik

Síťové propojení, konfigurace počítačů a programu Praktik Síťové propojení, konfigurace počítačů a programu Praktik Propojení počítačů 2 počítače bez internetu Pokud potřebujeme propojit 2 počítače mezi sebou a vytvořit síť (lékař + sestra), lze je propojit kabelem

Více

MS WINDOWS I. řada operačních systémů firmy Microsoft *1985 -? Historie. Práce ve Windows XP. Architektura. Instalace. Spouštění

MS WINDOWS I. řada operačních systémů firmy Microsoft *1985 -? Historie. Práce ve Windows XP. Architektura. Instalace. Spouštění MS WINDOWS I řada operačních systémů firmy Microsoft *1985 -? Historie Práce ve Windows XP Architektura Instalace Spouštění HISTORIE I MS-DOS 1981, první OS firmy Microsoft, pro IBM PC 16b, textový, jednouživatelský,

Více

Internetový přístup do databáze FADN CZ - uživatelská příručka Modul FADN RESEARCH / DATA

Internetový přístup do databáze FADN CZ - uživatelská příručka Modul FADN RESEARCH / DATA Internetový přístup do databáze FADN CZ - uživatelská příručka Modul FADN RESEARCH / DATA Modul FADN RESEARCH je určen pro odborníky z oblasti zemědělské ekonomiky. Modul neomezuje uživatele pouze na předpřipravené

Více

STRUČNÝ NÁVOD K POUŽITÍ

STRUČNÝ NÁVOD K POUŽITÍ STRUČNÝ NÁVOD K POUŽITÍ REPOTEC RP-IP0613 Úvod Bandwidth manager REPOTEC (dále jen BM) je levný a jednoduchý omezovač rychlosti pro jakékoliv sítě založené na protokolu TCP/IP. Velice snadno se ovládá

Více

registrace Fyzické (tj. MAC) adresy

registrace Fyzické (tj. MAC) adresy zjištění MAC (Fyzické) adresy Stiskněte současně + R (nebo myší zvolte Start Spustit...) Do okna Spustit zadejte cmd /K ipconfig /all. V seznamu, který uvidíte, vyhledejte sekci Adaptér sítě Ethernet Připojení

Více

Návod pro práci s aplikací

Návod pro práci s aplikací Návod pro práci s aplikací NASTAVENÍ FAKTURACÍ...1 NASTAVENÍ FAKTURAČNÍCH ÚDA JŮ...1 Texty - doklady...1 Fakturační řady Ostatní volby...1 Logo Razítko dokladu...2 NASTAVENÍ DALŠÍCH ÚDA JŮ (SEZNAMŮ HODNOT)...2

Více

ČSOB Business Connector

ČSOB Business Connector ČSOB Business Connector Instalační příručka Člen skupiny KBC Obsah 1 Úvod... 3 2 Instalace aplikace ČSOB Business Connector... 3 3 Získání komunikačního certifikátu... 3 3.1 Vytvoření žádosti o certifikát

Více

Windows - základy. Hlavním vypínačem na základní jednotce. K datům uloženým do výchozí složky.

Windows - základy. Hlavním vypínačem na základní jednotce. K datům uloženým do výchozí složky. Práce se soubory a složkami Windows - základy Otázka Jakým způsobem se zapíná počítač? Jaká vstupní pole musí být vyplněna v přihlašovacím panelu Windows? K čemu slouží postup "Nabídka Start" - "Vypnout"

Více

Postupy práce se šablonami IS MPP

Postupy práce se šablonami IS MPP Postupy práce se šablonami IS MPP Modul plánování a přezkoumávání, verze 1.20 vypracovala společnost ASD Software, s.r.o. dokument ze dne 27. 3. 2013, verze 1.01 Postupy práce se šablonami IS MPP Modul

Více

Průvodce instalací modulu Offline VetShop verze 3.4

Průvodce instalací modulu Offline VetShop verze 3.4 Průvodce instalací modulu Offline VetShop verze 3.4 Úvod k instalaci Tato instalační příručka je určena uživatelům objednávkového modulu Offline VetShop verze 3.4. Obsah 1. Instalace modulu Offline VetShop...

Více

Kabelová televize Přerov, a.s.

Kabelová televize Přerov, a.s. Kabelová televize Přerov, a.s. Servisní telefon: 724008007 Internet: www.ktvprerov.cz email: internet@ktvprerov.cz Vážení uživatelé služby MediaLINE v této příručce předkládáme návod na konfiguraci počítače

Více

Průvodce aplikací GTS Webový portál pro správce

Průvodce aplikací GTS Webový portál pro správce Průvodce aplikací GTS Webový portál pro správce www.centrex.gts.cz Strana 1 z 14 Obsah 1 Přihlášení do portálu Centrex... 3 2 Hlavní stránka aplikace základní popis... 3 3 Použití interaktivní nápovědy...

Více

Stručný návod pro nastavení routeru COMPEX NP15-C

Stručný návod pro nastavení routeru COMPEX NP15-C Stručný návod pro nastavení routeru COMPEX NP15-C Předpokládáme, že máte router ve výchozím nestavení, pokud si nejste jisti, v jakém stavu router je, proveďte hardwarový reset routeru do továrního nastavení

Více

Internetový přístup do databáze FADN CZ - uživatelská příručka Modul FADN BASIC

Internetový přístup do databáze FADN CZ - uživatelská příručka Modul FADN BASIC Internetový přístup do databáze FADN CZ - uživatelská příručka Modul FADN BASIC Modul FADN BASIC je určen pro odbornou zemědělskou veřejnost bez větších zkušeností s internetovými aplikacemi a bez hlubších

Více

Převodník PRE 10/20/30

Převodník PRE 10/20/30 Převodník PRE 10/20/30 PRE10/20/30 slouží pro připojení zařízení Elektrobock (centrální jednotka PocketHome, termostatu PT41 aj.) do sítě Ethernet. Připojené zařízení je tak možno ovládat z libovolného

Více

MS Windows 7. Milan Myšák. Příručka ke kurzu. Milan Myšák

MS Windows 7. Milan Myšák. Příručka ke kurzu. Milan Myšák MS Windows 7 Milan Myšák Příručka ke kurzu Milan Myšák Vývoj MS Windows Historické verze (do Win Me a Win NT 4.0) Windows XP (2001) Windows 7 (2009) Windows 2000 Windows Vista (2007) Windows 8 (2012) Milan

Více

Aplikace a služba Money Dnes Publisher v deseti krocích

Aplikace a služba Money Dnes Publisher v deseti krocích 2 Money Dnes Publisher Uživatelská příručka Aplikace a služba Money Dnes Publisher v deseti krocích Tento step-by-step manuál vás provede korektním nastavením ovladače Money Dnes Publisher pomocí přiloženého

Více

Stručný Obsah. IntelliMirror, 1. část: Přesměrování složek, Soubory offline, Správce synchronizace a Diskové kvóty 349

Stručný Obsah. IntelliMirror, 1. část: Přesměrování složek, Soubory offline, Správce synchronizace a Diskové kvóty 349 Stručný Obsah Kapitola 1 Základy Zásad skupiny 17 Kapitola 2 Správa Zásad skupiny pomocí GPMC 65 Kapitola 3 Způsob zpracování zásad skupiny 111 Kapitola 4 Řešení problémů se Zásadami skupiny 157 Kapitola

Více

Nastavení tiskárny pro tisk štítků Geis Str. 1/16

Nastavení tiskárny pro tisk štítků Geis Str. 1/16 Str. 1/16 Obsah 1. Instalace tiskárny štítků... 2 Instalace tiskárny s rozhraním USB:... 2 Instalace tiskárny se síťovým rozhraním:... 4 2. Přímý tisk na tiskárnu... 9 3. Dump mode... 10 Pro tiskárnu Zebra

Více

Linux-příkazový řádek

Linux-příkazový řádek Linux-příkazový řádek Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Libor Otáhalík. Dostupné z Metodického portálu www.rvp.cz, ISSN: 1802-4785. Provozuje Národní ústav pro vzdělávání,

Více

BM Software, Databáze Docházky 3000 na NAS serveru (pro MySQL) Němčičky 84, 69107 Němčičky u Břeclavi. Úvodní informace:

BM Software, Databáze Docházky 3000 na NAS serveru (pro MySQL) Němčičky 84, 69107 Němčičky u Břeclavi. Úvodní informace: BM Software, Němčičky 84, 69107 Němčičky u Břeclavi Vývoj, výroba, prodej a montáž docházkových a identifikačních systémů Tel: 519 430 765, Mobil: 608 447 546 e-mail: bmsoft@seznam.cz web: http://www.dochazka.eu

Více

Internet 1. ÚVOD. Příklad stránky WWW v prostředí Internet Exploreru vidíte na obr.:

Internet 1. ÚVOD. Příklad stránky WWW v prostředí Internet Exploreru vidíte na obr.: Internet 1. ÚVOD Windows XP integrují internetový prohlížeč Internet Explorer, využívají jeho některé vlastnosti zejména při zobrazování informací. Pokud jste na síť připojeni, můžete s ním pracovat a

Více

Instalace Microsoft SQL serveru 2012 Express

Instalace Microsoft SQL serveru 2012 Express Instalace Microsoft SQL serveru 2012 Express Podporované OS Windows: Windows 7, Windows 7 Service Pack 1, Windows 8, Windows 8.1, Windows Server 2008 R2, Windows Server 2008 R2 SP1, Windows Server 2012,

Více

Databáze prodejců. Tlačítka. Vytvoří kartu nového prodejce (Alt+N); Změní vybraného prodejce Uloží nového prodejce nebo změnu (Alt+U);

Databáze prodejců. Tlačítka. Vytvoří kartu nového prodejce (Alt+N); Změní vybraného prodejce Uloží nového prodejce nebo změnu (Alt+U); Databáze prodejců Tlačítka Vytvoří kartu nového prodejce (Alt+N); Změní vybraného prodejce (Alt+E); Uloží nového prodejce nebo změnu (Alt+U); Při zakládání nového prodejce zadejte jeho číslo (musí to být

Více

Modul 2. První sada úkolů:

Modul 2. První sada úkolů: Zadání První sada úkolů: Modul 2 Všechny potřebné složky a soubory pro splnění následující sady úkolů se nachází ve složce sada1. 1. Ve složce Ulohy vytvořte čtyři nové složky (podle obrázku) a pojmenujte

Více

Maturitní okruhy pro 1.KŠPA Kladno, s.r.o. Počítačové sítě a komunikace

Maturitní okruhy pro 1.KŠPA Kladno, s.r.o. Počítačové sítě a komunikace Maturitní okruhy pro 1KŠPA Kladno, sro Předmět Typ zkoušky Obor Forma Období Počítačové sítě a komunikace Profilová ústní Informační technologie Denní / Dálková MZ2019 strana 1 / 5 1 Počítačové sítě, základní

Více

PALSTAT s.r.o. systémy řízení jakosti PALSTAT CAQ verze. 3.00.01.09 Kontakty 08/2010. 1 Obsah

PALSTAT s.r.o. systémy řízení jakosti PALSTAT CAQ verze. 3.00.01.09 Kontakty 08/2010. 1 Obsah 1 Obsah 1 Obsah... 1 2 Úvod a spouštění SW Palstat CAQ... 2 2.1.1 Návaznost na další SW moduly Palstat CAQ... 2 2.2 Přihlášení do programu... 2 2.2.1 Stanovení přístupu a práv uživatele... 2 2.2.2 Spuštění

Více

Xerox WorkCentre 5845 / 5855 / 5865 / 5875 / 5890 Ovládací panel

Xerox WorkCentre 5845 / 5855 / 5865 / 5875 / 5890 Ovládací panel 8 / 8 / 86 / 87 / 890 Ovládací panel Služby dostupné na vaší sestavě tiskárny se mohou lišit. Podrobnosti týkající se služeb a nastavení najdete v uživatelské příručce. ABC DEF Nabídky GHI PQRS 7 JKL TUV

Více

Postup instalace účetního softwaru ABRA G2 verze 5.03.11 pro ČSTV na operačním systému Windows XP

Postup instalace účetního softwaru ABRA G2 verze 5.03.11 pro ČSTV na operačním systému Windows XP Postup instalace účetního softwaru ABRA G2 verze 5.03.11 pro ČSTV na operačním systému Windows XP Postup instalace je vyzkoušen na počítači, který má aplikovánu Aktualizaci Service Pack2 a má zapnuty všechny

Více

DŮLEŽITÉ INFORMACE, PROSÍM ČTĚTE!

DŮLEŽITÉ INFORMACE, PROSÍM ČTĚTE! DŮLEŽITÉ INFORMACE, PROSÍM ČTĚTE! Tento dodatek k uživatelské příručce obsahuje postup nastavení USB portu pro ADSL modem CellPipe 22A-BX-CZ Verze 1.0 01/2004 Úvod Vážený zákazníku, tento text popisuje

Více

Formátování pomocí stylů

Formátování pomocí stylů Styly a šablony Styly, šablony a témata Formátování dokumentu pomocí standardních nástrojů (přímé formátování) (Podokno úloh Zobrazit formátování): textu jsou přiřazeny parametry (font, velikost, barva,

Více