Olomouc 2014

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

Download "Olomouc 2014 www.liberix.cz"

Transkript

1 Olomouc 2014

2 Autoři Zdroje, materiály, obrázky, podpora, Sazba německé verze Překlad Odborná korektura Jazyková korektura Grafická úprava Sazba Spolupráce na vydání Licence Michael Niedermair, Joachim Wolf Städtische Berufsschule für Informationstechnik Markus Kohm Elke Niedermair Michael Niedermair Axel Stiegelbauer Dominik Wagenfuehr Joachim Wolf LPI (Linux Professional Institute) Volné zdroje (viz použitá literatura) Michael Niedermair Vlastimil Ott Robert Krátký Dana Baierová Michal Hlavatý Pavel Stříž Liberix, o.p.s., Volně použitelné pro nekomerční využití ve veřejných školách. Jiné licenční podmínky možné po dohodě.

3 Obsah Úvod 7 1 Lekce I První kroky s Linuxem Linux Historie Unixu Historie Linuxu Distribuce Nasazení Důležité open-source aplikace Významné open-source programovací jazyky Terminál a konzole, první kroky v příkazové řádce Jak spustit konzoli, resp. terminál Co je to shell? Nápověda k příkazům Příkazy Jednoduché příkazy Příkazy s argumenty Zobrazit běžící programy/procesy Základy práce se soubory Způsoby tvoření názvů v souborovém systému Zástupné znaky a regulární výrazy v shellu Typy souborů Adresářová struktura linuxových systémů (FHS) Pojmy týkající se souborového systému Práce se soubory Textové editory Nano Vi Vytvoření ikony na ploše Otázky Lekce II Správa uživatelů a oprávnění Správa uživatelů v Linuxu Správce systému, běžný uživatel a systémový uživatel Primární a sekundární skupiny Vytvoření uživatelského účtu Práce pod jiným uživatelem su a sudo Správa skupin Otázky Oprávnění souborů a jejich vlastnictví Kategorie uživatelů a přístupová práva Změna přístupových práv a vlastnictví Otázky a úkoly Lekce III Skripty usnadňují práci Úvod do programování skriptů První skript Spuštění skriptu Proměnné Parametry

4 OBSAH 3.2 Vytváření skupin Načítání souboru po řádcích Cykly Podmínky Vícenásobný výběr Záměna znaků Zjištění dostupných skupin Vytváření uživatelů Vygenerování uživatelských jmen Generování hesel Vytvoření uživatelských účtů žákům Vytvoření uživatelských účtů učitelům Vytvoření superuživatele Otázky Lekce IV Zpracování fotografií z datového nosiče Externí média Hlášení a logy Zobrazení připojených zařízení USB Kopírování fotek Testování, připojování a formátování médií Souborové systémy Připojování a odpojování souborových systémů Kontrola integrity souborových systémů Formátování souborových systémů Využití informací o fotce Filtrování textových souborů Zobrazení obsahu textových souborů Řazení obsahu textových souborů Vybrat řádky z textových souborů Rozčlenění textových souborů do sloupců a polí Počet řádků a slov v textovém souboru Záměna znaků Kopírování souborů s obrázky Získání data a času Formátování data a času Obrázky se stejným datem Automatické otočení obrázků Vytvoření náhledů Hrátky s obrázky Orámování obrázků Ořezávání obrázků Otázky Lekce V Práce v síti Internet a rodina protokolů TCP/IP IPv IPv IP adresy a názvy počítačů pomocí DNS Ruční nastavení sítě Automatické nastavení sítě pomocí DHCP Otázky Lekce VI Archivace dat a jejich komprimace Komprimace dat gzip bzip zip tar Další nástroje pro komprimaci Zip Otázky

5 OBSAH 6.2 Zálohování dat Typy zálohování Generační princip Provedení zálohy Obnovení Otázky Lekce VII Vytvoření webové stránky s obrázky Vytváření fotogalerií HTML Zobrazení náhledů Otázky Zveřejnění fotogalerie na webovém serveru Licence Přehled Kterou licenci pro vlastní obrázky Otázky Firefox jako bezpečný prohlížeč JavaScript Ochrana soukromých informací Potlačení reklamy Zabránit stránkám ve sledování Šifrované připojení Ukládání obsahu Vyhledávání na internetu Lekce VIII OSS Gimp & LibreOffice GIMP LibreOffice Přehled témat: Linux Essentials 155 Téma: 1 Linuxová komunita a kariéra v oblasti open source Téma: 1.1 Vývoj Linuxu a běžných operačních systémů Téma: 1.2 Důležité open-source aplikace Téma: 1.3 Porozumění licencím open-source softwaru Téma: 1.4 Počítačová gramotnost a práce s Linuxem Téma: 2 Jak se vyznat v linuxovém systému Téma: 2.1 První kroky v příkazové řádce Téma: 2.2 Nápověda v příkazové řádce Téma: 2.3 Práce s adresáři a logovacími soubory Téma: 2.4 Vytváření, přesouvání a mazání souborů Téma: 3 Síla příkazové řádky Téma: 3.1 Archivace souborů v příkazové řádce Téma: 3.2 Vyhledávání v souborech a čtení dat Téma: 3.3 Vytváření skriptů Téma: 4 Linuxový operační systém Téma: 4.1 Výběr operačního systému Téma: 4.2 Hardware počítače Téma: 4.3 Ukládání dat Téma: 4.4 Připojení počítače do sítě Téma: 5 Bezpečnost a oprávnění k souborům Téma: 5.1 Základní bezpečnost a typy uživatelů Téma: 5.2 Vytváření uživatelů a skupin Téma: 5.3 Nastavení práv a vlastnictví u souborů Téma: 5.4 Speciální adresáře a soubory Přílohy 165 5

6 OBSAH Rejstříky 167 Programy / Příkazy Adresáře / Soubory Osoby Termíny a výrazy

7 Úvod Toto skriptum slouží zájemcům pro seznámení s linuxovými operačními systémy. Jedná se o adaptaci německé publikace, kterou vydala Městská odborná škola pro informační techniku v Mnichově (Städtische Berufsschule für Informationstechnik). Cílem je připravit čtenáře na zkoušku LPI Linux Essentials tak, aby ji absolvovali s co nejlepším výsledkem. Základní znalosti a dovednosti nutné pro zaměstnání v IT oborech jsou vyučovány v běžných hodinách informatiky. V lepším případě jsou do nich zahrnuty také základy práce s linuxovým operačním systémem. Obsah skripta najdete na straně 155. Linux Essentials se zaměřuje především na žáky a zájemce, jejichž konkurenční výhoda nespočívá v technických dovednostech. Samozřejmě sem patří také ti zájemci, kteří se chtějí naučit pracovat s linuxovým systémem. K dispozici jsou všeobecné informace a cvičení, stejně jako cvičení, která se opírají o konkrétní scénáře. Skriptum je rozděleno do více oblastí bloků a lekcí. Každý blok odpovídá zhruba čtyřem výukovým hodinám, je však také potřeba připočítat přípravu a domácí úkoly. Obojí je nezbytné pro přípravu na interní testy a hlavně závěrečnou certifikační zkoušku. Každá lekce je ukončená otázkami, takže znalosti získané v lekce lze shrnout a procvičit. Úroveň odpovídá úrovni středoškolského učiva informatiky a v některých oblastech přesahuje úroveň požadovanou zkouškou LPI. Navíc je přidáno několik témat, která látku ozvláštňují. Program kurzu Každý kurz je připravený tak, že účastník má během roku absolvovat několik testů, jejichž výsledky jsou pak shrnuty v potvrzení o jejich absolvování. Nakonec je možné složit certifikační zkoušku LPI. Na začátku každé lekce (viz tabulka 1 na následující straně) se uchazeči seznámí s krátkým shrnutím obsahu. Potom mají čas lekci zpracovat, odpovědět na otázky a sami u počítače vyřešit úlohy. Krátce před koncem lekce se píše krátký test (max. na 10 minut), který obsahuje otázky k předchozímu tématu. Otázky jsou postaveny tak jako samotná zkouška LPI. Desátá lekce je speciální rychlokurz k přípravě na zkoušku. Během něj účastník zpracuje odpovědi na vybrané zkušební otázky a bude je prezentovat. Otázky svým zadáním odpovídají certifikační zkoušce LPI, ale nejedná se o skutečné zkušební otázky. Zadání si účastník losuje náhodně. 7

8 OBSAH Lekce Datum Téma / Obsah Test 1 Úvod, podklady 2 Lekce I První kroky s Linuxem 3 Lekce II Práce s uživateli a oprávněními Test k I 4 Lekce III Skripty ulehčují práci Test k II 5 Lekce IV Zpracování obrázků z USB disku Test k III 6 Lekce V Práce v síti Test k IV 7 Lekce VI Archivování a komprimace dat Test k V 8 Lekce VII Vytváření webových stránek pro obrázky Test k VI 9 Lekce VIII OSS Gimp & LibreOffice (volitelné) Test k VII 10 Rychlokurz k přípravě na zkoušku 11 Zkouška LPI Linux Essentials Obrázek 1: Časový harmonogram Vysvětlivky Příkazy Příklady obsahují ve vztahu ke spouštění příkazů následující princip: Je-li příkaz zadán přímo, může ho spustit každý uživatel. Pokud se před příkazem nachází sudo, jsou pro spuštění nutná práva administrátora (uživatele root). Příklady skriptů U některých ukázkových skriptů naleznete vedle samotného kódu také jeho výsledný výpis z konzole. Klávesy Klávesové zkratky jsou zvýrazněné speciálním fontem, např. Enter. Zapsané jsou také klávesové kombinace, např. Ctrl+Alt+Enter. Distribuce Pro tuto příručku byla použita distribuce Ubuntu LTS. 1 Tento systém můžete používat na mnoha místech. Ve škole v učebnách informatiky, v knihovně, na chodbách a na všech dalších počítačích. Může být nainstalován současně s jinými operačními systémy (včetně Windows). Doma pomocí tzv. live CD nebo USB disku, viz a ubuntu.cz/ziskejte/stahnout. Doma na své vlastní instalaci, viz resp. Ve VirtualBoxu na vlastním počítači: pomocí obrazu pro VirtualBox z webu viz vytvořením vlastního obrazu, viz Materiály Pro volitelný předmět se používají následující materiály. Příručka Linux Essential Jde o tento text. Aktuální verze je k dispozici ke stažení, informace v tiráži. Úvodní prezentace Prezentace lekcí Vědomostní test Ukázkové skripty Slouží k uvedení do problematiky kurzu. Před každou lekcí se prezentuje její obsah. Po některých kapitolách následuje vědomostní test, jednak k sebehodnocení, jednak k vytvoření základu pro pozdější hodnocení. Test zahrnuje jen otázky ze zadané oblasti a trvá zhruba 10 minut. Pomocí copy & paste je můžete zkopírovat z textu. 1 Při překladu jsme příklady ověřovali na Ubuntu a v Debian GNU/Linuxu Wheezy, pozn. překl. 8

9 OBSAH Scénář Třídy IT11FS, IT11FA a IT11SE si uspořádaly na konci roku školní výlet do Berlína. Zúčastnilo se ho cca 70 žáků, jako učitelský dozor byli přítomni Viola Lorenzová a Lars Greiner. Žáci měli za úkol v různých skupinách mimo jiné: nakopírovat fotky z každého datového média do třídního adresáře, chronologicky je seřadit a odpovídajícím způsobem pojmenovat, převést do různých formátů, vytvořit jejich náhledy, vytvořit přehledné webové stránky, data zálohovat. 9

10 OBSAH 10

11 Kapitola 1 Lekce I První kroky s Linuxem V této lekci poznáte Linux, jeho historii, různé distribuce a naučíte se základní kroky v terminálu. Pochopíte, jak se pracuje s příkazy, jak lze zobrazit obsah adresářů a jak se pohybovat v jejich struktuře. Následně si adresáře založíte, budete kopírovat, přesunovat a mazat soubory. Potom si na ploše vytvoříte ikonu pro spuštění terminálu (v našem případě v prostředí Unity systému Ubuntu). Důležité: Poznačte si ve všech cvičeních příkazy, abyste si je při opakování dokázali rychle vybavit. Pokud vám bude něco nejasné, připravte si vhodné otázky. Obsah 1.1 Linux Historie Unixu Historie Linuxu Distribuce Nasazení Důležité open-source aplikace Významné open-source programovací jazyky Terminál a konzole, první kroky v příkazové řádce Jak spustit konzoli, resp. terminál Co je to shell? Nápověda k příkazům Příkazy Jednoduché příkazy Příkazy s argumenty Zobrazit běžící programy/procesy Základy práce se soubory Způsoby tvoření názvů v souborovém systému Zástupné znaky a regulární výrazy v shellu Typy souborů Adresářová struktura linuxových systémů (FHS) Pojmy týkající se souborového systému Práce se soubory Textové editory Nano Vi Vytvoření ikony na ploše Otázky

12 LEKCE I PRVNÍ KROKY S LINUXEM 1.1 Linux Linux je moderní víceuživatelský a víceúlohový operační systém. Víceuživatelský znamená, že v jednom okamžiku v něm může pracovat více uživatelů. Víceúlohový (angl. multitask) znamená, v jedné chvíli může v systému běžet více programů (úloh). Obě vlastnosti má Linux díky svému původu souvisejícímu s Unixem Historie Unixu Vývoj Unixu začal koncem 60. let 20. století. Počítače této doby byly velké stroje, které zabíraly celé místnosti nebo dokonce budovy. Ovládaly se prostřednictvím terminálů a ani náznakem nedosahovaly výpočetního výkonu dnešních počítačů. 1 Tyto terminály byly jednoduché přístroje s klávesnicí a obrazovkou, které předávaly počítači vše, co bylo zadáno z klávesnice, a zobrazovaly vše, co z počítače přicházelo. Postupem času se tento koncept vyvinul do komunikace typu klient-server. Tento model funguje tak, že úkoly klientského počítače (obvykle jde o stolní počítač) jsou v rámci lokální sítě směřovány na server. Bývají to typicky souborové a adresářové služby, tiskové služby nebo dotazy do databáze. Nejdůležitější události ve vývoji UNIXu byly: 1969 Ken Thompson vyvinul hru (Space Travel), kterou přenesl na počítač DEC-PDP/7. K tomu musel být vytvořen malý víceúlohový systém. Společně s Dennisem Ritchiem 2 vyvinuli hierarchický souborový systém, správu paměti s velikostí 4 KWord ( bitů), správu procesů a časovač. Díky tomu mohl být systém v jeden okamžik využíván dvěma uživateli. Brian Kernighan to popsal jako UNICS (Uniplexed Information and Computing System). Později z toho vznikl název Unix; není to tedy zkratka, nýbrž jméno Operační systém byl kompletně přepsán v programovacím jazyku C a distribuován společně s kompilátorem Kalifornská univerzita v Berkeley vyvinula Berkeley Software Distribution (BSD), derivát Unixu, který byl zveřejněn pouze za cenu datového nosiče s povolením upravovat zdrojový text Unix (a deriváty Unixu) se stal dominujícím operačním systémem na univerzitách Vzniká projekt GNU (GNU: Gnu is Not Unix GNU není Unix) s cílem vytvořit kompletně svobodnou alternativu k Unixu s licencí GNU General Public License (GPL) Linus Torvalds začíná s vývojem Linuxu, derivátem Unixu Historie Linuxu V roce 1991 začal Linus Torvalds v Helsinkách s vývojem emulátoru terminálu, který se postupně rozvinul do podoby operačního systému (zveřejněn byl v září). Tehdejší správce FTP serveru Ari Lemmke nebyl spokojen s Torvaldsovými názvy Freax nebo Buggix a software zveřejnil v adresáři s názvem Linux. V lednu 1992 získal Linux licenci GNU GPL 3, což znamenalo, že mohl být začleněn do projektu GNU. Linux tím začal být ještě zajímavější pro mnoho vývojářů, protože se z něj stal jeden z prvních volně dostupných operačních systémů (nejprve pro platformu x86 a později také pro další platformy), což bylo podporováno možností jej upravovat. 4 V roce 1996 oznámil Torvalds, že by pro Linux rád měl jako maskota tučňáka a uspořádal proto soutěž. Jako její výsledek byl prezentován Tux Distribuce Linuxová distribuce je souhrn softwarových balíků, které jsou potřebné pro provoz linuxového systému. Existuje velké množství distribucí, přičemž každá z nich má nějaký odlišný záměr. Pro certifikaci LinuxEssentials je lhostejné, kterou distribuci použijete, protože základy jsou u všech systémů stejné. Nejpoužívanější distribuce jsou následující: Debian GNU/Linux Ubuntu Fedora OpenSuSE Linux Mint Mageia Slackware Arch Linux Knoppix a další 1 Dnešní superpočítače také zabírají místnosti nebo budovy, ale z hlediska výpočetního výkonu jsou nesrovnatelně výkonnější než superpočítače před desítkami let. 2 Dennis MacAlistair Ritchie (* 9. září 1941 v Bronxville, New York; 12. října 2011 v Berkeley Heights, New Jersey) byl americký softwarový vývojář. Ve spolupráci s Kenem Thompsonem Ken Thompson a Brianem Kernighanem vyvinul nejen UNICS, nýbrž také programovací jazyk C. 3 GNU General Public License je jedna z licencí Free Software Foundation (FSF), která se používá pro licencování svobodného softwaru copyleftem a má kořeny v projektu GNU. 4 Už v roce 1990 existovala první verze 0.1 systému MiNT, operačního systému pro Atari-ST, jehož zdrojové kódy byly vydány s GPL. 12

13 1.1. LINUX Obrázek 1.1: Maskot Linuxu Tux Pro cvičení používáme distribuci Ubuntu s pracovním prostředím Unity. Obrázek 1.2 zobrazuje schéma s uvedením některých distribucí. GNU/Linux Fedora Open SuSE Slackware Debian Gentoo Mageia Red Hat Knoppix Ubuntu CentOS Edubuntu Kubuntu Xubuntu Linux Mint Obrázek 1.2: Distribuce (výběr) Správa životního cyklu distribuce U linuxových programů a distribucí rozlišujeme různé verze. alfa verze Alfa verze je určena vývojářům k testování. Nezkušení uživatelé by se k ní neměli vůbec přiblížit. beta verze Beta verze ještě obsahuje chyby, ale také nové funkce. Pokud nejde o produkční systém, můžete vyzkoušet, jaké nové funkce jsou k dispozici a tak podpořit vývojáře. testing unstable stable LTS Verze, která se ještě nachází ve fází testování (jako beta verze), ale je těsně před zveřejněním. Nestabilní verze, na níž se vyvíjí. Jednou z ní bude verze alfa nebo testing. Stabilní verze se považuje za bezchybnou. Může být bez problémů nasazena na produkční systém. Normální verze distribucí mají maximální předpokládanou délku životního cyklu jeden až dva roky (Ubuntu 18 měsíců). Potom pro ně už nejsou vydávány aktualizace, opravy nebo poskytována podpora. Jako protiklad existují LTS verze (Long Term Support), v případě Ubuntu jde o pětiletou podporu Nasazení Linux našel uplatnění v mnoha oblastech ať už jde o desktop, serverové systémy nebo oblast embedded zařízení. 13

14 LEKCE I PRVNÍ KROKY S LINUXEM Stolní počítače desktopy Operační systém typu Linux lze na stolní (desktopový) počítač nebo notebook nainstalovat jako jediný nebo vedle již existujících systémů (jako Windows). Používají se pracovní prostředí Unity, Gnome, KDE nebo Xfce, LXDE a další Instalaci systému lze realizovat podle osobních požadavků, vybírat si přitom můžete z tisícovek volně dostupných programů, často existují předpřipravené sady programů pro konkrétní oblast (zpracování textu, výpočty, zpracování videa a fotografií, hry, vědecké aplikace a další ). Tato oblast je pokryta certifikací LinuxEssentials. Obrázek 1.3 zobrazuje Ubuntu s Unity. Obrázek 1.3: Ubuntu a Unity Servery Díky kompatibilitě s jinými unixovými systémy se Linux bleskurychle zabydlel v serverové oblasti, takže aplikace běžící na serveru byly brzy k dispozici, a to bezplatně. Jde především o webový server, databázový server, poštovní server, souborový server nebo groupware. K rozšíření Linuxu do serveroven přispěla také jeho stabilita a snadná obsluha. Díky modulárnosti je možné provozovat jak kompaktní dedikované servery, tak kompletní clusterová 5 nebo cloudová řešení. 6 Také v oblasti virtualizace (např. používání dalšího operačního systému v rámci spuštěné aplikace VirtualBox 7 ) si Linux udělal dobré jméno. Obrázek 1.4 zobrazuje začátek seznamu TOP500 nejrychlejších počítačových systémů, mezi nimi zaujímá Linux více než 82 % (pokud připočteme všechny konkrétní linuxové systémy). Obrázek 1.4: Seznam TOP500 nejrychlejších počítačů 8 5 Počítačový cluster ([klastr]) označuje skupinu propojených počítačů, které navenek vypadají jako počítač jeden. Pokud některý z počítačů přestane fungovat, ostatní si rozdělí jeho práci, aniž by to bylo zvenku patrné. 6 Pojem cloud computing zahrnuje možnost získat a používat výpočetní nebo přenosovou kapacitu, úložný prostor nebo aplikace prostřednictvím datové sítě, a to podle aktuální potřeby. 7 Viz 8 Zdroj: citováno 16. srpna

15 1.1. LINUX Embedded zařízení Jako embedded (vestavěná) linuxová zařízení se označují takové přístroje, které fungují díky operačnímu systému s jádrem Linux. Patří mezi ně přijímače HDTV, přehrávače DVD, routery, firewallové systémy, průmyslové počítače a mnoho dalších. Na obrázku 1.5 vidíte DSL router Linksys s linuxovým operačním systémem (jde o DD-WRT viz dd-wrt.com). Obrázek 1.5: Router Linksys s DD-WRT Linuxem Chytré telefony & tablety Pro chytré telefony a tablety (viz obrázek 1.6 a 1.7) existuje speciální linuxový systém Android, který disponuje mnoha funkcemi nejen pro ovládání telefonu a posílání zpráv, nýbrž také pro zábavu, navigaci nebo správu osobních informací. Zařízení se ovládá pomocí vícedotykového displeje. Obrázek 1.6: Chytrý telefon HTC Obrázek 1.7: Tablet Samsung Galaxy Důležité open-source aplikace Ke klíčovým programům lze zařadit následující: Apache OpenOffice Svobodný kancelářský balík, který je tvořen několika programy. Patří sem např. aplikace pro zpracování textu, tabulkový kalkulátor, nástroj pro prezentace a vektorový editor. Balík OpenOffice.org vznikl na základě softwaru StarOffice v roce 2000 a byl vyvíjen společností Sun. Ta byla koupena společností Oracle a vývoj balíku přešel pod neziskovou společnost Apache Software Foundation. LibreOffice LibreOffice vznikl v září 2010 na základě tehdejšího OpenOffice.org, protože mnoho vývojářů nebylo spokojeno s přístupem společnosti Oracle. Vývoj zajišťuje nezisková společnost The Document Foundation. Jednoduše řečeno je cílem nadace vývoj palety produktivních open-source ná- 15

16 LEKCE I PRVNÍ KROKY S LINUXEM strojů nové generace, a to s podporou trvalé, nezávislé a rozsáhlé komunity a na základě otevřených standardů. 9 Thunderbird Firefox Blender Gimp Audacity ImageMagick Apache MySQL PostgreSQL NFS Samba OpenLDAP Postfix Mozilla Thunderbird je program pro práci s y, RSS kanály a chatem. Mozilla Firefox je svobodný webový prohlížeč. Blender je grafický program pro vytváření 3D modelů, například lidského těla (a to včetně textur a animací). GIMP (GNU Image Manipulation Program) je svobodný grafický bitmapový editor, používá se také na úpravu fotek. Audacity je svobodný editor zvuku a střižna. ImageMagick je sada programů pro zpracování a úpravu bitmapové grafiky (zejména z příkazové řádky a skriptů). Webový server Apache patří mezi nejpoužívanější software na internetu. Relační databázový systém, je k dispozici jako open source i jako komerční nesvobodná verze, a to pro různé operační systémy. PostgreSQL je svobodný objektově-relační databázový systém (ORDBMS). Network File System je síťový protokol vyvinutý společností Sun Microsystems, který slouží pro síťový přístup k datům. Pro Windows existují ovladače, takže i z těchto systémů se lze připojit k linuxovému serveru prostřednictvím NFS. Samba je svobodná implementace protokolu Server Message Block (SMB) pro unixové systémy. Zpřístupňuje data a tiskové služby z windowsových serverů. Protokol SMB se označuje také jako Common Internet File System (CIFS), LAN Manager nebo NetBIOS. Prostřednictvím Samby může systém Windows bez dalších ovladačů přistupovat na linuxové servery a ukládat na ně data. OpenLDAP je implementace protokolu LDAP, která umožňuje centrálně spravovat profily uživatelů. Postfix je poštovní server (přesněji Mail Transfer Agent, MTA) Významné open-source programovací jazyky K důležitým programovacím jazykům v Linuxu (ale lze je samozřejmě používat také ve Windows) patří: C C++ Jazyk C je procedurální 10 programovací jazyk, vyvinul ho Dennis Ritchie na začátku sedmdesátých let 20. století v Bellových laboratořích. Právě v céčku vznikl operační systém Unix. C++ je programovací jazyk vyšší (tj. nikoliv systémové) úrovně je objektově orientovaný, generický a procedurální. Vytvořil jej v roce 1979 Bjarne Stroustrup jako rozšíření jazyka C. Perl Perl je multiplatformní interpretovaný programovací skriptovací jazyk, který vytvořil Larry Wall v roce Předlohou mu byl jazyk C, program awk a unixové příkazy. Původně byl Perl zamýšlen k rychlému a efektivnímu zpracování textových souborů, zejména při správě operačního systému. Python Python je interpretovaný, objektově orientovaný, funkcionální a široce využitelný programovací jazyk. Jeho velkou výhodou je dobrá čitelnost kódu, a proto se hodí pro začátečníky. PHP Java PHP je skriptovací jazyk, v němž se vytvářejí dynamické webové stránky a aplikace. Java je univerzální objektově orientovaný programovací jazyk, který našel uplatnění v mnoha oblastech (na desktopech, serverech i v mobilních zařízeních). 9 Volně podle The Document Foundation: CommunityByLaws. 10 Při procedurálním programování se program vyvíjí tak, že se ve zdrojovém kódu zadávají příkazy, které počítač postupně vykonává. 16

17 1.2. TERMINÁL A KONZOLE, PRVNÍ KROKY V PŘÍKAZOVÉ ŘÁDCE 1.2 Terminál a konzole, první kroky v příkazové řádce Linux uživateli nabízí dvě možnosti ovládání: Grafické prostředí. Funkce prostředí se aktivují převážně myší. Konzoli, resp. terminál. Zde se funkce spouštějí napsáním příkazů pomocí klávesnice. Tomuto tématu se nyní budeme věnovat Jak spustit konzoli, resp. terminál Pokud používáte aktuální verzi distribuce Ubuntu, pak pracujete v prostředí Unity. Vyvinula ho firma Canonical a používá se na klasických stolních a přenosných počítačích. S místem na obrazovce zachází úsporně. Na levém okraji obrazovky vidíte lištu, pomocí níž lze spustit různé programy, které často používáte. Říká se jí Launcher [lónčr]. Tlačítko nahoře (Dash [deš]) reprezentuje hlavní nabídku Unity, v níž najdete všechny programy (viz obrázek 1.9). Můžete se proklikat různými kategoriemi, nebo napsat jméno programu a pak ho spustit. Jakmile program běží, jeho ikonu najdete na postranní liště. Obrázek 1.8: Odebrat tlačítko z postranní lišty Když na ikonu kliknete pravým tlačítkem myši, zobrazí se kontextová nabídka, v níž lze ikonu z lišty odebrat (viz obrázek 1.8). Obrázek 1.9: Hlavní nabídka Unity výběr a spouštění programů Pro práci s konzolí nabízí Linux více možností, například: Konsole X-Terminal, balík: konsole Konsole je terminálový program vytvořený pro prostředí KDE. Umožňuje otevřít v jednom okně více terminálových sezení. V nabídce najdete mnoho různých voleb pro snadnou práci. Terminál GNOME Terminal, balík: gnome-terminal Terminál je program určený do prostředí Gnome. Také dokáže spravovat v jednom okně více sezení a nabízí podobné funkce jako Konsole. 17

18 LEKCE I PRVNÍ KROKY S LINUXEM Xterm X-Terminal, balík: xterm Xterm je velmi jednoduchý terminál, který není určen pro žádné konkrétní prostředí. Funguje ve všech pracovních prostředích grafického režimu X Window. Který terminálový program použijete, je s ohledem na další cvičení lhostejné. Náš favorit je Terminál. Všechny mají jedno společné spouštějí standardní shell. Tím bývá ve většině distribucí bash. Jak nainstalovat chybějící softwarové balíky Pokud není nainstalovaný nějaký balík, můžete to snadno napravit. Spusťte si nějaký terminál (xterm, konsole či jiný) a zadejte do něj následující příkaz, pokud chcete nainstalovat například GNOME Terminal: sudo apt-get install gnome-terminal Může se stát, že vás systém požádá o heslo. Program sudo zajistí, že program následující na řádku za ním bude spuštěn s právy roota (administrátora). Pouze root totiž může instalovat do systému nové programy. Program apt-get nainstaluje (akce install) do systému balík, jehož název je uveden dále. Samozřejmě můžete nové programy (balíky) instalovat v grafickém programu synaptic, nikoliv jen v terminálu. Cvičení: 1. Spusťte ve svém grafickém prostředí terminál podle svého gusta a nainstalujte balík kterm, což je vícejazyčný terminálový emulátor pro grafický režim. 2. Nainstalujte si balík synaptic, pokud nebyl nainstalován automaticky, a spusťte ho pomocí synaptic. S jeho pomocí nainstalujte terminálový správce souborů Midnight Commander (balík mc) Co je to shell? Shell (angl. schránka) je program, který vykonává zadané příkazy a komunikuje s uživatelem. Kdykoliv uvádíme shell, máme na mysli emulátor terminálu. V různých systémech existují různé shelly: DOS/WIN9x command.com Windows cmd.exe Linux/UNIX bash, dash, sh, csh, zsh, ash atd. Shell se zobrazuje v terminálovém programu v podobě příkazové řádky, převádí uživatelem zadané příkazy na odpovídající systémové akce, spouští systémové programy a zobrazuje uživateli informace, které takto spuštěné programy a operační systém vytvářejí. Nápovědu k shellu bash, který používáme, si zobrazíte takto: 18

19 1.2. TERMINÁL A KONZOLE, PRVNÍ KROKY V PŘÍKAZOVÉ ŘÁDCE Obrázek 1.10: Shell jako schránka help Enter help <příkaz> Enter man bash Enter Důležité vlastnosti shellu Bash Doplňování příkazů a parametrů pomocí klávesy Tab. 11 Historie (paměť příkazů). Zadávání jmen souborů pomocí zástupných znaků wildcards (více k tématu na straně 26). Přesměrování vstupu a výstupu programů (více k tématu na straně 66). Propojení vstupu a výstupu více programů (více k tématu na straně 67). Editor příkazové řádky (více k tématu na straně 37). Výkonný skriptovací jazyk (více k tématu na straně 64). Historie shellu Bash Bash ukládá naposledy spuštěné příkazy a jejich parametry do historie (do souboru ~/.bash_history). Pomocí klávesy zobrazíte naposledy zadaný příkaz. Pokud klávesu stisknete víckrát, procházíte seznam příkazů do historie, klávesou zase zpět. Pomocí Ctrl+r můžete seznam dříve vložených příkazů prohledávat. Počet příkazů, které se mají ukládat do historie, se nastavuje pomocí proměnné HISTSIZE. Jakmile je seznam plný, nejstarší záznam se přemaže. Po odhlášení uživatele je seznam uložen do souboru ~/.bash_history. Pokud byste chtěli jméno souboru změnit, pak ho nastavte pomocí proměnné HISTFILE. Nejdůležitější parametry příkazu history jsou tyto: -n Přiřadí nové záznamy ze souboru do historie v paměti. -r Přiřadí všechny záznamy ze souboru do historie v paměti. -a Zapíše aktuální záznamy historie v paměti do souboru. -w Zapíše všechny záznamy historie v paměti do souboru. -c Smaže kompletní seznam v paměti. Je to důležité zejména pro roota a také pro případ, že se v shellu zadávaly příkazy s heslem. Hesla se totiž také ukládají do historie, což může představovat bezpečnostní problém. Mnozí správci tedy ukládají do souboru ~/.bash_logout, který se spouští při odhlášení, následující řádky: # Vyčistit konzoli [ -x /usr/bin/clear_console ] && /usr/bin/clear_console -q # Smazat historii history -c # Nastavit velikost na nulu (a~tedy smazat obsah) > ~/.bash_history 11 Pokud zadáte první písmena příkazu nebo názvu souboru a stisknete Tab, Bash se pokusí zadání doplnit. Pokud stisknete Tab dvakrát, zobrazí se nabídka všech možností. 19

20 LEKCE I PRVNÍ KROKY S LINUXEM Zobrazit obsah proměnné Příkazem echo můžete v konzoli zobrazit libovolný text. Pokud obsahuje názvy nějakých proměnných, pak je Bash nahradí jejich obsahem. echo Proměnná HISTSIZE=$HISTSIZE Proměnná HISTSIZE=1000 Zadáte-li přepínač -n, pak se po vypsání obsahu proměnné nevloží znak pro ukončení řádky. Klávesové zkratky Bash shellu Časté klávesové zkratky pro práci v shellu: Ctrl+a Skočí na začátek textu v příkazové řádce. Ctrl+e Skočí na konec textu v příkazové řádce. Esc+b Esc+f Skočí na předchozí slovo. Skočí na následující slovo. Ctrl+b Skočí na předchozí znak. Ctrl+f Skočí na následující znak. Ctrl+k Smaže všechny znaky od kurzoru do konce řádku. Ctrl+u Smaže všechny znaky od kurzoru do začátku řádku. Ctrl+w Smaže slovo vlevo od kurzoru. Ctrl+t Prohodí znaky před kurzorem a za ním. Esc+t Prohodí slova před kurzorem a za ním. Ctrl+l Vymaže obsah terminálového okna. Ctrl+s Zastaví výpis obsahu v okně. Ctrl+q Opět spustí výpis obsahu v okně. Ctrl+c Přerušení běhu programu. Příkazy alias Používáte-li často určité programy s konkrétními parametry, bude pro vás přínosem vytvořením aliasu. Pomocí následujícího příkazu si vytvoříte nový příkaz (alias), který vás přesune v adresářové struktuře o úroveň výše. alias..='cd..' Alias lze opět zrušit příkazem unalias. Některé aliasy jsou definovány už v základním nastavení systému. alias alias dir='dir --color=auto' alias egrep='egrep --color=auto' alias fgrep='fgrep --color=auto' alias grep='grep --color=auto' alias l='ls -CF' alias la='ls -A' alias ll='ls -alf' alias ls='ls --color=auto' 1.3 Nápověda k příkazům Téměř všechny příkazy obsahují krátkou nápovědu ke svým argumentům a volbám. Zobrazíte ji následovně: příkaz --help nebo příkaz -? Bohaté informace obsahují manuálové stránky. Pomocí příkazu man příkaz (např. man less) zobrazíte manuálovou stránku konkrétního příkazu, zde less. V manuálové stránce se pohybujete pomocí kurzorových šipek a dalších běžných kláves. V textu můžete vyhledávat pomocí klávesy / a zadáním hledaného výrazu. Mezi jednotlivými nalezenými výskyty se pohybujete pomocí n (vpřed) a N (vzad). Manuálové stránky ukončíte klávesou q Máte-li nainstalovaný balík manpages-cs, pak bude určitá část manuálových stránek v češtině. Bohužel byl z mnoha distribucí vyřazen pro svou zastaralost. Pozn. překl. 20

21 1.3. NÁPOVĚDA K PŘÍKAZŮM man less LESS(1) LESS(1) NAME less - opposite of more SYNOPSIS less -? less --help less -V less --version less [-[+]aabccdeeffggiijklmmnnqqrrssuuvwwx~] [-b space] [-h lines] [-j line] [-k keyfile] [-{oo} logfile] [-p pattern] [-P prompt] [-t tag] [-T tagsfile] [-x tab,...] [-y lines] [-[z] lines] [-# shift] [+[+]cmd] [--] [filename]... (See the OPTIONS section for alternate option syntax with long option names.) DESCRIPTION Less is a program similar to more (1), but which allows backward move ment in the file as well as forward movement. Also, less does not have to read the entire input file before starting, so with large input files it starts up faster than text editors like vi (1). Less uses termcap (or terminfo on some systems), so it can run on a variety of terminals. There is even limited support for hardcopy terminals. (On a hardcopy terminal, lines which should be printed at the top of the screen are prefixed with a caret.)... less --help SUMMARY OF LESS COMMANDS Commands marked with * may be preceded by a number, N. Notes in parentheses indicate the behavior if N is given. h H Display this help. q :q Q :Q ZZ Exit MOVING e ^E j ^N CR * Forward one line (or N lines). y ^Y k ^K ^P * Backward one line (or N lines). f ^F ^V SPACE * Forward one window (or N lines). b ^B ESC-v * Backward one window (or N lines). z * Forward one window (and set window to N). w * Backward one window (and set window to N).... Chcete-li jeden výraz hledat ve všech manuálových stránkách, pomůže vám příkaz apropos následovaný hledaným výrazem. Podobnou funkci nabízí také příkaz whatis. Návody (HOWTOs) HOWTOs (angl. Jak na to ) jsou podrobné dokumenty, které nepopisují jen jednotlivé příkazy, nýbrž kompletní řešení problémů. Příkladem je dokument Samba HOWTO, který popisuje nastavení linuxových adresářů pro počítače s Windows. Dokumenty HOWTO se nacházejí v adresáři /usr/share/doc/, např. /usr/share/doc/howto/, a to jako běžné textové soubory nebo jako jednoduché HTML stránky. Jejich aktuální verze se nacházejí na stránkách Linux Documentation Project (http://www.tldp.org). Další zdroje informací 21

22 LEKCE I PRVNÍ KROKY S LINUXEM České a slovenské zdroje informací (přidány překladatelem): Cvičení: 1. Spusťte si terminál a zobrazte si nápovědu k programu ls jednou pomocí man a jednou pomocí --help. 1.4 Příkazy V případě příkazů se rozlišuje, zda jsou spuštěny s parametry, nebo bez nich Jednoduché příkazy Jednoduché příkazy se zadávají přímo v terminálu. Příklady: date Zobrazí aktuální datum a čas. So srp 16 15:14:20 CEST 2014 cal Kalendář aktuálního měsíce. Srpen 2014 Ne Po Út St Čt Pá So who Zobrazí všechny přihlášené uživatele. user pts/ :47 (:0) Sloupce mají následující význam: uživatelské jméno, označení terminálu a čas přihlášení. 22

23 1.4. PŘÍKAZY Příkazy s argumenty Syntaxe: příkaz -přepínač [-další přepínače... ] argument [další argumenty... ] Údaje následující po názvu příkazu jsou chápány jako parametry. Rozlišují se argumenty a přepínače (volby). Argumenty Jména souborů nebo další informace, které budou programem zpracovány. Přepínače Ovlivňují běh programu. Poznáte je podle úvodního znaku - a obvykle se zadávají ještě před argumenty. Mohou mít také parametry. Příklady: cal Kalendář pro prosinec Prosinec 2014 Ne Po Út St Čt Pá So ls -la /etc/sh* Zobrazí všechny soubory (s dalšími informacemi) z adresáře /etc začínající na sh. -rw-r root shadow 1145 Apr 22 04:17 /etc/shadow -rw root root 1145 Apr 22 04:17 /etc/shadow- -rw-r--r-- 1 root root 73 Nov /etc/shells Další možnosti pro spouštění příkazů Jakmile příkaz spustíte, poběží spuštěný program na popředí a po čas jeho běhu nebude možné v terminálu zadávat žádné další příkazy. Spustit program na pozadí Pokud za příkaz přidáte znak &, program se spustí na pozadí, tzn. že budete moci v terminálu hned zadávat další příkazy a spouštět další programy. Příklad: gedit datei.txt & Příkaz gedit (grafický textový editor) se spustí přes shell v samostatném okně, vy můžete ihned zadávat další příkazy. Po spuštění programu se zobrazí číslo úlohy (angl. job); všechny spuštěné úlohy zobrazí příkaz jobs. Příkazem fg můžete proces programu, který běží na pozadí, přesunout do popředí. Běžící program (proces) lze zastavit pomocí Ctrl+z a následně ho pomocí bg odeslat na pozadí. Pokud běží více procesů, je nutné příkazům zadat číslo úlohy. Spustit programy za sebou Programy lze spustit hned za sebou, příkazy se oddělují středníkem. Příklad: cmd1 ; cmd2 ; cmd3 Nejprve se vykoná program cmd1. Pokud se ukončí, spustí se program cmd2 a jakmile skončí i ten, spustí se program cmd Zobrazit běžící programy/procesy Když spustíte program zadáním příkazu, operační systém pro něj v paměti vytvoří proces. Procesy (tedy spuštěné programy) zobrazíte pomocí příkazu ps. ps PID TTY TIME CMD 2961 pts/0 00:00:00 bash 3028 pts/0 00:00:03 xterm 3088 pts/0 00:00:00 xterm 7415 pts/0 00:00:00 ps 23

24 LEKCE I PRVNÍ KROKY S LINUXEM Spustíte-li ps bez parametrů, zobrazí se pouze ty procesy, které jste spustili v aktuálním sezení. V přehledu uvidíte číslo procesu (PID), jméno použité konzole (TTY), dobu od spuštění a spuštěný program (nikoliv název příkazu). Nejdůležitější parametry příkazu ps jsou: 13 -a Vybere všechny procesy v terminálu, včetně procesů jiných uživatelů. -x Vybere procesy bez přiděleného terminálu (tedy např. systémové). -u Zobrazí majitele (uživatele) procesu. -H Zobrazí stromovou strukturu procesů. ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root ? Ss 17:33 0:00 /sbin/init root ? S 17:33 0:00 [kthreadd]... root ? Ss 17:33 0:00 /usr/sbin/sshd -D syslog ? Sl 17:33 0:00 rsyslogd -c5 root ? Ssl 17:33 0:00 NetworkManager... mgn pts/2 R+ 20:43 0:00 ps aux Volitelně můžete použít také příkaz pstree (viz obrázek 1.11 na následující straně). Úkol: Zjistěte s využitím manuálové stránky, jaké informace se zobrazí po zadání ps aux. Ukončení procesu Proces spuštěný z konzole můžete obvykle násilně ukončit stiskem Ctrl+c. To ale neplatí pro proces, který běží na pozadí a není spojený se žádnou konzolí, nebo jde o systémový proces. Příkazem kill můžete procesy ukončovat. Běžný uživatel smí ukončovat pouze své procesy, oproti tomu root může ukončovat všechny procesy. kill [signál] <PID> [další PID...] Pomocí signálu 14 sdělíte systému, jak má proces ukončit. Nezadáte-li žádný parametr, použije se signál -15, SIGTERM. Ten přátelsky sdělí procesu, že nastal čas skončit (proces před svým ukončením obvykle uloží všechna data). Signál může být ale procesem ignorován. Brutální varianta je -9, SIGKILL, kdy je proces okamžitě ukončen, zabit. Data, která proces neuloží, se přitom ztratí. Místo kill můžete použít také killall, angl. zabít všechny. V takovém případě se nepoužívá PID, nýbrž příkaz, kterým byl proces spuštěn. Pokud máte více procesů stejného příkazu, pak budou ukončeny všechny. Příklad: ps PID TTY TIME CMD 3303 pts/3 00:00:00 bash 5177 pts/3 00:00:00 xterm 5236 pts/3 00:00:00 ps kill Aktualizovaný výpis běžících procesů Pomocí ps se zobrazí procesy jen v okamžiku spuštění tohoto příkazu. Chcete-li vidět aktuální stav procesů, pomůže vám příkaz top. Standardně zobrazuje na prvních pozicích procesy, které mají největší požadavky na výkon procesoru. Kromě toho ale uvidíte také další informace, např. využití paměti Příkaz ps patří k několika málo programům, které přijímají parametry v několika stylech zápisu: s přepínačem - jako v Unixu, bez přepínače - jako v BSD a s -- podle GNU. 14 Příkazem kill -l si zobrazíte všechny signály, které operační systém podporuje. 15 Barevnou a lepší alternativu představuje program htop. Pozn. překl. 24

25 1.4. PŘÍKAZY init-+-networkmanager-+-dhclient -dnsmasq `-2*[{NetworkManager}] -accounts-daemon---{accounts-daemon} -lightdm-+-xorg -lightdm-+-gnome-session-+-bluetooth-apple---2*[{bluetooth-apple}] -compiz-+-gtk-window-deco---2*[{gtk-window-deco}] `-3*[{compiz}] -deja-dup-monito---2*[{deja-dup-monito}] -gdu-notificatio-+-{gdu-notificatio} `-{gdu-notificatio}\247\310g\313\177 -nautilus---2*[{nautilus}] -ssh-agent -telepathy-indic---2*[{telepathy-indic}] -update-notifier---3*[{update-notifier}] -xosview -zeitgeist-datah---{zeitgeist-datah} `-3*[{gnome-session}] `-{lightdm} `-2*[{lightdm}] -zeitgeist-daemo---{zeitgeist-daemo} `-zeitgeist-fts-+-cat `-{zeitgeist-fts} Obrázek 1.11: Zobrazení procesů pomocí stromu příkazem pstree (Ukázka) top - 21:02:41 up 3:29, 4 users, load average: 1.16, 1.08, 0.96 Tasks: 199 total, 2 running, 196 sleeping, 0 stopped, 1 zombie Cpu(s): 0.8%us, 1.9%sy, 0.0%ni, 97.3%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: k total, k used, k free, k buffers Swap: k total, 0k used, k free, k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2388 mgn m 294m 44m S :52.08 compiz 1234 root m 81m 38m S :35.03 Xorg 2415 mgn S :24.93 xosview 2358 mgn S :24.29 dbus-daemon 8042 mgn R :00.01 top 1 root S :00.85 init 2 root S :00.00 kthreadd 3 root S :00.81 ksoftirqd/0 6 root RT S :00.00 migration/0 7 root RT S :00.03 watchdog/0 8 root RT S :00.00 migration/1 10 root S :00.70 ksoftirqd/1 12 root RT S :00.03 watchdog/1 13 root RT S :00.00 migration/2 15 root S :00.61 ksoftirqd/2 16 root RT S :00.05 watchdog/2 Zobrazit využití paměti Pro zobrazení celkového využití paměti použijte program free. free total used free shared buffers cached Mem: /+ buffers/cache: Swap: Bez parametru zobrazí free informace v bajtech, s parametrem -k v kilobajtech, s -m v megabajtech a s parametrem -g v gigabajtech. 25

26 LEKCE I PRVNÍ KROKY S LINUXEM free -m total used free shared buffers cached Mem: /+ buffers/cache: Swap: Základy práce se soubory Práce se soubory a adresáři v konzoli vyžaduje dobrou znalost toho, jak jsou tvořeny cesty k souborům a jak se s nimi pracuje Způsoby tvoření názvů v souborovém systému Různé souborové systémy odlišně interpretují použití velkých a malých písmen v názvech. Existují souborové systémy, které jsou case-sensitive (přísně odlišují velikost písmen), case-preserving (při vytvoření se použije zadaná velikost, při přístupu k existujícím souborům nehraje velikost roli, ale zobrazuje se tak, jak byla zadána) a caseinsensitive (při zápisu se převádí na jeden způsob, při čtení se nerozlišuje). Názvy souborů mohou obsahovat 255 i více znaků, vždy podle použitého souborového systému. Zvláštní znaky jsou v názvech povolené (Pozor na ně!). Názvy souborů obsahující mezery musí být uzavřené do uvozovek (quoting). Názvy souborů začínající tečkou jsou chápané jako skryté soubory. Znak lomítko / je oddělovač mezi adresáři Zástupné znaky a regulární výrazy v shellu Použití zástupných znaků (angl. wildcards) při zadávání názvů souborů jako parametrů pro příkaz v shellu způsobí, že se místo znaků dosadí skutečné a kompletní názvy nalezených souborů a předají spouštěnému příkazu. Různé kombinace zástupných znaků se označují jako regulární výrazy. 16 Upozornění: Vyhodnocení regulárních výrazů probíhá v shellu, nikoliv ve spouštěném příkazu! Regulární výrazy programů grep, sed, python a dalších se v syntaxi silně odlišují od těch v shellu. 17 Význam znaků:? Zastupuje libovolný znak. * Zastupuje žádný nebo libovolný počet znaků. Hvězdička pokrývá všechny znaky, také tečky, kromě těch na začátku názvu souborů. Regulární výraz *graf* se tedy vztahuje na: grafic.doc, maly-graf, steffigrafapanagassi, readme.graf, graf. [123] Jeden ze zadaných znaků. [a-f] Jeden znak ze zadaného intervalu. [!abc] Žádný ze zadaných znaků. [^abc] Žádný ze zadaných znaků. ~ Zkratka pro domovský adresář přihlášeného uživatele. Příklady s příkazem ls Příkaz ls zobrazuje soubory a adresáře. ls [a-f]* Všechny soubory začínající na písmeno mezi a až f. 16 Anglicky se jim říká také glob a jejich používání se označuje jako globbing. 17 Pojem regular expressions, regulární výrazy, se často chápe jako synonymum pro PCRE (Perl Compatible Regular Expressions) nebo extended (rozšířené) regular expressions nebo alespoň basic (základní) regular expressions. U jednoduchého globbingu v shellu chybí možnost výběru výrazů, ale také syntaxe pro opakování znaků (kvantifikátory). Regulární výrazy podle standardu POSIX jsou tedy každopádně něco jiného, než co nabízí shell. 26

27 1.5. ZÁKLADY PRÁCE SE SOUBORY ls *[_.-] Všechny soubory, jejichž název obsahuje jedenkrát _,. nebo -. ls *.[!hc] Všechny soubory, které nekončí na.h nebo.c. Poznámka: Hvězdička se vztahuje nejen na soubory, ale také na adresáře, ls vypnout přepínačem -d. * vyhledá také soubory v podadresářích. Lze to Výběr nejdůležitějších linuxových příkazů určených k práci se soubory ls cd Zobrazit soubory a adresáře. Změnit adresář. mkdir Vytvořit adresář. Pro vytvoření podadresářů je potřeba zadat parametr -p. rmdir Odstranit prázdný adresář. Odstranění adresáře s obsahem: rm -r adresář pwd cp rm mv file cat less test find grep sort echo Zobrazit aktuální adresář. Kopírovat soubory/podadresáře. Odstranit soubory/podadresáře. Přejmenovat/přesunout soubory/adresáře. Analyzovat obsah souboru. Zobrazit obsah (textového) souboru. Interaktivně prohlédnout textový soubor. Univerzální příkaz např. ke zjištění, zda soubor existuje. Hledat konkrétní soubory. Hledat v souborech textové řetězce. Seřadit obsah textového souboru po řádcích a zobrazit ho. Zobrazit text v konzoli. touch Nastavit datum posledního přístupu k souboru na aktuální datum. Pokud soubor neexistuje, je vytvořen s nulovou velikostí. Quoting Pokud nechcete, aby shell vyhodnotil zástupné znaky, musíte jim jejich zvláštní význam odebrat pomocí quotingu. Existuje více možností: umístit před každý zástupný znak zpětné lomítko \, nebo zapsat regulární výraz do apostrofů ('). ls *.??? Bez quotingu. test.??? test.aaa test.bbb test.ccc ls *.'???' S quotingem. test.??? Skryté soubory Skryté soubory (např..profile) začínají tečkou a jsou v shellu zobrazeny jen tehdy, když je příkaz ls spuštěn s přepínačem -a nebo když je tečka v parametru explicitně zadaná, např..*. 27

28 LEKCE I PRVNÍ KROKY S LINUXEM ls * Bez skrytých souborů/adresářů. test.aaa test.bbb test.ccc ls -d.* Zobrazit skryté soubory/adresáře test.xxx Adresář. představuje odkaz na aktuální adresář. Souborový systém využívá tečkový záznam pro přístup k názvům všech souborů v daném adresáři. Adresář.. je zase odkaz na nadřízený (rodičovský) adresář. Příklad: Na soubor v aktuálním adresáři se lze odkazovat jako na./soubor. Na soubor v nadřízeném adresáři se můžete odkazovat takto:../soubor. ls -a Zobrazit všechny soubory/adresáře....test.xxx test.aaa test.bbb test.ccc Rekurzivní zobrazení Pomocí parametru -R zobrazíte obsah všech podadresářů, které budou prohledány rekurzivně. Pozor: Parametr -r mění směr řazení při výpisu. Alternativu k cílenému prohledání všech podadresářů nabízí příkaz find (viz kapitola na straně 86). ls -R /tmp Cvičení: 1. V adresáři /home/auricka/fotky se nacházejí následující snímky: 1 RIMG0001.JPG 2 RIMG0001.raw 3 RIMG0002.JPG 4 RIMG0002.raw 5 RIMG0003.JPG 6 RIMG0003.raw 7 RIMG0004.JPG 8 RIMG0004.raw 9 IMAG0022.jpg 10 IMAG0022.raw 11 IMAG0023.jpg 12 IMAG0023.raw 13 IMAG0024.jpg 14 IMAG0024.raw Vytvořte pomocí mkdir test nový adresář, přesuňte se do něj pomocí cd test a vytvořte soubory 1 14 pokaždé příkazem touch název souboru. Zadejte čísla souborů, které budou zobrazeny, když spustíte níže uvedené příkazy. (a) ls * (b) ls RIM* (c) ls *JPG (d) ls IM*jpg (e) ls *A* (f) ls IMAG002?.raw (g) ls???????????? (h) ls IMAG002?.raw (i) ls RIMG000[1-3]* (j) ls IMAG00[1-4].jpg (k) ls [^R]*raw (l) ls *.[jj][pp][gg] 2. V adresáři /tmp se momentálně nacházejí následující soubory: 1 Abc-soubor-Nr.1 5 Concurrent-file-No.1 2 ABC-soubor-Nr.1 6 Soubor-File19 3 acrobat.ps.pdf 7 Soubor-File29 4 Command.com 8 Soubor File29 18 Pomocí -d určíte, že příkaz ls nezobrazí obsah adresářů (zde. a..). 9 File 10 file02 11 file11 12 file13 28

29 1.5. ZÁKLADY PRÁCE SE SOUBORY 13 file19 14 File19 15 Filiale28 16 Hifileasure 17 Index.HTM 18 INDEX.html 19 INDEX.HTM 20 index.html 21 liste 22 schock.soubor senseless-file88 24 INDEXOMAT Doplňte argumenty k ls, aby spuštění zobrazilo níže uvedené soubory. Příklad: ls?ile?? zobrazí soubory 10, 11, 12, 13, 14. (a) ls (10, 11, 12, 13) (b) ls (3, 22) (c) ls (6, 7, 8) (d) ls (9, 14, 15) (e) ls (18, 19, 24) (f) ls (6, 7) (g) ls (7, 8) (h) ls (6, 7, 23) (i) ls (17, 19) (j) ls (1, 2, 22) Typy souborů Pomocí ls -la se vypíšou doplňující informace. běžný soubor (ordinary file) soubory zařízení (special file) Texty, programy, binární kód, systémové knihovny, Logický popis hardwaru (např. tiskárny, monitoru ). Prostřednictvím souborů se přistupuje k ovladačům jednotlivých zařízení. Přístup pro čtení a zápis jako k běžným souborům. Rozlišují se soubory pro znaková zařízení (např. terminál) a soubory pro bloková zařízení (např. disky). Příklady důležitých souborů zařízení: /dev/fd0 /dev/sda /dev/hda první disketová mechanika, obvykle odkaz na soubor zařízení /dev/fd0h1440 první pevný disk SATA nebo SCSI první pevný disk IDE nebo CD-ROM (master na prvním IDE řadiči) /dev/sda1 první primární oddíl prvního pevného disku SATA nebo SCSI /dev/sda5 první logický oddíl rozšířeného oddílu na prvním disku SATA nebo SCSI /dev/sr0 první SATA mechanika CD/DVD-ROM (zkratka znamená scsi readable ) /dev/sde2 druhý primární oddíl pátého disku SATA SCSI /dev/sdb druhý disk SATA nebo SCSI, případně také USB disk /dev/tty1 první virtuální terminál adresář (directory) Obsahuje soubory a podadresáře (subdirectories). Znak d l b c p s Souborový typ Adresář (directory) Symbolické odkazy (links) Blokové zařízení (block device) Znakové zařízení (character device) Pojmenovaná roura (pipe) Sokety (sockets) Obrázek 1.12: Výpis pomocí ls -la a zkratky pro typy souborů 29

30 LEKCE I PRVNÍ KROKY S LINUXEM symbolický odkaz (soft link) Odkaz na jiný soubor. (více k tématu na straně 35) pojmenovaná roura (named pipe) Datová struktura ke komunikaci mezi procesy. Cvičení: Spusťte si terminál a zjistěte u následujících souborů/adresářů jejich typ: 1. /etc/acpi 2. /etc/aliases 3. /etc/x11/x 4. /dev/zero 5. /dev/sda 6. /dev/log Adresářová struktura linuxových systémů (FHS) Linux a UNIX disponují podobnou adresářovou strukturou, v níž neexistují písmena označující mechaniky či disky. Adresáře jsou organizované do hierarchické struktury adresářového stromu. Začátek tohoto obráceného stromu se označuje jako kořen (angl. root), resp. kořenový adresář (angl. root directory) nebo /. 19 V každé úrovni stromu se mohou nacházet soubory a adresáře, ty vytvářejí vždy další úroveň stromu. Název a pozice každého souboru se zadává odpovídající cestou, která začíná kořenovým adresářem a postupně obsahuje všechny další adresáře vedoucí k souboru. Jednotná struktura adresářového stromu je popsaná ve Filesystems Hierarchy Standard (FHS). Jednotlivé linuxové distribuce se od FHS v detailech odchylují, ale míra přijetí tohoto standardu viditelně narůstá. FHS popisuje mmj. následující adresáře a jejich význam. /bin /sbin /boot /dev /etc Obslužné programy a příkazy, kterou mohou spouštět všichni uživatelé. Programy a příkazy k obsluze a správě systému. Smí je spouštět pouze root. Jádro a soubory, které vyžaduje linuxový zavaděč systému. Soubory zařízení. Konfigurační soubory pro systémové služby a nastavení pro celý systém. /etc/init.d Skripty a programy pro start systému. 20 /home /lib /lib /media /mnt /opt /proc /root Domovské adresáře uživatelů. Systémové knihovny a jaderné moduly. Alternativní dynamické knihovny, např. /lib32 a /lib64 pro 32bitové a 64bitové aplikace. Přípojné body pro výměnná média. Dočasný přípojný bod pro souborové systémy. Doplňkové aplikace. Souborový systém procesů, rozhraní pro komunikaci s jádrem, např. pro správu procesů. Domovský adresář systémového správce root. 19 Systémový správce root má své jméno díky tomu, že má přístup pro zápis do celého stromu. Jeho domovský adresář je /root. Pozn. překl. 20 Mnohé distribuce, včetně Debianu a Ubuntu, přecházejí na jiné startovací systémy, takže v tomto ohledu panuje nejednoznačnost. Pozn. překl. 30

31 1.5. ZÁKLADY PRÁCE SE SOUBORY /srv /tmp /usr /usr/src Data systémových služeb. Dočasné soubory. Aplikace, programy, X window system, (statická data). Zdrojové kódy linuxového jádra (pokud jsou nainstalované). /usr/share/doc Soubory s nápovědou a dokumentace různých programů. /var Proměnlivá data. / bin boot extlinux grub dev etc lib media mnt opt proc driver scsi tty root run sbin srv tmp usr var Obrázek 1.13: Příklad adresářové struktury v Linuxu (nekompletní) Pojmy týkající se souborového systému kořenový adresář (root directory) Kořen souborového systému nemá nadřazený adresář a označuje se lomítkem /. pracovní adresář (working directory) Místo, kde v adresářovém stromě se momentálně nacházíte (také aktuální adresář). Můžete ho zobrazit pomocí příkazu pwd (angl. print working directory). pwd /home/uzivatel/dokumenty/překlady domovský adresář (home directory) Vlastní adresář, místo v souborovém systému, které je přidělené uživateli. Cesta k adresáři je uložená v systémové proměnné HOME, resp. ji lze nahradit zkratkou ~. echo $HOME /home/uzivatel echo ~ /home/uzivatel Domovský adresář představuje soukromou oblast uživatele, vždy se do něj přemístíte příkazem cd. adresář přihlášení (login directory) Adresář, ve kterém se uživatel ocitne po přihlášení; za běžných okolností jde o domovský adresář. rodičovský adresář (parent directory) Nadřízený adresář, do něhož se z aktuálního adresáře přemístíte pomocí cd.. absolutní cesta relativní cesta Kompletní cesta vycházející z kořenu popisující všechny úrovně adresářového stromu až k cílovému souboru (např.: /home/herbert/dopisy/maria.txt). Údaje obsažené v cestě začínají na úrovni aktuálního adresáře. Příklad (pro /home/herbert): dopisy/maria.txt. 31

32 LEKCE I PRVNÍ KROKY S LINUXEM Cvičení: Jako zadání pro další úkoly použijeme ukázku z adresářové struktury linuxového systému: /(0) bin(1) chmod(2) ls(3) mkdir(4) ping(5) video(6) clips(7) MTS(8) etc(9) fstab(10) HOSTNAME(11) hosts(12) passwd(13) services(14) X11(15) XF86Config(16) lighttp(17) lighttp.conf(18) home(19) auricka(20) test-skript(21) dokumente(22) klassenfahrt.txt(23) beslmjo(24) dokumente(25) bilder(26) lib(27) libreadline.so.2(28) libc-2.8.so(29) root(30) resize.sh(31) Texte(32) tmp(33) xwlog(34) mcop-root(35) secret-cookie(36) usr(37) bin(38) nano(39) vi(40) var(41) log(42) messages(43) schule(44) bilder(45) raw(46) canon(47) DCIM(48) 104_12(49) RIMG0162.JPG(50) RIMG0165.JPG(51) sony(52) DCIM(53) 100MEDIA(54) IMAG0004.jpg(55) IMAG0005.jpg(56) IMAG0006.jpg(57) smartphone(58) klaus-pranckl(59) stefan-mittelholz(60) www(61) index.html(62) Podívejte se na této straně na ukázku adresářové struktury jednoho linuxového počítače. Vyřešte následující úlohy: Příklad: Absolutní cesta souboru 43 je /var/log/messages. 1. Uveďte absolutní cestu souborů 5, 8 a Chcete se přesunout do adresáře /home/auricka. (a) Uveďte příkaz, kterým se do něj přesunete (absolutní cesta). (b) Kterým příkazem zobrazíte svůj aktuální adresář? 3. Nyní je váš aktuální adresář /home/auricka. (a) Uveďte relativní cestu souboru 23. (b) Přesuňte se do adresáře 33 pomocí absolutní cesty, relativní cesty. 4. Nyní je váš aktuální pracovní adresář /tmp Spusťte odtud program 40: absolutní cestou, relativní cestou. 32

33 1.5. ZÁKLADY PRÁCE SE SOUBORY 5. Váš aktuální adresář je /var/skola/fotky Uveďte relativní cesty následujících adresářů: 49, 53 a Práce se soubory Se soubory lze provádět různé operace. Následuje přehled důležitých příkazů. Kopírování souborů Soubory se kopírují pomocí příkazu cp. cp [volby] zdroj cíl Pokud je cílem adresář, pak je soubor do tohoto adresáře zkopírován. Název souboru zůstává zachován. Nejdůležitější parametry cp jsou následující. -b Pokud už cílový soubor existuje, pak je zdrojový soubor přejmenován na Cíl~ (na konec názvu je připojena vlnovka) a teprve potom zkopírován (backup). -f Pokud nelze existující cílový soubor otevřít, pak je bez dotazu smazán a kopírování se opakuje (force). -i Program se dotáže, zda má existující soubory přepsat (interactive). -p Ponechá v maximální míře vlastnosti zdrojového souboru. -R Kopíruje adresáře se všemi podadresáři a všemi obsaženými soubory (recursive), lze použít také -r. -u Zdrojový soubor se zkopíruje pouze tehdy, je-li cílový soubor starší nebo dosud neexistuje (update). -v Vypisuje všechny aktivity na obrazovku (verbose). -s Soubor se nebude kopírovat, místo toho se vytvoří symbolický odkaz (symbolic). -l Stejné jako -s, vytvoří se ale pevný odkaz (hard link). -d Odkazy jsou zachovány a jako takové budou zkopírovány (preserve). Příklady Kopírování souboru: touch mujsoubor1 cp mujsoubor1 mujsoubor2 ls -l muj* # Soubory zase smazat rm -f mujsoubor? -rw-r--r-- 1 uzivatel uzivatel 0 Aug 14 11:59 mujsoubor1 -rw-r--r-- 1 uzivatel uzivatel 0 Aug 14 11:59 mujsoubor2 Kopírování souboru s vytvořením zálohy: touch mujsoubor1 cp -b mujsoubor1 mujsoubor2 ls -l muj* echo '* s vytvořením zálohy *' cp -b mujsoubor1 mujsoubor2 ls -l muj* # Soubory zase smazat rm -f mujsoubor* -rw-r--r-- 1 uzivatel uzivatel 0 Aug 14 11:54 mujsoubor1 -rw-r--r-- 1 uzivatel uzivatel 0 Aug 14 11:54 mujsoubor2 * s vytvořením zálohy * -rw-r--r-- 1 uzivatel uzivatel 0 Aug 14 11:54 mujsoubor1 -rw-r--r-- 1 uzivatel uzivatel 0 Aug 14 11:54 mujsoubor2 -rw-r--r-- 1 uzivatel uzivatel 0 Aug 14 11:54 mujsoubor2~ Kopírování souboru, který je novější než cílový soubor: Aby měl soubor skutečně jiné datum, pomocí sleep 2 se vloží dvousekundová pauza. Čas se běžně zobrazuje v minutách, pomocí parametru --full-time jej zobrazíme v komplexní formě. Soubor mujsoubor1 je starší než mujsoubor2, proto zůstává spuštění cp bez efektu. 33

34 LEKCE I PRVNÍ KROKY S LINUXEM echo "X" > mujsoubor1 sleep 2 echo "XXX" > mujsoubor2 cp -u mujsoubor1 mujsoubor2 ls -l --full-time muj* # Soubory zase smazat rm -f mujsoubor* -rw-r--r-- 1 uzivatel uzivatel :54: mujsoubor1 -rw-r--r-- 1 uzivatel uzivatel :54: mujsoubor2 Přesun a přejmenování souboru Příkazem mv se soubory a adresáře přesouvají, resp. přejmenovávají. mv [volby] zdroj cíl Příkaz mv má následující důležité parametry. -b Pokud už cílový soubor existuje, je zdrojový soubor přejmenován na Cíl~ (na konec názvu je připojena vlnovka) a teprve potom přesunut (backup). -f Pokud nelze existující cílový soubor otevřít, pak je bez dotazu smazán a přesun se opakuje (force). -i Program se dotáže, zda má existující soubory přepsat (interactive). -v Vypisuje všechny aktivity na obrazovku (verbose). Příklad touch mujsoubor1 ls -l muj* echo '* přesun *' mv mujsoubor1 mujsoubor2 ls -l muj* # Soubory zase smazat rm -f mujsoubor* -rw-r--r-- 1 uzivatel uzivatel 0 Aug 14 11:54 mujsoubor1 * přesun * -rw-r--r-- 1 uzivatel uzivatel 0 Aug 14 11:54 mujsoubor2 Mazání souborů Příkazem rm se soubory/adresáře odstraňují. rm [volby] soubor Příkaz rm má následující důležité parametry. -f Smazat bez dotazu všechny soubory včetně těch chráněných proti zápisu. -i Dotázat se na každé smazání. -R Smazat adresáře a jejich obsah rekurzivně (lze použít také -r). -v Vypisuje všechny aktivity na obrazovku (verbose). Příklad mkdir mujdir touch mujdir/mujsoubor1 touch mujdir/mujsoubor2 touch mujdir/mujsoubor3 ls -l mujdir # Soubory zase smazat rm -rf mujdir total 0 -rw-r--r-- 1 uzivatel uzivatel 0 Aug 14 11:54 mujsoubor1 -rw-r--r-- 1 uzivatel uzivatel 0 Aug 14 11:54 mujsoubor2 -rw-r--r-- 1 uzivatel uzivatel 0 Aug 14 11:54 mujsoubor3 34

35 1.5. ZÁKLADY PRÁCE SE SOUBORY Odkazování na soubory V linuxových souborových systémech lze vytvářet odkazy na soubory a k takovým souborům pak přistupovat pod jiným jménem nebo z jiného adresáře. Anglicky se odkazu říká link. ln [volby] zdroj cíl Standardně se odkaz vytváří prostřednictvím tzv. inode odkazů (pevných odkazů, hard linků). Inode (indirection node) je v souborovém systému blok informací, který obsahuje skoro všechny údaje o souboru vyjma jeho názvu. Každému souboru je přidělen právě jeden inode. Pevný odkaz lze vytvořit jen v rámci jednoho souborového systému, protože odkaz se realizuje prostřednictvím čísla inodu, např. 4711, a toto číslo existuje také v jiném souborovém systému (k vyřešení lze použít symbolický odkaz). Symbolický odkaz je zkratka, která se realizuje prostřednictvím souborové cesty. Symbolické odkazy proto mohou odkazovat přes hranice diskových oddílů. Inode obsahuje mimo jiné: přístupová práva k souboru (práva vlastníka, skupin a zvláštní práva), vlastníka souboru a hlavní skupinu (UID, GID), typ souboru (běžný soubor, adresář, odkaz ), velikost souboru (v bajtech), počítadlo referencí (počet pevných odkazů na soubor), datum, poslední změny inodu (angl. change time, ctime), posledního přístupu k souboru (poslední otevření/spuštění, angl. access time, atime), poslední změnu souboru (angl. modification time, mtime), jeden nebo více odkazů na bloky, v nichž se nachází obsah souboru. Nejdůležitější parametry příkazu ln jsou tyto: -b Pokud už cílový soubor existuje, je zdrojový soubor přejmenován na Cíl~ (na konec názvu je připojena vlnovka) a teprve potom je vytvořen odkaz. -f Smaže před vytvořením odkazu případně existující cílový soubor. -i Dotáže se, zda má být existující soubor přepsán. -s Vytvoří symbolický odkaz místo pevného odkazu. -v Vypisuje všechny aktivity na obrazovku (verbose). Příklady V následujícím příkladu se vytvoří soubor. Počítadlo referencí souboru ve třetím sloupci má hodnotu 1 (viz obrázek?? na straně??). V prvním sloupci se zobrazuje číslo inodu. Jakmile se vytvoří odkaz, v adresáři vznikne nový soubor, který bude odkazovat na stejné číslo inodu a počítadlo referencí se u souboru zvýší o jednu. touch mujsoubor1 ls -li mujsoubor1 echo '* Odkaz *' ln mujsoubor1 mujsoubor2 ls -li muj* # Soubory zase smazat rm -f mujsoubor? rw-r--r-- 1 uzivatel uzivatel 0 Aug 14 11:54 mujsoubor1 * Odkaz * rw-r--r-- 2 uzivatel uzivatel 0 Aug 14 11:54 mujsoubor rw-r--r-- 2 uzivatel uzivatel 0 Aug 14 11:54 mujsoubor2 V tomto příkladu se vytvoří symbolický odkaz. Vznikne přitom nový soubor, který odkazuje na původní soubor. touch mujsoubor1 ls -l mujsoubor1 echo '* Symbolický odkaz *' ln -s mujsoubor1 mujsoubor2 ls -l muj* # Soubory zase smazat rm -f mujsoubor? -rw-r--r-- 1 uzivatel uzivatel 0 Aug 14 11:54 mujsoubor1 * Symbolický odkaz * -rw-r--r-- 1 uzivatel uzivatel 0 Aug 14 11:54 mujsoubor1 lrwxrwxrwx 1 uzivatel uzivatel 10 Aug 14 11:54 mujsoubor2 -> mujsoubor1 35

36 LEKCE I PRVNÍ KROKY S LINUXEM Cvičení: 1. Florian Brunner chce snímky z obou svých chytrých telefonů dát k dispozici ostatním. K tomu bude potřeba založit na linuxovém počítači další adresáře (viz také adresářovou strukturu na straně 32). Vytvořte k tomu účelu v /var/skola/fotky/raw/smartphone adresář florian-brunner a v něm ještě podadresáře galaxy a iphone. V případě a) a b) pracujte s absolutními cestami. (a) Vytvořte postupně potřebné adresáře. (b) Nově vytvořené adresáře zase smažte. (c) Pokud chcete jedním spuštěním příkazu mkdir vytvořit kompletní podadresářovou strukturu, musíte použít jeden konkrétní parametr. Najděte ho pomocí manuálové stránky (man mkdir). (d) Přesuňte se nyní do /var/skola/fotky/raw/smartphone a vytvořte požadovanou strukturu jedním příkazem. 2. Johann Beslmeisel chce některé z fotek v adresáři /var/skola/fotky/raw/sony zkopírovat do svého domovského adresáře /home/beslmjo. V případě bodů a), b) a c) použijte absolutní cesty. (a) Kterým příkazem zkopíruje Johann soubor IMAG0004.jpg do svého domovského adresáře? (b) Uveďte, jak jedním příkazem zkopíruje do svého domovského adresáře oba soubory IMAG0004.jpg a IMAG0005.jpg. (c) Napište, jak může Johann jedním příkazem zkopírovat všechny dostupné snímky do svého domovského adresáře. 3. Pro potřeby testování převodního skriptu potřebujeme zkopírovat strukturu nacházející se v adresáři /var/skola/fotky/raw/canon do adresáře /tmp/canon. (a) Uveďte příkaz, kterým to provedete. (b) Po dokončení převodu lze adresář /tmp/canon kompletně a bez dotazu smazat. Jakým příkazem to provedete? 4. Paní Lorenzová vyžaduje, aby adresářová struktura jejího linuxového PC byla přehlednější. Kterým příkazem přesune kompletní adresář /video do adresáře /var/skola? 5. Vyzkoušejte příklad k odkazům (strana 35). Které číslo inodu bude ve vašem případě použito? 6. Podle čeho poznáte, že na soubor je vytvořený pevný odkaz? 36

37 1.6. TEXTOVÉ EDITORY 1.6 Textové editory V Linuxu je k dispozici velké množství editorů pro různé oblasti použití. Některé z nich jsou základní textové editory, jiné jsou tak vybavené, že je lze chápat jako komplexní vývojářské prostředí, např. pro vytváření HTML stránek nebo programování třeba v Javě. Jednoduše ovladatelný textový editor je kupříkladu Nano. Dalším editorem, už ne tak snadno ovladatelným, je vi, nabízí ale mnoho různých funkcí Nano Nano je textový editor pro příkazovou řádku a následník editoru Pico. V protikladu ke svým velkým příbuzným vi a Emacs není tak mocný, ale o to snadněji se ovládá. To mu pomohlo k oblibě zejména mezi linuxovými začátečníky. Také podporuje zvýrazňování syntaxe pro mnoho textových formátů. Obrázek 1.14: Nano se zvýrazňováním syntaxe Editor se spouští příkazem nano. Chcete-li upravovat existující soubor, zadejte jeho jméno jako parametr. Nejdůležitější klávesové kombinace jsou zobrazeny na dolním řádku terminálu, přičemž znak ^ symbolizuje levou klávesu Ctrl. Kompletní přehled všech klávesových zkratek a kombinací získáte v nápovědě, kterou zobrazíte stiskem Ctrl+g. Cvičení: 1. Spusťte Nano, zadejte následující řádky, uložte soubor pod názvem nano-skript.sh a soubor v Nano znovu otevřete. #!/bin/bash $output="výstup" $outputput="nástup" echo $output echo $outputput Co vás napadlo před uložením a co po opětovném načtení? 2. Nyní změňte pořadí řádků s echo, a to tak, že jeden z nich smažete do schránky a na jiném místě ho zase vložíte Vi Za prazáklad textových editorů pro příkazovou řádku lze považovat vi, který vznikl už v sedmdesátých letech 20. století. Od té doby se ale jeho funkce rozšířily a byl přepracován. Je nainstalován na téměř všech unixových a linuxových systémech (také jako vim Vi IMproved). Jedná se o oblíbený editor systémových správců, běžní uživatelé mají raději Nano. Editor vi obsahuje tři zásadně odlišné režimy práce. 37

38 LEKCE I PRVNÍ KROKY S LINUXEM Obrázek 1.15: Pracovní režimy editoru vi 1. Příkazový režim (command mode) V tomto režimu se vi nachází po svém spuštění. Stiskem kláves se spouštějí různé příkazy, např. hledání slova, vymazání řádku. Do režimu se také dostanete stiskem klávesy Esc. Syntaxe: [Počet opakování n]textové označení příkazu Příklady: 4dw 5dd y 5y p G Smazat (angl. delete) následující čtyři slova (angl. words). Smazat následujících pět řádků. Kopírovat aktuální řádek do schránky (angl. yank, škubnout, trhnout). Kopírovat do schránky pět řádků. Vložit (angl. paste) řádky ze schránky. Přesunout kurzor na začátek posledního řádku v souboru. Strg+r Odvolat vrácení změn (redo). 2. Vkládací režim (insert mode) V tomto režimu se vkládají texty. Pomocí kláves i, a nebo o se do tohoto režimu dostanete z příkazového režimu a klávesou Esc zase zpět. 3. Režim příkazové řádky (last line mode) Stisknutím dvojtečky : se z příkazového režimu přemístíte do režimu příkazové řádky a pomocí Esc zase zpět. Syntaxe: :[adresa]příkaz [volby] Příklady: :q! Ukončit vi bez uložení dat. 38

39 1.6. TEXTOVÉ EDITORY :/výraz :set number :s/ö/oe/g :1,$/\//\./g Vyhledat v textu; následující výskyt hledaného výrazu zobrazíte stiskem n, předchozí výskyt stiskem N (pokud nějaké jsou). Zobrazit v aktuálním sezení editoru číslování řádků. Nahradit na aktuálním řádku všechny znaky ö za oe. Nahradit všechny / v celém souboru za. (quoting pomocí \nutný). :5,9s/Maier/Mair/g Nahradit na řádcích 5 9 všechny výskyty jména Maier na Mair. :50,$s/[*#]/=/ Nahradit od řádku 50 do konce dokumentu každý první znak * nebo # znakem =. Otázky a cvičení (jen) pro nastávající administrátory 1. Ve kterém režimu se nacházíte po spuštění editoru vi? 2. Ve kterém režimu můžete vi spořádaně ukončit? 3. Jak se dostanete do vkládacího režimu (a) z příkazového režimu, ap.? (b) z režimu příkazové řádky? 4. Ve kterém režimu můžete pohybovat kurzorem? 5. Ve kterém režimu můžete mazat texty? 6. Uložte ve vi soubor pod jiným názvem. Jak budete postupovat? 7. Zadáním /hledaný výraz můžete v příkazovém režimu vi vyhledávat texty. Najděte v konfiguračním souboru /etc/services pojem lansource. Uveďte následně číslo prvního řádku, kde se pojem vyskytuje. 8. Upravte soubor /etc/inittab postarejte se o to, aby klávesovou zkratkou Ctrl+Alt+Del už nebylo možné restartovat počítač. Poznámka: Vyhledejte text ctrlaltdel a zakomentujte tento řádek na začátku pomocí # Vytvoření ikony na ploše Na ploše lze bez problémů vytvořit ikonu terminálu, která spustí libovolný program. Adresář ~/Plocha/ v domovském adresáři uživatele obsahuje pro každou ikonu jeden soubor. Má příponu.desktop a jedná se o běžný textový soubor. #!/usr/bin/env xdg-open [Desktop Entry] Type=Application Exec=gnome-terminal Name=term Icon=/usr/share/pixmaps/gnome-terminal.xpm 39

40 LEKCE I PRVNÍ KROKY S LINUXEM Pokud máte ikonu vytvořenou, klikněte na ni pravým tlačítkem myši a v kontextové nabídce vyberte Vlastnosti. Spustí se editor, v němž můžete změnit různá nastavení ikony (viz obrázek 1.16). 21 Obrázek 1.16: Úprava ikony na ploše Cvičení: Poznačte si pokaždé odpovídající příkazy: 1. Spusťte terminál a změňte pracovní adresář na ~/Plocha/. 2. Vytvořte v editoru nano soubor terminal.desktop. 3. Aby bylo možné program spustit, musí mít nastaveno oprávnění spouštět (více k tématu na straně 55). chmod +x terminal.desktop 4. Vyzkoušejte, že ikona funguje kliknutím na ni spusťte terminál. 5. Pokud se vám nelíbí použitý obrázek, změňte ho prostřednictvím kontextové nabídky a položky Vlastnosti. 21 Nezapomeňte na kartě Oprávnění zatrhnout přepínač Povolit spouštění souboru jako programu, jinak nebude možné program spustit. Totéž řeší třetí bod úkolů. Pozn. překl. 40

41 1.7. OTÁZKY 1.7 Otázky 1. Co znamenají výrazy alfa, beta a stabilní verze? 2. Co to znamená, když distribuce nabízí svou LTS verzi? 3. Ze kterých distribucí vznikly následující operační systémy? (a) Ubuntu (b) CentOS 4. Kde všude se nasazuje Linux? Uveďte pokaždé jeden příklad! 5. Co je to konzole a terminál? 6. Jak nainstalujete program synaptic v konzoli? 7. Co je to shell? 8. Uveďte dva příklady, jak získáte nápovědu k linuxovým příkazům. 9. Čím se odlišují volby a argumenty u příkazů? 10. Jmenujte dva typy vytváření názvů u linuxových souborových systémů. 41

42 LEKCE I PRVNÍ KROKY S LINUXEM 11. Vysvětlete pojem regulární výrazy. K čemu byly vymyšleny? 12. Co znamená pojem quoting? 13. Jak vypíšete všechny názvy souborů v adresáři, které mají přesně 10 znaků? 14. Jak vypíšete všechny názvy souborů v adresáři, které nezačínají velkým písmenem? 15. Popište pět typů souborů v Linuxu. 16. Co znamená zkratka FHS? 17. Jakou zvláštní vlastnost s ohledem na nadřízený adresář má adresář root neboli /? 18. Uveďte, které soubory se v linuxovém systému nacházejí v adresářích /etc, /bin, /home, /root. 19. V čem se odlišují adresářové struktury operačních systémů typu Linux a Windows? 20. Co mají společného adresářové struktury a stromy? 42

43 1.7. OTÁZKY 21. V čem se od sebe liší relativní a absolutní cesta? 22. Jaký význam mají parametry -n a -e příkazu echo? 23. Co ovlivňují následující sekvence u příkazu echo, resp. co představují? \\ \f \n \r \t \v 43

44 LEKCE I PRVNÍ KROKY S LINUXEM 44

45 Kapitola 2 Lekce II Správa uživatelů a oprávnění Důležitá úloha systémové administrace je správa uživatelů: zakládání nových, odstraňování starých, jejich přiřazování do jednotlivých skupin nebo úpravy jejich členství. A zapomenout nesmíme ani na správu přístupových práv k souborům a jejich vlastnictví. Následující text je rozdělený do dvou částí. V první z nich si ukážeme, jak se uživatelé a skupiny spravují prostřednictvím příkazů, které nejsou závislé na konkrétní linuxové distribuci. Objasníme si účel a strukturu databází, do nichž se ukládají informace o uživatelích, jejich heslech a skupinách, do nichž jsou rozřazeni. Po otázkách a úkolech ke správě uživatelů následuje druhá část, v níž je vysvětleno, jak je to v Linuxu s přístupovými právy k souborům a adresářům a jakým způsobem je můžeme upravovat. Také tato část končí otázkami a cvičeními k tématu přístupových práv a vlastnictví. Obsah 2.1 Správa uživatelů v Linuxu Správce systému, běžný uživatel a systémový uživatel Primární a sekundární skupiny Vytvoření uživatelského účtu Práce pod jiným uživatelem su a sudo Správa skupin Otázky Oprávnění souborů a jejich vlastnictví Kategorie uživatelů a přístupová práva Změna přístupových práv a vlastnictví Otázky a úkoly

46 LEKCE II SPRÁVA UŽIVATELŮ A OPRÁVNĚNÍ 2.1 Správa uživatelů v Linuxu Jednou ze základních vlastností Linuxu je fakt, že současně může v systému pracovat více uživatelů, a to nezávisle na sobě. Nutnou podmínkou je samozřejmě správa uživatelských účtů a přístupových práv, aby se uživatelé vzájemně nemohli ovlivňovat. Systém uživatelských oprávnění stanovuje, kdo může přistupovat ke kterým souborům, za jakých podmínek smí uživatel číst, nebo dokonce měnit data jiného uživatele, které programy smí spouštět a ke kterým hardwarovým zařízením smí (přes patřičné soubory) přistupovat. Každý uživatel disponuje vlastním uživatelským účtem a domovským adresářem, do kterého se ukládají jeho data a konfigurace programů. Uživatel se do systému přihlašuje se svým uživatelským jménem a heslem. Všechny akce, které uživatel provede během sezení (tzn. mezi přihlášením a odhlášením ze systému), jsou řízeny jeho oprávněními v systému Správce systému, běžný uživatel a systémový uživatel U všech linuxových distribucí jsou obvykle během instalace vytvořeny dva uživatelské účty: administrátorský účet root, účet pro běžného uživatele. Správce systému root disponuje všemi oprávněními v systému. Smí číst, měnit a mazat všechny soubory a adresáře a spouštět všechny programy. Uživatel s administrátorskými právy může systém třeba nedopatřením poškodit, rozbít. Aby se tomu předešlo, root by měl vytvořit další uživatele, kteří budou mít práva omezená. Tito běžní uživatelé pak systém používají k práci, mají neomezený přístup ke svým vlastním datům, ale jen omezený přístup ke zbytku systému. Pro zvláštní programy (např. poštovní nebo webový server) nebo pro přístup ke konkrétním komponentám a zařízením (např. k tiskárně, externím pevným diskům nebo zálohovacím zařízením) existují speciální uživatelské účty. Tyto tzv. systémové uživatelské účty nejsou určené lidem pro interaktivní práci se systémem Primární a sekundární skupiny Pro případ, kdy má více uživatelů společně využívat stejné soubory nebo systémové zdroje, je v Linuxu zaveden princip členství ve skupinách. Každý uživatel musí být členem alespoň jedné skupiny. Říká se jí primární skupina (hlavní skupina). Členství v primární skupině se ukládá do databáze uživatelů, což je soubor /etc/passwd. Uživatelé ale mohou být členy doplňujících skupin, pokud jsou do nich rootem zapsáni (což se uloží do databáze skupin /etc/group). Těmto skupinám se říká sekundární. Po přihlášení je každý uživatel nejprve přiřazen do své primární skupiny. Během sezení se může příkazem newgrp dočasně přidat do dalších skupin, které jsou mu přiřazeny. Do skupin, které jsou chráněné heslem a jichž není členem (tzn. není to zapsáno v /etc/group), se může uživatel dočasně přihlásit zadáním příkazu newgrp a hesla Vytvoření uživatelského účtu Vytvoření uživatelského účtu je principiálně vždy stejné a spočívá v následujících krocích: vytvoření záznamů v databázi uživatelů /etc/passwd a databázi hesel /etc/shadow, podle potřeby vytvoření jednoho nebo více záznamů v databázi skupin /etc/group, vytvoření domovského adresáře, nakopírování souborů se základním nastavením a přidělení práv novému uživateli, vyřešení případných dalších přístupových požadavků, např. nastavení diskových kvót (omezení maximálního dostupného prostoru), přístupu ke speciálním aplikacím nebo databázím. Ke správě uživatelů se v každé linuxové distribuci používá jiný nástroj, s nímž lze vytvářet uživatele a skupiny (např. yast v SUSE, system-config-users ve Fedoře apod.). Nezávisle na distribuci se používají tyto nástroje příkazové řádky: useradd Vytvořit nový uživatelský účet. usermod Upravit existující uživatelský účet. userdel Smazat uživatelský účet. Příkaz useradd s argumentem --help zobrazí možnosti a nastavení: useradd --help usage: useradd [-u uid [-o]] [-g group,..] [-G group] [-d home] [-s shell] [-c comment] [-m [-k template]] [-f inactive] [-e expire ] [-p passwd] name 46

47 2.1. SPRÁVA UŽIVATELŮ V LINUXU Nejdůležitější přepínače pro useradd jsou následující: name Přihlašovací jméno, identifikátor nově vytvářeného uživatele. -c <komentář> Komentář. -d <adresář> Domovský adresář; pokud není zadán, vytvoří se /home/prihlasovaci_jmeno. -e Datum, kdy bude přístup automaticky zablokován. -g <skupina> Primární skupina nového uživatele (název nebo GID), skupina musí už existovat. -G <skupina1>[,skupina2] Názvy nebo GID dalších skupin (sekundárních), skupiny musí existovat, oddělují se čárkami. -m Vytvořit domovský adresář a nakopírovat do něj soubory se základním nastavením z /etc/skel/. -k <adresář> Jiný adresář se základním nastavením. -s <shell> Přihlašovací shell nového uživatelského účtu. -u <UID> Číselné označení nového účtu, nesmí být už použito; pokud je použito, lze stejné číslo vynutit přepínačem -o. sudo useradd -c "Bittl,Erwin,IT11FA" -m -d /home/bittler -g it11fa -k /etc/skel.zak bittler Tímto příkazem založí root nový uživatelský účet pro uživatele Erwin Bittl s přihlašovacím jménem bittler a přiřadí ho do skupiny it11fa. Jeho domovský adresář bude /home/bittler a zkopíruje se do něj základní nastavení z adresáře /etc/skel.zak. Číslo uživatele (UID) a číslo skupiny (GID) Pro interní identifikaci uživatelů nepoužívá systém jejich jména, nýbrž jednoznačná čísla, tzv. user ID, UID (angl. user = uživatel). UID se obvykle vytváří automaticky při vytvoření nového uživatelského účtu. Kromě UID je každému uživateli přiřazeno ještě jedno číslo, a sice group ID, GID (angl. group = skupina). Jde o číslo primární skupiny, do níž uživatel patří. UID a GID administrátorského uživatele root jsou vždycky 0! Roli přitom nehraje jméno root, nýbrž právě nulové UID. Z toho vyplývá, že každý uživatel, který má ID rovné 0, disponuje právy správce, roota. Příkazem id lze zobrazit právě aktivní primární skupinu uživatele a všechny jemu přidělené sekundární skupiny a jejich GID. id uid=524(bittler) gid=1010(it11fa) skupiny=1010(it11fa),16(dialout),33(video) id root uid=0(root) gid=0(root) skupiny=0(root) Jak už bylo řečeno, interně se téměř vždy k identifikaci používá UID, resp. GID. I když se jako argument příkazu použije jméno uživatele nebo skupiny, před provedením akce se toto jméno převede na UID, resp. GID. Převod probíhá prostřednictvím databáze uživatelů /etc/passwd a skupin /etc/group. Databáze uživatelů /etc/passwd Soubor /etc/passwd obsahuje seznam všech uživatelů. Pro každého existuje záznam, který obsahuje minimálně přihlašovací jméno, heslo, UID, GID, domovský adresář a shell pro přihlášení. V komentářovém políčku mohou být další informace, např. celé jméno a příjmení uživatele. Každý záznam v /etc/passwd se skládá ze sedmi políček v následujícím formátu: Přihlašovací jméno:heslo:uid:gid:komentář:domovský adresář:login shell Komentářové pole se někdy označuje jako GECOS. 1 Dvojtečka slouží jako oddělovač polí, proto se nesmí objevit jako hodnota pole (třeba v komentáři). Následující zkrácený výpis zobrazuje několik řádků souboru /etc/passwd: cat /etc/passwd root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh 1 47

48 LEKCE II SPRÁVA UŽIVATELŮ A OPRÁVNĚNÍ wwwrun:x:30:8:www daemon apache:/var/lib/wwwrun:/bin/false... bittler:x:1524:1010:bittl,erwin,it11fa:/home/bittler:/bin/bash brunnefl:x:1528:1010:brunner,florian,it11fa:/home/brunnefl:/bin/bash summerma:x:1630:1020:summer,maximilian,it11se:/home/summerma:/bin/bash janist:x:1768:1030:jani,steffi,it11fs:/home/janist:/bin/bash greinela:x:1001:1000:greiner,lars,ucitel:/home/greinela:/bin/bash lorenzvi:x:1002:1000:lorenz,viola,ucitel:/home/lorenzvi:/bin/bash... Dříve bývala v souboru /etc/passwd uložena také zašifrovaná hesla. Dnes už tomu tak z bezpečnostních důvodů není. Místo toho je v políčku pro heslo písmeno x. Tím se odkazuje na databázi hesel, soubor /etc/shadow, kde jsou hesla uložená zabezpečeným způsobem. Hesla a databáze hesel /etc/shadow Pro linuxová hesla se mají používat jen ASCII znaky 2 a z bezpečnostních důvodů by heslo mělo obsahovat velká i malá písmena a číslice. Hesla se v Linuxu ukládají zašifrovaně. Používají se jednosměrné šifrovací výpočty, což znamená, že heslo nelze zpětně rozklíčovat. Pokus o zjištění hesla lze provádět pouze metodou hrubé síly (brute force), tedy postupným zkoušením všech možných kombinací. To je sice v případě kvalitního hesla časově náročné, ale mnozí uživatelé to útočníkům usnadňují tím, že používají slabá hesla. 3 Aby se riziko napadení systému snížilo, zašifrovaná hesla se neukládají přímo do /etc/passwd, nýbrž odděleně do souboru /etc/shadow. Ten je čitelný pouze rootem a ostatním uživatelům je tedy nepřístupný. Záznam v souboru /etc/shadow se skládá ze sedmi políček v následujícím formátu: Přihlašovací jméno:heslo:poslední změna:mind:maxd:varování:lhůta:zablokování:rezervováno Přihlašovací jméno Je uloženo také v prvním sloupci v souboru /etc/passwd. Heslo Zašifrované heslo uživatele; pokud je políčko prázdné, lze se přihlásit bez hesla, pokud je zde * nebo!, přihlásit se nelze vůbec. Poslední změna Den, kdy bylo naposledy změněno heslo jako počet dnů, které uplynuly od 1. ledna MinD MaxD Varování Lhůta Minimální počet dnů, kdy je heslo platné; pokud je políčko prázdné nebo obsahuje nulu, pak není minimum nastavené. Maximální počet dnů, kdy je heslo platné; po uplynutí této lhůty si uživatel musí heslo změnit. Počet dnů před uplynutím MaxD, kdy bude uživatel varován, že se blíží okamžik, kdy bude heslo zneplatněno; obvykle se uživateli zobrazuje zpráva po přihlášení. Představuje počet dnů po uplynutí termínu MaxD, kdy je heslo ještě platné; během této doby se uživatel ještě může přihlásit, ale heslo si musí ihned změnit. Zablokování Den, kdy bude uživatelský účet zablokován, uvádí se jako počet dnů od 1. ledna Rezervováno Pro budoucí účely, momentálně nemá políčko konkrétní využití. Následující zkrácený výpis zobrazuje příklady několika řádků ze souboru /etc/shadow: sudo cat /etc/shadow root:$1$8jp/rdhb$d1x/6xr2.pue0nx3nigdx/:14617:0:99999:7::: daemon:*:13991:0:99999:7::: bin:*:13991:0:99999:7::: sys:*:13991:0:99999:7:::... bittler:$1$jde7ppxq$8bv7aoart3p91nhfai7vpg:15420:0:99999:7::: brunnefl:$1$yktwzykg$xmcucqvtao99gngmnpjz5p:15422:0:99999:7::: summerma:!:15591:0:99999:7::: janist:$1$u3n08ahk$b0x7lhnrbsvuunkhjzf4as:15425:0:99999:7::: greinela:$1$cwunxsvi$ruro5wzweskv6kxskptdi3:15317:0:99999:7::: lorenzvi:$1$nqauvjcl$ju5d342fouudm7xu8051la:15359:0:99999:7:::... 2 Pro české prostředí lze s ohledem na sílu hesla jednoznačně doporučit také znaky s diakritickými znaménky. Pozor ovšem na situaci, kdy hrozí, že někdy budete pracovat s nečeskou klávesnicí. Pozn. překl. 3 Je vhodné upozornit, že heslo uživatele pro přihlášení do systému se používá také v případě vzdáleného připojení pomocí SSH. Pokud vám běží služba SSH, je pravděpodobné, že váš počítač čelí pokusům o přihlášení. Pozn. překl. 48

49 2.1. SPRÁVA UŽIVATELŮ V LINUXU Když si chce uživatel změnit heslo, zadá příkaz passwd. Je vyzván, aby zadal své staré heslo a poté dvakrát za sebou heslo nové. Běžní uživatelé mohou měnit hesla jen sami sobě. Správce systému root smí měnit hesla všech uživatelů, přičemž nemusí zadávat hesla původní: ~# passwd bittler New password: ********** Re-enter new password: ********** Password changed Práce pod jiným uživatelem su a sudo Člověk, který spravuje systém, by neměl trvale pracovat jako root. Hrozí riziko nechtěného poškození systémových souborů nebo programů. Práce s právy roota je riziková také s ohledem na nebezpečí z internetu, protože by mohlo dojít k instalaci a spuštění škodlivého softwaru. Proto se doporučuje, aby také správce systému pracoval pod běžným uživatelským účtem a práva roota používal jen v případě potřeby. K dočasnému získání vyšších (administrátorských) práv existuje několik možností. Přihlásit se jako root. V aktuálním sezení změnit svou identitu pomocí su (angl. switch user, přepnout uživatele). Spustit příkaz/program pomocí sudo (angl. switch user do, přepnout uživatele a spustit program). Pomocí su se kompletně změní identita uživatele. Obvykle ale postačuje mít administrátorská práva jen pro vykonání jednoho příkazu či spuštění jednoho programu. Toho lze dosáhnout pomocí příkazu sudo. Některé distribuce neumožňují přihlášení jako root (např. Ubuntu). V takovém případě se správcovské úlohy musí vykonávat pomocí sudo. Příklad pro su: ~$ su Heslo: ******** su - bittler ~$ pwd /home/bittler Uživatelka lorenzvi nejprve převzala identitu roota. Pokud se totiž u příkazu su neuvede uživatelské jméno, pak se program táže na heslo roota a po jeho úspěšném zadání se identita uživatele změní právě na něj. A jako root pak můžete měnit libovolně identitu bez zadání hesla. Pokud se su spustí s parametrem -, mimo jiné se aktuální pracovní adresář změní na domovský adresář nového uživatele. Program sudo na rozdíl od su nespouští shell s identitou nového uživatele, nýbrž okamžitě spustí zadaný příkaz s odpovídajícími právy. Pomocí přepínače -u lze zadat uživatele, pod nímž má být program spuštěn. Pokud není přepínač uveden, použije se uživatel root. sudo useradd -m janist password for lorenzvi: ******** Za normálních okolností musí uživatel při prvním spuštění sudo (v rámci jednoho sezení) zadat heslo. V Ubuntu je to heslo uživatele, který sudo spouští. Jestli a jak může běžný uživatel sudo používat, se nastavuje v souboru /etc/sudoers Správa skupin Skupiny jsou řešením situací, kdy více uživatelů přistupuje současně ke stejným zdrojům (např. souborům, aplikacím, databázím a podobně). Každý linuxový uživatel bývá členem více skupin. Jeho primární skupina je uložena v souboru /etc/passwd. Přiřazení uživatele do sekundárních skupin, kterých může být libovolný počet, je uloženo v databázi /etc/group. Tento soubor obsahuje všechny v systému dostupné skupiny a k nim přiřazené uživatele. Každý záznam (řádek) obsahuje seznam uživatelů, kteří do skupiny patří. Členství v primárních skupinách není v tomto souboru uvedeno! Záznamy v souboru /etc/group mají následující formát: Název skupiny:heslo:gid:seznam uživatelů Následující (pomocí ) zkrácený výpis zobrazuje některé řádky ze souboru /etc/group: cat /etc/group root:x:0: daemon:x:1: bin:x:2:... dialout:x:16:greinela,lorenzvi 49

50 LEKCE II SPRÁVA UŽIVATELŮ A OPRÁVNĚNÍ... admin:x:114:greinela,lorenzvi... it11fa:x:1010: it11se:x:1020: it11fs:x:1030: ucitele:x:1000: photo:x:2000:summerma,janist,brunnefl... Primární skupina uživatele greinela se jmenuje ucitele (GID=1000). Byl do ní přiřazen v souboru /etc/passwd, takže v souboru již není /etc/group tento vztah uložený. Navíc je greinela členem skupiny dialout, která mu umožňuje připojovat se k internetu. Je také členem skupiny admin. V systémech jako Ubuntu mohou členové této skupiny provádět administrátorské úlohy, např. instalovat programy nebo měnit nastavení systému. Strategie pro zařazování do skupin Existují dva použitelné postupy, jak zařazovat uživatele do primárních skupin. Nejjednodušší možnost je přiřadit všechny uživatele do jedné primární skupiny users. Tento přístup již roky prosazuje SUSE Linux. Nevýhoda spočívá v tom, že všichni uživatelé potom mají přístup k souborům ostatních uživatelů. U distribucí od Red Hatu a založených na Debianu platí, že každý uživatel má vlastní primární skupinu, jejíž jméno se shoduje s přihlašovacím jménem uživatele. Skupina users je tedy nevyužitá. Toto řešení má při odpovídající správě systému výhody, a to tehdy, když více členů sekundární skupiny vytváří společné soubory. Číslo skupiny (GID) nula je rezervované pro roota, 1 až 999 pro skupiny systémových služeb. GID=100 je běžně rezervované pro skupinu users. GID větší než 1000 lze použít pro vlastní účely. Příkazy pro správu skupin Následující příkazy se používají pro správu skupin: groupadd Vytvořit novou skupinu. groupmod Upravit existující skupinu. groupdel Smazat záznamy o existenci skupiny. Skupinu je nutné nejprve vytvořit, teprve potom do ní lze přidat uživatele. Pro vytvoření se používá příkaz groupadd s následující syntaxí: groupadd [-g GID] jménoskupiny Pomocí přepínače -g lze zadat konkrétní číslo skupiny. Je potřeba pamatovat na to, že hodnoty do 999 jsou rezervované pro systémové skupiny. Pokud přepínač nezadáte, použije se automaticky další dostupné GID. Existující skupiny lze upravit pomocí groupmod: groupmod [-g GID] [-n novéjméno] jménoskupiny -g GID změnit GID zadané skupiny, -n novéjméno změnit jméno skupiny na nově zadané, GID se nemění. Existující skupiny lze smazat příkazem groupdel. Příklady ke správě skupin groupadd -g 1010 it11fa Vytvořit skupinu it11fa s GID groupmod -g 2011 it11fa Existující skupině it11fa změnit GID na groupmod -g n teacher ucitele Skupinu ucitele přejmenovat na teacher a změnit GID na groupdel it11fa Smazat skupinu it11fa. 50

51 2.1. SPRÁVA UŽIVATELŮ V LINUXU Přiřazení uživatelů do skupin pomocí usermod Noví uživatelé jsou při vytvoření pomocí useradd ihned přiřazeni do skupin. Pokud požadované skupiny v ten okamžik ještě neexistují nebo pokud se má členství změnit později, použije se příkaz usermod. Ten změní existující uživatelský účet; parametry příkazu jsou v podstatě stejné jako v případě useradd. usermod [-g skupina] [-G skupina1[,skupina2]... ] Uživatelské jméno Nejdůležitější volby pro správu skupin pomocí usermod: -g skupina Primární skupina uživatele, jako jméno nebo GID. -G skupina1[,skupina2] Další skupiny (sekundární skupiny) uživatele, jako jméno nebo GID, oddělují se čárkami. Následuje příklad, jak (v Ubuntu) uživatelku lorenzvi navíc přiřadit do administrátorské skupiny: usermod -G admin lorenzvi Cvičení: Následující úkoly musíte zpracovávat s administrátorskými oprávněními. Poznačte si pokaždé použité příkazy. 1. Vytvořte následující skupiny s GID uvedeným v závorce: it11fa (1010), it11se (1020), it11fs (1030) a lehrer (1000). 2. Vytvořte vzorové adresáře pro základní nastavení domovských adresářů žáků /etc/skel.zak a učitelů /etc/skel.ucitel. Nakopírujte do nich všechny soubory z adresáře /etc/skel. 3. Vytvořte následující uživatelské účty s nastaveními, která jsou uvedena v seznamu: Přihlaš. jméno Domovský adr. Primární skup. Vzorový adr. Komentář brunnefl /home/brunnefl it11fa /etc/skel.zak Brunner,Florian,IT11FA summerma /home/summerma it11se /etc/skel.zak Summer,Maximilian,IT11SE janist /home/janist it11fs /etc/skel.zak Jani,Steffi,IT11FS lorenzvi /home/lorenzvi ucitele /etc/skel.ucitel Lorenzová,Viola,ucitel Zkontrolujte pohledem do databáze skupin a uživatelů, že byly účty úspěšně vytvořeny. 51

52 LEKCE II SPRÁVA UŽIVATELŮ A OPRÁVNĚNÍ 4. Prohlédněte si databázi hesel. Podle čeho poznáte, že pro nově vytvořeného uživatele dosud nebylo vytvořeno heslo? Nastavte nyní nově vytvořeným uživatelským účtům heslo tajné. Jak se změnily odpovídající záznamy v databázi hesel? 5. Přihlaste se na volných konzolích pod následujícími jmény: brunnefl, summerma a janist. K dalším konzolím můžete přistupovat v textovém režimu pomocí klávesových kombinací Alt+F, Alt+F a tak dále. Do textového režimu se z grafického přepnete pomocí Ctrl+Alt+F, Ctrl+Alt+F apod. (a) Přepněte se zpátky na konzoli, kde jste přihlášeni jako root, a zjistěte, kteří uživatelé jsou právě přihlášení. Tyto informace získáte pomocí příkazů w a who. (b) Nastavte uživateli janist jako shell /bin/dash. Otestujte úspěšný výsledek tak, že se jako janist přihlásíte a odhlásíte. (c) Nastavte uživateli summerma jako shell /bin/false a vyzkoušejte, že přihlášení tohoto uživatele není možné. Poté opět nastavte shell na /bin/bash. (d) Vytvořte skupinu photo s GID 2000 a přiřaďte do ní uživatele summerma a brunnefl. Podívejte se na změny, které nastaly v databázi skupin a ověřte, že oba uživatelé se mohou do nové skupiny přepnout pomocí newgrp. (e) Ověřte, že ve vašem systému existuje skupina admin. Pokud ano, přiřaďte do ní lorenzvi. (f) Nakonec všechny nově vytvořené uživatelské účty zase zrušte. Dbejte na to, aby byly smazány také domovské adresáře. 52

53 2.1. SPRÁVA UŽIVATELŮ V LINUXU Otázky 1. O jaký speciální typ uživatelů se jedná v případě jmen jako daemon, bin, sys a wwwrun? 2. Sestavte kompletní příkaz, kterým pro člověka jménem Frank Meyer z třídy IT11FS vytvoříte uživatele s přihlašovacím jménem meyerfr. Jeho primární skupina bude it11fs, vytvoří se domovský adresář /home/meyerfr a základní nastavení se zkopíruje ze souboru /etc/skel.schueler. Zároveň se do databáze uživatelů zapíše komentář Meyer,Frank,IT11FS. 3. Popište dvě možnosti, jak získat UID uživatele. 4. Potřebujete získat UID uživatelky janist. Zadejte kompletní příkaz, jak tyto informace získáte. 5. Následujícím příkazem získáte GID primární skupiny uživatelky janist: id -g janist 1030 Popište jinou možnost, jak je možné tyto informace získat. 6. Jaký znak políčka pro heslo v souboru /etc/passwd poukazuje na to, že zašifrovaná hesla jsou uložena v souboru /etc/shadow? 7. Pro vyřešení následujících pěti úloh prosím použijte příklad s databází hesel /etc/passwd na straně 47. (a) Uveďte GID skupiny it11se. (b) Vysvětlete, proč se uživatel summerma nemůže přihlásit do systému a jak vy jako správce systému tento problém vyřešíte. (c) Uživatel bittler si naposledy změnil heslo dne Kdy bylo naposledy změněno heslo uživatele brunnefl? (d) Který záznam musí být změněn a jak, když chceme, aby si uživatelka lorenzvi musela měnit heslo každých třicet dní? (e) Přečtěte si následující výstup: grep johannes /etc/passwd johannes:x:1102:100::/home/johannes: sudo grep johannes /etc/shadow johannes:!:15591:0:99999:7::: 53

54 LEKCE II SPRÁVA UŽIVATELŮ A OPRÁVNĚNÍ Vysvětlete, proč se uživatel johannes nemůže přihlásit do systému a jak tento problém jako správce systému vyřešíte. 8. Přečtěte si následující výstup: sudo useradd johannes grep johannes /etc/passwd johannes:x:1102:100::/home/johannes: sudo grep johannes /etc/shadow johannes:!:15591:0:99999:7::: ls /home/johannes ls: /home/johannes: No such file or directory V čem spočívá problém a jak může být odstraněn? 9. Co můžete dělat, když zapomenete své heslo roota? 10. Jak může uživatel pomocí sudo trvale získat práva správce systému? 11. Pomocí příkazu last přihlašovací_jméno_uživatele si můžete nechat vypsat statistiku přihlášení zadaného uživatele. Pokud jméno neuvedete, vypíše se statistika všech uživatelů v systému. Díky last reboot zjistíte, kdy byl systém (resp. počítač) v minulosti vypínán a spouštěn. Vyzkoušejte si obojí přihlaste se a odhlaste na jiné konzoli jako jiný uživatel a restartujte počítač. 2.2 Oprávnění souborů a jejich vlastnictví Systém uživatelských účtů a přístupových práv v Linuxu umožňuje, aby v jednom systému pracovalo nezávisle na sobě více uživatelů, aniž by se přitom nějak ovlivňovali. Práva jsou definovaná prostřednictvím skupin, do kterých jsou uživatelé zařazeni. Tak je nastavené, kdo může přistupovat ke kterým souborům, za jakých okolností smí uživatel číst nebo upravovat soubory jiného uživatele, kdo může spouštět které soubory nebo které hardwarové komponenty smí uživatel používat. Správa přístupu je založena na správě uživatelů a nastavení přístupových práv k souborům. Pokud by chtěl například uživatel bittler smazat soubor s databází uživatelů, systém na základě nastavených oprávnění posoudí, zda k tomu má odpovídající práva: rm /etc/passwd rm: smazat proti zápisu chráněný běžný soubor /etc/passwd? y rm: nelze odstranit /etc/passwd: Operace zamítnuta V uvedeném případě uživatel bittler požadovaná práva nemá, systém mu tedy požadavek na smazání souboru odepřel. 54

55 2.2. OPRÁVNĚNÍ SOUBORŮ A JEJICH VLASTNICTVÍ Kategorie uživatelů a přístupová práva V Linuxu se v souvislosti se souborovými právy rozlišují tři kategorie uživatelů: vlastník souboru (angl. owner), členové skupiny, která je souboru přidělena (angl. group), všichni ostatní uživatelé (angl. others). Každé uživatelské kategorii lze odděleně přiřadit přístupová práva k souboru. Jsou tři a jde o právo číst (r jako angl. read), právo zapisovat (w jako angl. write) a právo spouštět (x jako angl. execute). U souborů se uplatňuje ještě jedna trojice speciálních práv, a sice SUID, SGID a sticky bit. Přístupová práva se ukládají pro každý soubor (a také pro adresáře, soubory zařízení, sokety, roury apod.) na úrovni souborového systému ve skupině po třech bitech. Obrázek 2.1: Přístupová práva souborového systému Pomocí ls -l názevsouboru lze přístupová práva zobrazit (viz také ukázku na straně 29): ls -l test.txt -rw-r bittler it11fa 208 bře 10 21:55 test.txt Soubor test.txt je běžný soubor (-). Jeho vlastníkem je uživatel bittler, který ho smí číst a měnit (rw-). Souboru je přidělena skupina it11fa. Všichni členové této skupiny smí soubor číst (r--). Ostatní uživatelé nemohou dělat nic, k souboru nemají žádná práva (---). V následujícím příkladu jsou představeny zvláštnosti v oprávnění souborů, v nichž jsou uložené databáze uživatelů a hesel: ls -ld /etc/passwd /etc/shadow -rw-r--r-- 1 root root 1561 lis 22 12:45 /etc/passwd -rw root shadow 1187 lis 22 18:33 /etc/shadow Soubor s databází uživatelů /etc/passwd mohou číst všichni uživatelé (r--), ale zapisovat do něj (rw-) může jen root. Přístup k souboru s hesly /etc/shadow pro čtení a zápis má jen root. Nikdo jiný (---) k němu žádný přístup nemá (také bez ohledu na skupinu: ---). Speciální práva: SUID, SGID a sticky bit Na následujícím příkladu si ukážeme, jak speciální práva 4 fungují: ls -ld /tmp /usr/bin/passwd /bin/wall drwxrwxrwt 1 root root 4096 srp 15 08:18 /tmp -rwsr-xr-x 1 root shadow srp 15 22:33 /usr/bin/passwd -rwxr-sr-x 1 root tty čer /usr/bin/wall Sticky bit Do adresáře /tmp mohou zapisovat všichni uživatelé. To znamená, že každý z nich tam může číst, vytvářet a mazat soubory. Protože je ale současně nastaven sticky bit (rwt), smí každý uživatel mazat jen ty soubory, které patří jemu. SUID u programů Soubor /usr/bin/passwd je přesněji řečeno program pro nastavení hesla. Pokud si chce uživatel změnit heslo, spustí tento program a zadá nové heslo. Uložit heslo do databáze hesel v souboru /etc/passwd znamená, že jsou potřeba práva zápisu na tento soubor. Těmi ale disponuje jen uživatel root (viz výše). Běžně se programy spouštějí vždy s právy toho uživatele, který je spustil. Pomocí speciálního práva SUID (angl. set user ID, nastavit číslo uživatele) se ale program passwd spustí s právy vlastníka souboru (zde je to root), což programu umožní do souboru s hesly zapisovat. 4 V literatuře a praxi se často používá slovo bit nebo příznak. V textu používáme jak speciální práva, tak bity. Jde o totéž. Pozn. překl. 55

56 LEKCE II SPRÁVA UŽIVATELŮ A OPRÁVNĚNÍ SGID u programů Speciální právo SGID (angl. set group ID, nastavit číslo skupiny) funguje podobně jako SUID. Při spuštění programu se použije GID jeho souboru a nikoliv GID uživatele, který ho spustil. Pro shora uvedený příklad platí, že pokud běžný uživatel spustí program /usr/bin/wall, je tento spuštěn s právy skupiny tty. Pomocí příkazu wall lze přihlášeným uživatelům posílat zprávy. SGID u adresářů Je-li SGID nastavený u adresářů, je souborům v adresáři nastavena skupina adresáře a nikoliv (jak je běžné) skupina uživatele, který soubor vytvořil. Pro správnou funkčnost SUID, GUID a sticky bitu je nutné, aby měl soubor nastavené právo spouštět 1. v případě SUID vlastníkem, 2. v případě GUID skupinou, 3. v případě sticky bitu ostatními. Pokud se při výpisu ls -l zobrazují jednotlivá speciální práva velkými písmeny (např. -rwsr-xr-x, drwxrwxrwt), pak není odpovídající právo ke spuštění nastaveno a speciální právo tudíž není aktivní Změna přístupových práv a vlastnictví K úpravám přístupových práv a vlastnictví souboru se používají následující příkazy: chmod Změnit přístupová práva. chown Změnit vlastnictví souboru. chgrp Změnit příslušnost ke skupině. Nastavení přístupových práv pomocí znakové notace Pro změnu přístupových práv pomocí znakové notace se mohou použít následující písmena a symboly: Kategorie uživatelů Práva Symboly u Vlastnictví (user, owner) r číst (read) + Přidat oprávnění g Členové skupiny (group) w zapisovat (write) - Odebrat oprávnění o Všichni ostatní uživatelé (others) x spouštět (execute) = Nastavena budou jen tato práva a Všechny tři kategorie (all) s SUID/SGID všechna ostatní budou odebrána t sticky bit (pokud byla nastavená) Příklad Pokud uživatel bittler chce, aby byl soubor přístupný ke čtení jen členům jeho primární skupiny it11fa a nikoliv uživatelům mimo skupinu, musí souboru pomocí chmod odebrat právo ke čtení všem ostatním (others). ls -l skript.sh -rw-r--r-- 1 bittler it11fa 904 bře 10 21:55 skript.sh chmod o-r skript.sh ls -l skript.sh -rw-r bittler it11fa 904 bře 10 21:55 skript.sh Aby mohl on a členové jeho skupiny skript spouštět, musí souboru ještě nastavit právo pro spuštění: chmod u+x,g+x skript.sh ls -l skript.sh -rwxrx bittler it11fa 904 bře 10 21:55 skript.sh Oba příkazy chmod by mohly být zkombinovány do jednoho: chmod u+x,g+x,o-r skript.sh Nastavení přístupových práv pomocí číselné notace Přístupová práva se pro každý soubor ukládají ve skupinách po třech bitech. Je-li oprávnění aktivní, je nastavený odpovídající bit. Příklad: Souboru test.txt mají být nastavena následující přístupová práva: Vlastník: Skupina: Ostatní: (rwx) číst, zapisovat, spouštět (r-x) číst, spouštět (r--) číst 56

57 2.2. OPRÁVNĚNÍ SOUBORŮ A JEJICH VLASTNICTVÍ Obrázek 2.2: Přístupová práva v číselné notaci Speciální práva nemají být nastavena. Číselný (oktalový, osmičkový) zápis práv se získá přečtením číslic označujících aktivní bity zprava doleva. Nastavení bitů podle výše uvedeného zadání se provede spuštěním chmod 0754 test.txt. Speciální práva nemají být nastavena, takže úvodní nulu lze vynechat: chmod 754 test.txt. Příklady pro číselnou a znakovou notaci Znaky Práva Oktalově Význam u=rw,g=r,o= rw-r Číst a měnit soubor smí pouze vlastník. Členové skupiny mohou soubor číst, všichni ostatní nemají žádný přístup. a=r,u+w rw-r--r Všichni uživatelé v systému mohou soubor číst, jen vlastník ho smí měnit. u=rwx,g=rx,o= rwxr-x Vlastník smí soubor číst, zapisovat do něj a spouštět ho. Členové skupiny mohou soubor číst a spouštět, ostatní nemají žádná práva. Kompletní příkazy pro soubor test.txt pak zní: Oktalová notace Znaková notace chmod 640 test.txt chmod u=rw,g=r,o= test.txt chmod 644 test.txt chmod a=r,u+w test.txt chmod 750 test.txt chmod u=rwx,g=rx,o= test.txt Přepínačem -R u příkazu chmod lze přístupová práva nastavit rekurzivně, tedy také ve všech podadresářích. Změna vlastnictví souborů Vlastnictví souborů smí měnit jen root! Pro změnu vlastníka souboru se použije příkaz chown: chown [Volby] Vlastník[:Skupina] názevsouboru Pro změnu skupiny, která smí k souboru přistupovat, se použije příkaz chgrp: chgrp [Volby] Skupina názevsouboru Příklad: Uživatelka janist se má stát novým vlastníkem souboru /tmp/test.txt: sudo ls -l /tmp/test.txt -rwxrw-r-- 1 bittler it11fa 2508 srp 21 21:55 /tmp/test.txt sudo chown janist /tmp/test.txt ls -l /tmp/test.txt -rwxrw-r-- 1 janist it11fa 2508 srp 21 21:55 /tmp/test.txt Potom se souboru přiřadí skupina it11fs: sudo chgrp it11fs /tmp/test.txt ls -l /tmp/test.txt -rwxrw-r-- 1 janist it11fs 2508 srp 21 21:55 /tmp/test.txt Pokud je potřeba změnit vlastníka souboru a také přiřazení skupiny, lze to provést jedním příkazem chown. Kromě jména uživatele je možné zadat také název skupiny, vzájemně se oddělují dvojtečkou: sudo chown janist:it11fs /tmp/test.txt Také příkazy chown a chgrp pracují rekurzivně, pokud je použit přepínač -R. 57

58 LEKCE II SPRÁVA UŽIVATELŮ A OPRÁVNĚNÍ Cvičení: Příprava na vypracování následujících úkolů: Vytvořte skupiny it11fa a it11se a uživatelské účty brunnefl a summerma. Jako root spusťte následující příkazy: groupadd -g 1010 it11fa groupadd -g 1020 it11se groupadd -g 2000 photo useradd -m -g it11fa -G photo brunnefl useradd -m -g it11se -G photo summerma echo "brunnefl:tajneheslo" chpasswd echo "summerma:tajneheslo" chpasswd Poznámka: Program chpasswd načítá uživatelské jméno a heslo ze standardního vstupu. Oba údaje jsou od sebe odděleny dvojtečkou, heslo se tedy zadává v čitelné formě jako běžný text. Použité příkazy si pokud možno zapište. 1. Doplňte do tabulky chybějící údaje: Přihlašovací Domovský Primární Sekundární Heslo jméno adresář skupina skupina brunnefl tajné summerma tajné 2. Nyní se v jiné konzoli přihlaste jako brunnefl. Změňte pracovní adresář na /tmp a pomocí echo Ahoj >testsoubor vytvořte soubor. Nastavte souboru testsoubor následující práva: Vlastník: číst, zapisovat, spouštět; skupina: číst; ostatní: žádná práva, speciální práva nenastavovat. Zadejte varianty příkazu chmod se znakovou a číselnou notací: Znaková notace: Číselná notace: 3. Přihlaste se v jiné konzoli jako summerma. Smí summerma číst obsah souboru /tmp/testsoubor? Pokud ano, jako brunnefl tomu zabraňte a odstraňte odpovídající práva. Pokud ne, jako brunnefl to povolte a přidejte odpovídající práva. Opět zadejte varianty příkazu chmod v obou notacích: Znaková notace: Číselná notace: Jak si ověříte, že jste úkol úspěšně splnili? 4. Krátce vysvětlete, co to znamená, když má adresář nastavený sticky bit. 58

59 2.2. OPRÁVNĚNÍ SOUBORŮ A JEJICH VLASTNICTVÍ 5. Právo zápisu do adresářů. Jako root proveďte následující: mkdir /testovaciadresar chmod 777 /testovaciadresar echo zdravi vas root > /testovaciadresar/testsoubor chmod 644 /testovaciadresar/testsoubor 6. Přihlaste se nyní jako brunnefl. Proč nemůžete do souboru testsoubor zapisovat, např. takto? echo ahoj >> /testovaciadresar/testsoubor 7. Pokuste se smazat soubor pomocí rm -f /testovaciadresar/testsoubor. Zdůvodněte, co se stalo! 8. Nastavte nyní jako root adresáři /testovaciadresar sticky bit. Příkaz: Vytvořte jako brunnefl soubor: echo brunnefl > /testovaciadresar/brunnefl Vytvořte jako summerma soubor: echo summerma > /testovaciadresar/summerma 9. Smí summerma smazat soubor uživatele brunnefl (a obráceně)? Svou odpověď zdůvodněte. 10. Jako summerma se příkazem newgrp photo přidejte do skupiny photo a proveďte následující příkaz: echo summerma > /testovaciadresar/summerma-photo Které skupině bude tento soubor přiřazen? Umožněte této skupině číst a zapisovat soubor a zakažte jí všechno ostatní: chmod g=rw,o= /testovaciadresar/summerma-photo Přihlaste se jako brunnefl, přidejte se pomocí newgrp photo do skupiny photo a otestujte pomocí echo brunnefl >> /testovaciadresar/summerma-photo jestli má brunnefl právo zápisu do tohoto souboru. 59

60 LEKCE II SPRÁVA UŽIVATELŮ A OPRÁVNĚNÍ 11. Úklid: Smažte jako root vytvořené skupiny, uživatele a adresáře: userdel -r brunnefl userdel -r summerma groupdel it11fa groupdel it11se groupdel photo rm -r /testovaciadresar Otázky a úkoly 1. Přeložte následující příkazy ze znakové notace do číselné (oktalové). chmod o=,g=r,u=rw test.txt chmod a=rw,g-w,o-r test.txt 2. Přeložte následující příkazy z oktalové notace do znakové. chmod 751 test.txt chmod 642 test.txt 3. Příkaz ls -l testsoubor aktuálně zobrazuje následující informace: -r-xr-xr-x 1 janist it11fs 179 čec 27 15:58 testsoubor Zadejte kompletní příkaz, kterým uživatelka janist změní práva souboru testsoubor tak, že skupina ho bude moci jen číst, vlastník ho bude moci číst a zapisovat do něj a všichni ostatní nebudou mít k souboru žádná práva. Příkaz zadejte ve znakové i číselné notaci: 4. Pročtěte si následující výpis: ls -l test.txt -rwxr-xr-- 1 bittler it11fa 208 bře 10 21:55 test.txt příkaz1 ls -l test.txt -rw-r--r-- 1 bittler it11fa 208 bře 10 21:55 test.txt příkaz2 ls -l test.txt -rw bittler it11fa 208 bře 10 21:55 test.txt Jaké dva příkazy byly spuštěny a provedeny? Zadejte je v kompletním znění: příkaz1 příkaz2 5. K čemu se používají sticky bit, SUID bit a GUID bit? 60

61 2.2. OPRÁVNĚNÍ SOUBORŮ A JEJICH VLASTNICTVÍ 6. Jak se vlastně sticky bit, SUID bit a GUID bit nastavují? Uveďte příklady v číselné a znakové notaci. 7. Přečtěte si následující výpis: ls -ld /testovaciadresar drwxrwxrwt 1 root root 4096 Lis 12 19:25 /testovaciadresar Jaký problém vidíte a jak ho vyřešíte? 8. Pomocí následující, trochu objemné, sekvence příkazů se zobrazí výpis příkazu ls s vlevo vypsanými právy v osmičkové soustavě. Vyzkoušejte to! ls -l awk '{k=0; for(i=0;i<=8;i++)k+=((substr($1,i+2,1)~/[rwx]/)*2^(8-i)); if(k)printf("%0o ",k);print}' 61

62 LEKCE II SPRÁVA UŽIVATELŮ A OPRÁVNĚNÍ 62

63 Kapitola 3 Lekce III Skripty usnadňují práci Tématem této části je vytváření skriptů a práce s nimi. Nejprve si ukážeme, jak skript vytvořit a nastavit mu příznak ke spuštění, aby se dal rovnou spouštět. Abyste mohli programovat, měli byste znát proměnné a umět s nimi pracovat. K tomu jsou potřeba také parametry skriptu. Po těchto základních dovednostech se zaměříme na vytváření skupin pro každou třídu, ale napřed se naučíme využívat cykly, protože nebudeme zakládat jen jednu skupinu, nýbrž mnoho skupin. Abychom mohli provádět různé zkoušky, např. jestli nějaký soubor vůbec existuje, potřebujeme ovládat podmínky a reagovat na ně. Až budeme mít skupiny vytvořené, založíme uživatelské účty pro konkrétní uživatele. K tomu budeme předtím potřebovat jména žáků, která zapíšeme určitým standardizovaným způsobem. Každý žák bude mít své vlastní heslo, které musíme vygenerovat. Aby mohl učitel číst a zapisovat do všech adresářů, musí být vytvořen uživatel s rolí správce, která to umožní. Obsah 3.1 Úvod do programování skriptů První skript Spuštění skriptu Proměnné Parametry Vytváření skupin Načítání souboru po řádcích Cykly Podmínky Vícenásobný výběr Záměna znaků Zjištění dostupných skupin Vytváření uživatelů Vygenerování uživatelských jmen Generování hesel Vytvoření uživatelských účtů žákům Vytvoření uživatelských účtů učitelům Vytvoření superuživatele Otázky

64 LEKCE III SKRIPTY USNADŇUJÍ PRÁCI 3.1 Úvod do programování skriptů V posledních kapitolách jste se naučili používat a spouštět různé příkazy. Jistě jste zjistili, že pokud opakovaně používáte stejné příkazy, je s tím spojeno množství ruční práce, protože je nutné měnit jen některé parametry. Tu obtěžující ruční práci lze odstranit využitím malých skriptů a z toho plynoucí automatizací. Skripty jsou v nejjednodušší formě příkazy, které se zapíší do textového souboru a postupně jsou zpracovávány. Skripty, které si ukážeme v této kapitole, jsou shellové (Bash) skripty, jsou tedy závislé na možnostech shellu Bash. Existuje více možností, jak skripty vytvářet. Lze použít jakýkoliv shell (např. Korn, Thompson, C, Bash, Z ), který je v systému nainstalován. Ale využít lze také jakýkoliv interpretovaný jazyk jako Perl, Python, Ruby, Lua, Rexx a další. Podle jazyka se liší nabídka funkcí, možnosti připojení externích knihoven a samozřejmě také rychlost vykonávání. Pro naše účely ale bohatě stačí možnosti Bashe První skript První skript zobrazí aktuální datum a jméno uživatele, který skript spustil. #!/bin/bash echo 'Dnes je :' `date` echo 'Přihlášený uživatel :' $USER Dnes je : So srp 16 16:33:31 CEST 2014 Přihlášený uživatel : uzivatel První řádek začíná znaky #! a označuje se jako Shebang (nebo také hash-bang) 1. Tímto řádkem je řečeno, kterým programem se má skript zpracovat. Pak následuje konec řádku. Od řádku dvě už následují patřičné příkazy skriptu Spuštění skriptu Aby mohl být skript vůbec spuštěn, musí mít soubor nastavené právo pro spuštění ( execute ) (viz kapitola na straně 55). chmod +x prvniskript Skript pak můžete spustit přímo v adresáři pomocí./prvniskript. Pokud se nachází v adresáři, který je uvedený v proměnné PATH, není potřeba zadávat žádnou cestu a stačí jen jeho název Proměnné Proměnné jsme zmínili už na straně 19. Například proměnnou HOME, která standardně obsahuje absolutní cestu k domovskému adresáři. #!/bin/bash echo 'Domovský adresář:' $HOME Domovský adresář: /home/uzivatel Má-li se obsah proměnné vypsat na obrazovku, pak se před jméno proměnné píše znak $. Nová proměnná se vytvoří uvedením jména a přiřazením obsahu. Pokud jsou součástí obsahu mezery, musí být uveden v uvozovkách. #!/bin/bash mojepromenna="obsah proměnné" echo 'mojepromenna:' $mojepromenna mojepromenna: Obsah proměnné Zobrazení všech proměnných Příkazem env se zobrazí všechny proměnné, které se používají v aktuálním sezení Bash shellu. Pokud chcete nějakou proměnnou odstranit, použijte příkaz unset. Které uvozovky použít? Pokud text, který představuje jeden úsek či hodnotu, obsahuje mezery, musí být uveden v uvozovkách, protože jinak shell nepozná, co patří k sobě (mezera běžně slouží jako oddělovač). Říká se tomu quoting, quote je angl. uvozovka. Existují dvě možnosti: "Jeden úsek textu" Dvojitými horními uvozovkami se text vyznačí jako jeden celek. Shell interpretuje obsah a nahradí např. proměnné jejich obsahem. 'Jeden úsek textu' Jednoduchými horními uvozovkami (apostrofy) se text také vyznačí jako jeden celek, shell ale obsah nezpracovává. 1 Pozn. překl. 64

65 3.1. ÚVOD DO PROGRAMOVÁNÍ SKRIPTŮ #!/bin/bash echo 'dvojité uvozovky :' "$HOME" echo 'jednoduché uvozovky :' '$HOME' dvojité uvozovky : /home/uzivatel jednoduché uvozovky : $HOME Jednoznačné názvy proměnných Nejednoznačná jména proměnných mohou způsobit různé problémy, viz následující příklad: #!/bin/bash Linux="Linux" Essentials="Essentials" LinuxEssentials="Kurz $Linux $Essentials" echo "$LinuxEssentials" echo "${Linux}Essentials" Kurz Linux Essentials LinuxEssentials Jednoznačný výběr konkrétní proměnné lze provést uzavřením jejího jména do složených závorek. Proměnné jsou beztypové! V Bashi nemají proměnné žádný speciální typ jako třeba v Javě. Podle toho, jaký typ je očekáván, je textový řetězec převeden např. na číslo. Pokud se převod nezdaří, zobrazí se chybové hlášení. Důležité proměnné v Bashi $# Počet parametrů aktuálního skriptu. $0 Název skriptu. $1-$9 Prvních devět parametrů skriptu. $* Všechny parametry (použijte "$*"). Všechny parametry (použijte ale každý parametr bude uzavřený do uvozovek. $? Návratová hodnota (exit status) příkazu (více k tématu na straně 70). $! PID posledního příkazu (více k tématu na straně 23). $$ PID aktuálního skriptu Parametry Skriptu můžete podobně jako každému příkazu předávat parametry (viz kapitola na straně 23). Parametry jsou postupně očíslovány. První má číslo $1, druhý $2 atd. Tímto způsobem lze adresovat devět parametrů. Proměnná $0 obsahuje název skriptu. Jako příklad máme následující skript: #!/bin/bash echo 0 : $0 echo 1 : $1 echo 2 : $2 echo 3 : $3 echo 4 : $4 Spuštěním s parametry bspshowparam param1 param2 param3 skript vypíše: 0 : bspshowparam 1 : param1 2 : param2 3 : param3 4 : Výpočty s proměnnými Obsahují-li proměnné jen celá čísla, lze s nimi snadno provádět jednoduché výpočty. Slouží k tomu příkaz let, který používá aritmetiku celých čísel. 65

66 LEKCE III SKRIPTY USNADŇUJÍ PRÁCI #!/bin/bash a=7 b=5 let x=a+b echo 'a+b :' $x let x=a-b echo 'a-b :' $x let x=a/b echo 'a/b :' $x let x=a*b echo 'a*b :' $x a+b : 12 a-b : 2 a/b : 1 a*b : 35 Místo let lze používat také $((...)). #!/bin/bash a=7 b=5 x=$(($a+$b)) echo 'a+b :' $x x=$(($a-$b)) echo 'a-b :' $x x=$(($a/$b)) echo 'a/b :' $x x=$(($a*$b)) echo 'a*b :' $x a+b : 12 a-b : 2 a/b : 1 a*b : 35 Další možnosti ohledně výpočtů nabízí příkaz expr. Zadání výpočtu se příkazu expr předává pomocí argumentů, proto se hvězdička pro násobení musí uzavřít do apostrofů, jinak by ji shell zpracoval (expandoval). #!/bin/bash a=7 b=5 x=`expr $a + $b` echo 'a+b :' $x x=`expr $a - $b` echo 'a-b :' $x x=`expr $a / $b` echo 'a/b :' $x x=`expr $a '*' $b` echo 'a*b :' $x a+b : 12 a-b : 2 a/b : 1 a*b : 35 Pro práci s desetinnými čísly se musí použít příkaz bc. V takovém případě se výstup příkazu echo rourou předává přímo do vstupu příkazu bc. #!/bin/bash echo '44/3' bc -l echo 'scale=2; 44/3' bc -l Přesměrování vstupu a výstupu Mnoho příkazů disponuje třemi vstupními a výstupními kanály: Kanál 0: Standardní vstup stdin. Za standardní vstup se považuje klávesnice. Kanál 1: Standardní výstup stdout. Standardním výstupem je obrazovka. Kanál 2: Standardní chybový výstup stderr. Standardním chybovým výstupem je obrazovka. Přesměrování výstupu Výstup se přesměruje pomocí znaku >, resp. >>. Příklady: ls l > soubor1 Výpis příkazu ls l nesměřuje na obrazovku, nýbrž do souboru soubor1. Pokud soubor1 ještě neexistuje, bude vytvořen. Pokud už existuje, bude přepsán. 66

67 3.1. ÚVOD DO PROGRAMOVÁNÍ SKRIPTŮ Obrázek 3.1: Přesměrování vstupu a výstupu ls l >> soubor1 Původní obsah soubor1 nebude přepsán. Výstup z příkazu bude připojen za obsah souboru soubor1. Přesměrování vstupu Vstup pro příkaz může být přesměrován z klávesnice na soubor. Příklad: Příkaz wc čte data ze standardního vstupu (kterým je klávesnice) a vypíše na obrazovku počet všech řádek, slov a znaků. Přesměrováním vstupu můžeme získat počet řádků, slov a znaků konkrétního souboru. wc < soubor1 Zobrazí na obrazovce počet řádků, slov a znaků souboru soubor1. Současné přesměrování vstupu i výstupu wc < soubor1 > soubor2 Zapíše počet řádků, slov a znaků souboru soubor1 do soubor2. Přesměrování chybového výstupu Navzdory přesměrování výstupu do souboru se chybová hlášení stále zobrazují na obrazovce. Pokud je chcete také přesměrovat do souboru, musíte použít následující zápis. Příklad: wc < soubor1 > soubor2 2> souborchyby Výraz 2> souborchyby přesměruje chybová hlášení do souboru souborchyby. Číslice 2 v zápisu 2> popisuje standardní chybový výstup (označený jako kanál 2). Konstrukcí ls l > vystup 2>&1 se oba výstupní kanály přesměrují do souboru vystup. Přesměrování výstupu příkazu na vstup následujícího příkazu Přesměrování výstupu jednoho příkazu na vstup dalšího příkazu se provádí pomocí roury (angl. pipe, pipeline). Symbol pro rouru je. Předávaná data se přitom vůbec nezobrazí na obrazovce. Příklad: ls l wc Výstup příkazu ls l se předá jako vstup příkazu wc. Výstup příkazu wc se zobrazí na obrazovce. Pokud byste chtěli třeba kvůli kontrole chyb sledovat i výstup, můžete jeho výpis duplikovat příkazem tee a uložit do souboru. Příklad: ls tee ls_vysledek sort Obrázek 3.2: Duplikování výpisu dat 67

68 LEKCE III SKRIPTY USNADŇUJÍ PRÁCI Výsledek, vytvořený příkazem ls, se pomocí příkazu tee uloží do souboru ls_vysledek. Kromě toho se předá příkazu sort (viz obrázek 3.2 na předchozí straně). Here document Standardní vstup je přesměrován na tzv. here document, což je posloupnost řádků, které lze upravovat na aktuálním místě vstupu skriptu (angl. here je zde, tady). V praxi se to používá pro ruční vložení dat do běžícího skriptu (místo načítání ze souboru). příkaz <<značka Vložený text... Vložený text... Vložený text... značka Použitá značka musí být na konci řádku a před ní nesmí být mezera nebo jiný prázdný znak. Here document předává konce řádků (\n) dál. V případě, že je ke čtení použit stdin, odpovídají tyto konce stisku klávesy Enter. Příklad: cat <<EOM Ahoj, já jsem here document: $(date) EOM Ahoj, já jsem here document: So srp 16 16:33:31 CEST 2014 Cvičení: 1. Vytvořte malý skript, kterému zadáte jako parametr dvě čísla. Skript je jednou sečte, jednou odečte a výsledek pokaždé zobrazí. 2. Najděte pomocí manuálové stránky a internetu další standardní operátory jako +, -, *, /,, poznačte si je a vyzkoušejte v malém skriptu. 3. Vytvořte si skript bspshowparam uvedený v a spusťte ho: bspshowparam "A B C D" bspshowparam A 'D C' D bspshowparam a b c d e Co se stalo? 4. Vyřešte střídavě pomocí let, přímo v Bashi pomocí ((...)) a pomocí expr následující úkoly: * / Spočítejte pomocí bc následující úkoly s pěti desetinnými místy: / Přiřaďte proměnné var postupně následující hodnoty přesně tak, jak jsou uvedené za sebou. Po každém přiřazení si obsah proměnné zobrazte, abyste viděli, zda vše proběhlo správně. Obsah proměnné "Obsah proměnné" $var $HOME 68

69 3.2. VYTVÁŘENÍ SKUPIN 3.2 Vytváření skupin K automatickému vytvoření uživatelských účtů pro žáky a učitele bude výhodné vytvořit si skript. Informace o žácích budou získány ze školního informačního systému v následujícím formátu. Sloupce jsou odděleny pomocí dvojtečky : a mají tento význam. Příjmení:Jméno:Třída Pyka:Johannes:IT11FS Gerber:Dennis:IT11FS Ewender:Nils:IT11FS Feiler:Matthias:IT11FS Wilms:Norman:IT11FS Hollmann:Michael:IT11FS Kreiselmeier:Jens:IT11FS Mannweiler:Christopher:IT11FS Pranckl:Klaus:IT11FS Liepold:Michael:IT11FS Aurich:Karl:IT11FS Meyer:Frank:IT11FS Jakob:Jens:IT11FS Bischoff:Christian:IT11FS Lehnert:Michael:IT11FS Ibanez:Dennis:IT11FS Maier:Thomas:IT11FS Brandes:Martin:IT11FS Flaim:Hendrik:IT11FS Kappl:Tony:IT11FS Volke:Christian:IT11FS Jani:Steffi:IT11FS Weniger:Herbert:IT11FS Gerlicher:Julia:IT11FS Manfred:Rolf:IT11FA Mammensohn:Friedl:IT11FA Bittl:Erwin:IT11FA Kruppweis:Hubert:IT11FA Vogg:Ralf:IT11FA Schmidbauer:Walter:IT11FA Brunner:Florian:IT11FA Daniels:Martin:IT11FA Reithmayer:Richard:IT11FA Pimmer:Christian:IT11FA Schlecht:Daniel:IT11FA Hohmann:Michael:IT11FA Bode:Dirk:IT11FA Grill:Dominik:IT11FA Perner:Florian:IT11FA Saumweber:David:IT11FA Kirsch:Bernhard:IT11FA Joachim:Maximilian:IT11FA Karlstedt:Otto:IT11FA Lauxtermann:Conny:IT11FA Lendner:Frank:IT11FA Bork:Johann:IT11FA Unterer:Justus:IT11FA Hetzenegger:Sven:IT11FA Wanzinger:Guido:IT11SE Summer:Maximilian:IT11SE Schmied:Burkhard:IT11SE Metzker:Alexander:IT11SE Zehnter:Herbert:IT11SE Mittelholz:Stefan:IT11SE Helff:Marcus:IT11SE Ruhland:Christian:IT11SE Reiter:Gerhard:IT11SE Vaitl:Andreas:IT11SE Burneleit:Andreas:IT11SE Ehmer:Marc:IT11SE Sertl:Andor:IT11SE Hay:Thomas:IT11SE Leyendecker:Bernd:IT11SE Grabisch:Rainer:IT11SE Dusl:Alfred:IT11SE Friedrich:Stefan:IT11SE Mair:Christian:IT11SE Beslmeisel:Johann:IT11SE Weidner:Hubert:IT11SE Figl:Ingo:IT11SE Krause:Markus:IT11SE Meschenmoser:Thomas:IT11SE Soubor: zaci.txt (obsahuje také prázdné řádky) Načítání souboru po řádcích Soubor s informacemi o žácích je strukturovaný tak, že pro každého žáka je použit jeden řádek. Proto je důležité zpracovávat obsah souboru po řádcích a data z nich extrahovat. K načítání po řádcích použijeme cyklus, ale nejprve si vysvětlíme všeobecné možnosti cyklů. Aby skripty a hlavně jejich výstupy byly krátké a přehledné, v následujících příkladech budeme pracovat jen se třemi žáky. Pyka:Johannes:IT11FS Manfred:Rolf:IT11FA Wanzinger:Guido:IT11SE Soubor: sch.txt Cykly V Bashi existuje více možností, jak pracovat s cykly. Cyklus for slouží ke zpracování seznamu, přičemž se pro každý záznam seznamu vykonají instrukce uvedené v těle cyklu. Všeobecná syntaxe vypadá následovně: for <proměnná> in <hodnoty>; do # instrukce done Poznámka: Seznam hodnot se ukončuje středníkem, za kterým stále na tomtéž řádku stojí do. V následujícím příkladu proběhne cyklus s hodnotami 1 až 5. #!/bin/bash for i in ; do echo -n "$i " done Lze ale také použít libovolné textové řetězce. 69

70 LEKCE III SKRIPTY USNADŇUJÍ PRÁCI #!/bin/bash for i in Merkur Venuše Země Mars Jupiter Saturn Uran Neptun; do echo -n "$i " done Merkur Venuše Země Mars Jupiter Saturn Uran Neptun Od Bashe verze 4 je pro číselné cykly možné použít také následující konstrukci. Její syntaxe zní: {<Startovní hodnota>..<koncová hodnota>..<délka kroku>} Délku kroku můžete vypustit, pokud má hodnotu 1. #!/bin/bash for i in { }; do echo -n "$i " done Pokud zadáte adresář a/nebo soubor pomocí zástupných znaků, bude se pracovat se seznamem souborů. #!/bin/bash for file in /etc/ali*; do echo -n "$file " done /etc/aliases Cyklus for může být stejně jak je běžné v jiných programovacích jazycích použit jako čistě iterační. Syntaxe by byla ((<Inicializace>;<Podmínka>;<Délka kroku>)) #!/bin/bash for (( i=1; i<=5; i++ )); do echo -n "$i " done Kromě cyklu for nabízí Bash možnost použít cyklus while. Obecná syntaxe zní: while [ Podmínka ] ; do # Instrukce done Cyklus poběží tak dlouho, dokud bude podmínka splněná, tedy bude vracet logickou hodnotu true. Původně byl na podobné testy určen příkaz test. Jeho zápis byl ale zjednodušen a nahrazen hranatými závorkami, takže může být použit v cyklech. Tabulka 3.1 na následující straně zobrazuje výběr podmínkových výrazů. Reakce na návratovou hodnotu Každý program při ukončení vrací tzv. návratovou hodnotu (angl. return code, exit status, ve Windows error level). Ta se uchovává v proměnné $? a může být použita pro následné akce. příkaz && příkaz1 Pomocí && je návratová hodnota vyhodnocena a pokud se rovná nule, je spuštěn program příkaz1. příkaz příkaz2 Pomocí je hodnota vyhodnocena a pokud se nerovná nule, je spuštěn příkaz2. Následují další příklady k podmínkovým výrazům. #!/bin/bash a=7; b=5 test $a -gt $b && echo true echo false true Jakmile test vyhodnotí, že podmínka platí, jako návratová hodnota se předá 0, jinak 1. Příkaz po && bude spuštěn jen při vrácené nule, příkaz po zase jen tehdy, když nula vrácena nebude. #!/bin/bash a="xxx"; b="yyy" test $a = $b && echo true echo false test $a!= $b && echo true echo false false true 70 S odpovídající podmínkou můžete cyklus while použít jako iterační cyklus.

71 3.2. VYTVÁŘENÍ SKUPIN #!/bin/bash x=1 while [ $x -le 5 ] ; do echo -n "$x " x=$(( $x + 1 )) done Další způsob použití cyklu while je řádkové načítání obsahu souboru; k tomu slouží příkaz read. Zdrojový soubor se zadává přesměrováním vstupu za koncem cyklu done. Přesně tuto formu potřebujeme, abychom načetli data o žácích. Poznámka: Všimněte si, jak je pro čtení ze souboru sch.txt použito přesměrování vstupu. #!/bin/bash while read radek ; do echo $radek done < sch.txt Pyka:Johannes:IT11FS Manfred:Rolf:IT11FA Wanzinger:Guido:IT11SE Pokud nyní nastavíte oddělovač sloupců IFS (angl. Internal Field Separator), můžete celý řádek hned rozložit na požadované části. Pro každý sloupec budete potřebovat jednu proměnnou, do níž obsah sloupce uložíte. #!/bin/bash IFS=":" while read prijmeni jmeno trida ; do echo "Žák: $prijmeni, $jmeno, $trida" done < sch.txt Žák: Pyka, Johannes, IT11FS Žák: Manfred, Rolf, IT11FA Žák: Wanzinger, Guido, IT11SE Výraz Příklad Popis Tabulka 3.1: Výběr podmínkových výrazů Čísla -eq [ $a -eq $b ] Testuje, zda jsou si hodnoty proměnných rovny. -ne [ $a -ne $b ] Testuje, zda jsou hodnoty proměnných různé. -lt [ $a -lt $b ] Testuje, zda je hodnota první proměnné menší než druhé. -le [ $a -le $b ] Testuje, zda je hodnota první proměnné menší nebo rovna druhé. -gt [ $a -gt $b ] Testuje, zda je hodnota první proměnné větší než druhé. -ge [ $a -ge $b ] Testuje, zda je hodnota první proměnné větší nebo rovna druhé. Textové řetězce -z [ -z $z ] Testuje, zda je textový řetězec prázdný. -n [ -n $z ] Testuje, zda není textový řetězec prázdný. = [ $x = $z ] Testuje, zda jsou si textové řetězce rovny.!= [ $x!= $z ] Testuje, zda jsou textové řetězce různé. Soubory -d [ -d $f ] Testuje, zda jde o adresář. -e [ -e $f ] Testuje, zda soubor/adresář existuje. -f [ -f $f ] Testuje, zda jde o normální soubor. -r [ -r $f ] Testuje, zda je soubor čitelný, resp. zda k tomu má uživatel práva. -s [ -s $f ] Testuje, zda je soubor neprázdný. -w [ -w $f ] Testuje, zda lze do souboru zapisovat, resp. zda k tomu má uživatel práva. -nt [ $g -nt $f ] Testuje, zda je první soubor novější než druhý. -ot [ $g -ot $f ] Testuje, zda je první soubor starší než druhý. Cvičení: 1. Vyzkoušejte uvedené příklady! 2. Vytvořte cyklus, jehož výstupem bude následující: 1 : 2 : 3 : 4 : 5 : 6 : 3. Vypište pomocí cyklu čísla od 10 do Počítejte cyklem od 100 do 10, použijte v těle cyklu test a číslo vypište jen tehdy, je-li menší než

72 LEKCE III SKRIPTY USNADŇUJÍ PRÁCI 5. Napište malý skript, který prohodí pořadí jména a příjmení. 6. Napište malý skript, který vypíše jen žáky ze třídy IT11SE Podmínky Pokud soubor sch.txt neexistuje, zobrazí se chybové hlášení. Správným dotazem ale můžete ještě předem zjistit, jestli je soubor k dispozici. Slouží k tomu konstrukce If Else Instrukce. Pro podmínky se používají také výrazy z tabulky 3.1 na předchozí straně. Obecná syntaxe vypadá takto: if [ podmínka ]; then # Instrukce pro splnění podmínky else # Instrukce pro nesplnění fi Blok else je volitelný a nemusíte ho uvádět. Podmínky podléhají stejným pravidlům jako v případě cyklu while. #!/bin/bash touch testsoubor if [ -r testsoubor ]; then echo Soubor existuje else echo Soubor neexistuje fi Soubor existuje Vícenásobný výběr Podmínky if else lze libovolně větvit a rozvíjet. Jakmile dosáhnete určité složitosti, začnou být nepřehledné. K vyřešení této situace se používá konstrukce case. case $promenna in hodnota1) # nějaké instrukce ;; hodnota2) # nějaké instrukce ;; hodnota3) # nějaké instrukce ;; *) # pro všechny ostatní ;; esac Blok case se prochází shora dolů. Pokud obsah proměnné odpovídá některé z uvedených hodnot, provedou se odpovídající instrukce (až k ;;) a potom se zpracování bloku ukončí. Pokud se obsah proměnné neshoduje se žádnou uvedenou hodnotou, vykoná se univerzální blok označený hvězdičkou *. V následujícím příkladu se do proměnné var uloží hodnota Hugo. Potom se v bloku case provede odpovídající příkaz (zde je to echo Hugo...). Bloky Peter, Uschi a * se nevykonají. var=hugo case $var in Peter) echo Peter... ;; Hugo) echo Hugo... ;; Uschi) echo Uschi... ;; *) echo Nenalezeno... ;; esac Hugo... 72

73 3.2. VYTVÁŘENÍ SKUPIN Hodnotu je také možné zadat přímo klávesnicí. Příkazem read se do proměnné uloží obsah standardního vstupu. read var case $var in Peter) echo Peter... ;; Hugo) echo Hugo... ;; Uschi) echo Uschi... ;; *) echo Nenalezeno... ;; esac Dostupnost souboru s informacemi o žácích Skript pro načtení informací o žácích může být následujícím způsobem přepracován. #!/bin/bash if [ -r sch.txt ]; then IFS=":" while read prijmeni jmeno trida ; do echo "Žák: $prijmeni, $jmeno, $trida" done < sch.txt else echo Soubor sch.txt nebyl nalezen! fi Žák: Pyka, Johannes, IT11FS Žák: Manfred, Rolf, IT11FA Žák: Wanzinger, Guido, IT11SE Pokud použijete vyhledávače, najdete na internetu ještě další řešení, jak načítat soubor po řádcích. Následuje často ukazovaný příklad, který je ale komplexnější, vyžaduje externí příkazy (cut, echo), a proto je značně pomalejší. Tím se ale nebudeme dále zabývat. #!/bin/bash for i in $(cat sch.txt); do prijmeni=$(echo $i cut -d: -f1) jmeno=$(echo $i cut -d: -f2) trida=$(echo $i cut -d: -f3) echo Žák: $jmeno, $prijmeni, $trida done Žák: Johannes, Pyka, IT11FS Žák: Rolf, Manfred, IT11FA Žák: Guido, Wanzinger, IT11SE Cvičení: Vyzkoušejte všechny uvedené příklady! Záměna znaků Nyní máme k dispozici data pro vytvoření třídních skupin. Bylo dohodnuto, že názvy skupin (zde označení třídy) budou používat malá písmena. Vychází se také z toho, že označení třídy neobsahuje žádné speciální znaky (např. diakritiku), jen A Z a 0 9. Znaky můžete převést pomocí příkazu tr (viz kapitola na straně 97). Obecná syntaxe je tato: tr řetězec1 řetězec2 Tím bude znak z řetězce1 nahrazen znakem z odpovídající pozice v řetězci2. V příkladu bude písmeno A nahrazeno číslicí 1, B číslicí 2 atd. #!/bin/bash echo ABCDEF tr 'ABCDEF' '12345' Určité posloupnosti znaků mají už definovány své zkratky, následuje jejich výběr: [:alnum:] Znaky a číslice. [:blank:] Bílé znaky (mezery, tabulátory, ). 73

74 LEKCE III SKRIPTY USNADŇUJÍ PRÁCI [:digit:] Číslice. [:lower:] Malá písmena. [:upper:] Velká písmena. V následujícím příkladu budou v proudu všechna velká písmena převedena na malá: #!/bin/bash str="it11se" mala=`echo $str tr '[:upper:]' '[:lower:]'` echo $str ' -> ' $mala IT11SE -> it11se Cvičení: Vytvořte převodní pravidlo pro tr, které zajistí, že podivná jména souborů (s mezerami, zvláštními znaky nebo smíchanými malými a velkými písmeny) budou převedena na nová, psaná malými písmeny a bez zvláštních znaků nebo mezer Zjištění dostupných skupin V souboru s informacemi o žácích se pravidelně objevuje třída. To znamená, že nelze použít každý záznam pro vytvoření skupiny. Pokud skupina již existuje, zobrazí se při pokusu o její vytvoření chyba addgroup: Skupina xyz již existuje. Proto je potřeba před každým vytvořením testovat, zda skupina náhodou už neexistuje. Jak je napsáno v kapitole (více k tématu na straně 49), všechny skupiny jsou uložené v souboru /etc/group. Příkazem grep snadno zjistíte, jestli skupina existuje. Použije se k tomu regulární výraz ^it11se:. Ten znamená: Hledej na začátku řádku výraz it11se následovaný dvojtečkou. Více k příkazu grep a regulárním výrazům najdete na straně 95. #!/bin/bash str="it11se" echo $str grep "^$str:" /etc/group >/dev/null \ echo "Skupinu lze vytvořit" it11se Skupinu lze vytvořit Příkaz grep vrací jako návratovou hodnotu nulu, pokud je záznam nalezen. Pokud nalezen není, může být následně pomocí založena nová skupina. #!/bin/bash echo "Vytvořit třídy " if [ -r sch.txt ]; then IFS=":" while read prijmeni jmeno trida ; do kl=`echo $trida tr '[:upper:]' '[:lower:]'` grep "^$kl:" /etc/group >/dev/null \ sudo groupadd $kl done < sch.txt fi Cvičení: Upravte skript tak, aby vytvořil všechny skupiny (třídy), které jsou dostupné v souboru s informacemi o žácích. 3.3 Vytváření uživatelů Jakmile máte vytvořeny skupiny, můžete zakládat uživatelské účty. Postup je následující: 1. načtení souboru s žáky již vyřešeno, 2. vygenerování uživatelských jmen žáků (přihlašovací jména), 3. přidání uživatelů a přiřazení do odpovídajících skupin, 4. sestavení seznamů s uživatelskými jmény a hesly. 74

75 3.3. VYTVÁŘENÍ UŽIVATELŮ Vygenerování uživatelských jmen Existuje více možností, jak sestavit uživatelské přihlašovací jméno. Oblíbené jsou dvě možnosti: 1. šest písmen příjmení a dvě písmena křestního jména, vše malými znaky bez diakritiky; z Hollmann, Michael vznikne hollmami, 2. celé příjmení + tečka + celé křestní jméno (vše malými písmeny a bez diakritiky); z Hollmann, Michael vznikne hollmann.michael. Pokud je přihlašovací jméno už obsazeno, připojuje se číslice, aby se zachovala jedinečnost jména. To ale v našem případě nenastalo, takže pracujeme s jednoduchou variantou. Používáme druhou variantu prijmeni.jmeno. Upravíme si skript použitý pro vytváření skupin: #!/bin/bash echo "Vytvoření uživatele" if [ -r sch.txt ]; then IFS=":" while read prijmeni jmeno trida ; do kl=`echo $trida tr '[:upper:]' '[:lower:]'` ke=`echo $prijmeni.$jmeno tr '[:upper:]' '[:lower:]'` echo $ke done < sch.txt fi Vytvoření uživatele pyka.johannes manfred.rolf wanzinger.guido I v tomto případě je potřeba ověřit, zda nově zakládaný uživatel už neexistuje. Použije se stejný mechanismus jako v případě ověřování skupiny. Cvičení (pro šikovné): Vytvořte skript, který v případě duplicitních záznamů vytvoří přihlašovací jméno s rozlišovací číslicí Generování hesel Všechny potřebné hodnoty až na jednu můžeme stanovit na základě dříve získaných informací. Tou jedinou je heslo. Existuje více možností, jak heslo vygenerovat. Oblíbenou hodnotou pro první heslo bývá datum narození nebo nějaká náhodná hodnota. Datum narození žáků ale nemáme k dispozici, takže tato možnost odpadá. Náhodné hodnoty se dají číst z virtuálního souboru /dev/urandom. Jde o binární hodnoty mezi 0 a 255, tedy také o znaky, které nelze zobrazit, protože nemají žádný viditelný symbol. Také se nedají zadat pomocí klávesnice. Pomocí programu tr zajistíme, že ty znaky, které neodpovídají konkrétnímu pravidlu, nebudou použity. Vytvořené heslo smí obsahovat jen znaky od A do Z (malé a velké) a číslice. Délka bude omezena na osm znaků. #!/bin/bash echo "Vygenerování hesla" pw=$(tr -cd a-za-z0-9 < /dev/urandom head -c 8) echo "PW: $pw" Vygenerování hesla PW: I1jKFvpw Program tr načítá znaky z virtuálního souboru. Přepínačem -c se nastaví, že tr použije pouze jeden textový řetězec. Přepínač -d se postará o to, že znak nebude nahrazen, nýbrž vymazán. To znamená, že všechny znaky, které nesplňují pravidlo a-za-z0-9, budou při čtení odstraněny a nebudou tedy předány dále programu head. Ten zajišťuje, že se ze vstupních dat přečte vždy jen prvních osm znaků (parametr -c). Program useradd neočekává heslo jako běžný text, nýbrž šifrovaně. K zašifrování se používá program md5pass, který pracuje na principu algoritmu md5. Message-Digest Algorithm 5 MD5 je kryptografická hashovací funkce, která z textu libovolné délky vytvoří 128bitový kontrolní součet. V Linuxu se tento princip používá k vytvoření šifrovaného záznamu z hesla. Z výsledného záznamu se původní heslo nedá rekonstruovat. Je ovšem možné přeměnit na kontrolní součet slovníky a generovaná textová hesla. Pokud textové heslo a kontrolní součet uložíte do databáze, můžete heslo zjistit, když máte kontrolní součet. Každopádně je tento postup hodně nákladný a náklady výrazně stoupají, když je textové heslo dostatečně komplikované. Místo MD5 lze použít nějaký jiný hashovací algoritmus, třeba SHA-2. #!/bin/bash echo "Generování hesla" pw=$(tr -cd a-za-z0-9 < /dev/urandom head -c 8) pwmd5=$(md5pass $pw) echo "PW: $pw" echo $pwmd5 Generování hesla PW: 5tJXxUes $1$0DsiUvmM$WIocaXTRY6WRDwRkiji861 75

76 LEKCE III SKRIPTY USNADŇUJÍ PRÁCI Vytvoření uživatelských účtů žákům Nyní už můžeme příkazem useradd vytvořit přihlašovací jména pro žáky (více k tématu na straně 46). useradd -m -U -G <skupiny> -p <heslo> -s <shell> -c <komentář> <přihlašovací jméno> Parametry mají následující význam: -m Vytvořit domovský adresář. -U Vytvořit skupinu se stejným jménem, jako je přihlašovací jméno. -G <skupiny> Zařadit uživatele do zadaných skupin (zde jako skupina použita třída). -p <heslo> Šifrované heslo. -s <shell> Použít příkaz shellu (používáme Bash). -c <komentář> Komentář k uživatelskému účtu (zadáváme jméno a třídu). <přihlašovací jméno> Vlastní přihlašovací jméno uživatele. Nyní je vhodná doba pro vytvoření uživatelů a ještě předtím pro úpravu dosavadního skriptu a jeho doplnění o výše uvedené příklady. Zobrazíme si v něm také informaci o vytvořeném účtu a skupině. K tomuto účelu musíme příkazy sloučit do jedné skupiny pomocí kulatých závorek, aby byly pro brány jako jeden příkaz. #!/bin/bash echo "Vytvoření uživatelů" if [ -r sch.txt ]; then IFS=":" while read prijmeni jmeno trida ; do kl=`echo $trida tr '[:upper:]' '[:lower:]'` # Vytvořit skupinu, pokud už neexistuje grep "^$kl:" /etc/group >/dev/null \ ( sudo groupadd $kl; echo Skupina: $kl ) ke=`echo $prijmeni.$jmeno tr '[:upper:]' '[:lower:]'` # Generovat heslo pw=$(tr -cd a-za-z0-9 < /dev/urandom head -c 8) pwmd5=$(md5pass $pw) # Založit uživ. účet, pokud neexistuje grep "^$ke:" /etc/passwd >/dev/null \ ( sudo useradd -m -U \ -G $kl \ -p $pwmd5 \ -s /bin/bash \ -c "$prijmeni, $jmeno ($trida)" \ $ke ; echo Přihlašovací jméno: $ke ) done < sch.txt fi Vytvoření uživatelů Skupina: it11fs Přihlašovací jméno: pyka.johannes Skupina: it11fa Přihlašovací jméno: manfred.rolf Skupina: it11se Přihlašovací jméno: wanzinger.guido Po provedení skriptu najdete v databázi skupin /etc/group následující záznamy: it11fs:x:1002:pyka.johannes it11fa:x:1003:manfred.rolf it11se:x:1004:wanzinger.guido pyka.johannes:x:1005: manfred.rolf:x:1006: wanzinger.guido:x:1007: Číselné hodnoty se mohou lišit, protože jsou závislé na tom, kolik skupin bylo založeno dříve. Databáze uživatelů /etc/passwd obsahuje následující nové záznamy. pyka.johannes:x:1001:1005:pyka, Johannes (IT11FS):/home/pyka.johannes:/bin/bash manfred.rolf:x:1002:1006:manfred, Rolf (IT11FA):/home/manfred.rolf:/bin/bash wanzinger.guido:x:1003:1007:wanzinger, Guido (IT11SE):/home/wanzinger.guido:/bin/bash V adresáři /home/ vznikly patřičné podadresáře uživatelů. drwxr-xr-x 2 manfred.rolf manfred.rolf :02 manfred.rolf/ drwxr-xr-x 2 pyka.johannes pyka.johannes :02 pyka.johannes/ drwxr-xr-x 2 wanzinger.guido wanzinger.guido :02 wanzinger.guido/ 76

77 3.3. VYTVÁŘENÍ UŽIVATELŮ Co se týče přístupových práv, situace je následující: 1. Oprávnění na domovský adresář jsou nastavena tak, že ho každý smí číst. To by mělo být později změněno, aby ho směl číst a zapisovat do něj jen jeho vlastník (více k tématu na straně 55). 2. Měl by vzniknout ještě jeden soubor se seznamem přihlašovacích jmen a hesel, aby správce mohl sdělit žákům, jaké mají přihlašovací jméno a heslo. 3. Protože hesla budou uvedena na seznamu, musí se správce postarat o to, aby si je uživatelé po prvním přihlášení změnili. Cvičení: 1. Přepracujte uvedený skript tak, aby po jeho spuštění vznikl soubor názvem zaci-prihlasovaci-jmena.txt a následujícím obsahem: it11fs, manfred.rolf, vfripvki it11fa, pyka.johannes, asd23aw3 Použijte přitom přesměrování výstupu příkazů pomocí echo: echo $kl, $ke, $pw >> zaci-prihlasovaci-jmena.txt 2. Obsah tohoto souboru následně seřaďte příkazem sort, a to podle třídy. 3. Programem passwd a jeho přepínačem -e lze nastavit, že heslu skončila jeho platnost (expirovalo) a že musí být po příštím přihlášení změněno. Přečtěte si v manuálové stránce, jak to funguje a zapracujte tuto možnost do skriptu Vytvoření uživatelských účtů učitelům Poté, co jsme vytvořili uživatelské účty žákům, vytvoříme je nyní také učitelům. Realizace proběhne v těchto krocích: 1. vytvoření skupiny pro učitele (název ucitele), 2. učitelům Viola Lorenzová a Lars Greiner vytvořit uživatelské účty, 3. učitele ze skupiny ucitele a všech skupin přiřadit ke třídám. Cvičení: 1. Vytvořte odpovídající skript, který provede výše uvedené kroky. Informace by měl načítat ze souborů, jako je např. soubor zaci.txt. 2. Jakmile jsou skupiny a účty jednou vytvořené, skripty už se o to znovu nebudou pokoušet. Vytvořte také skript, který uživatelské účty a vytvořené skupiny zase smaže Vytvoření superuživatele Učitel pan Greiner je správce systému a musí mít možnost získat práva roota pomocí příkazu sudo. V Ubuntu se přístup pomocí sudo řídí členstvím ve skupinách admin a sudo. V konfiguračním souboru programu sudo, který se jmenuje /etc/sudoers, to může vypadat třeba takto (jde o část výpisu): Defaults env_reset # Host alias specification # User alias specification # Cmnd alias specification # User privilege specification root ALL=(ALL:ALL) ALL # Members of the admin group may gain root privileges %admin ALL=(ALL) ALL # Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) ALL 77

78 LEKCE III SKRIPTY USNADŇUJÍ PRÁCI S využitím manuálové stránky a dalších zdrojů k příkazu sudo zodpovězte následující otázky a zařiďte, aby pan Greiner mohl když bude chtít pracovat jako superuživatel, a to bez nutnosti zadávat heslo. 1. Co se nastavuje záznamem Defaults? Jaké hodnoty lze uvést? 2. V čem spočívá rozdíl mezi skupinou sudo a admin? 3. Co znamená ALL=(ALL:ALL) ALL? 4. Za normálních okolností se musí při použití příkazu sudo zadávat vlastní heslo. Jak by znělo nastavení pro uživatele hans, které by mu umožnilo žádné heslo nezadávat? 5. Popřemýšlejte nad riziky, která existují, když může uživatel spouštět příkaz sudo bez zadání hesla. Cvičení: 1. Hodnoty Peter, Uschi, Hans a Gabi se mají vypsat pomocí cyklu for. Vytvořte patřičný skript. 2. Pomocí cyklu for se mají vypsat hodnoty od jedné do dvaceti (v krocích po pěti). Ukažte dva příklady řešení. 3. Navrhněte k úkolu 2 řešení pomocí cyklu while. 4. Soubor vystup se má vypsat po řádcích prostřednictvím cyklu while. Vytvořte odpovídající skript. 5. Soubor vystup obsahuje řádky s pěti sloupci. Sloupce jsou od sebe odděleny středníkem. Vaším úkolem je vypsat sloupce dva a čtyři; vytvořte k tomu účelu skript. 6. Textový řetězec Berlínská zoo převeďte pomocí skriptu na velká písmena. 7. Vytvořili jste si heslo a uložili ho do proměnné pw. Nyní ho zašifrujte a uložte do proměnné pwmd5 tak, aby se dalo použít pro příkaz useradd. Vytvořte na to skript. 8. Vytvořte malý skript, který zobrazí uživatelská čísla všech běžných uživatelů (tj. ID >= 1000) a jejich komentář. 9. Rozšiřte skript z 8 tak, aby se vypsaly také všechny skupiny (tedy primární a sekundární). Použijte příkaz grep, kterým vyfiltrujete sekundární skupiny. 78

79 3.4. OTÁZKY 3.4 Otázky 1. Co je napsané na prvním řádku shellového skriptu pro Bash? 2. Jak se říká prvním dvěma znakům prvního řádku shellového skriptu pro Bash? 3. Co musíte udělat, abyste mohli skript spouštět z konzole příkazem? 4. Jak se definuje proměnná a jak její obsah vypíšete? 5. Co znamená pojem quoting? 6. Jaký výstup získáte spuštěním echo "$HOME" a spuštěním echo '$HOME'? 7. Jaký obsah Bash ukládá v následujících proměnných? $0 $1 $# $* $? $! $$ 8. Obsah proměnné i má být zvýšen o hodnotu 2. (a) Ukažte dvě možnosti v Bashi. (b) Ukažte dvě možnosti s využitím externích příkazů. 9. Pokud je soubor vystup čitelný (a pouze tehdy), má být smazán. (a) Jak bude vypadat kód s využitím if? (b) Jak bude vypadat kód s využitím test? 79

80 LEKCE III SKRIPTY USNADŇUJÍ PRÁCI 10. Obsah souboru vystup se má cyklem while po řádcích vypsat. Vytvořte patřičný skript. 11. Jak si ověříte, že skupina ucitele už existuje? 80

81 Kapitola 4 Lekce IV Zpracování fotografií z datového nosiče Práce s externími datovými médii jako USB disky, SD kartami nebo chytrými telefony patří k běžným činnostem, zejména pokud pracujete s fotkami. Fotografie z třídního výletu je potřeba sesbírat ze všech možných médií. Ne vždycky to musí být snadné. Linux rozpozná velké množství datových nosičů automaticky, ale pokud je některý z nich poškozený nebo se mu prostě nechce, pak musíte zasáhnout ručně. Naštěstí Linux nabízí velké množství informací, díky kterým se dozvíte, proč datové médium nefunguje. Možná nebylo hardwarově rozpoznáno, nebo není naformátované, nebo je poškozené, protože jste ho zapomněli v autě, kde na něj pražilo slunce. Pokud máte hodně fotek z různých fotoaparátů či telefonů a od velkého množství lidí, nejprve musíte všechny sestavit do chronologického pořadí, což nebývá nijak jednoduché. Linux vám ale pomůže, protože dokáže ze souborů získat časové informace, které tam ukládá fotoaparát, a obrázky podle nich seřadit. Pro vytvoření přitažlivé fotogalerie můžete využít různých vizuálních efektů programu ImageMagick. Obsah 4.1 Externí média Hlášení a logy Zobrazení připojených zařízení USB Kopírování fotek Testování, připojování a formátování médií Souborové systémy Připojování a odpojování souborových systémů Kontrola integrity souborových systémů Formátování souborových systémů Využití informací o fotce Filtrování textových souborů Zobrazení obsahu textových souborů Řazení obsahu textových souborů Vybrat řádky z textových souborů Rozčlenění textových souborů do sloupců a polí Počet řádků a slov v textovém souboru Záměna znaků Kopírování souborů s obrázky Získání data a času Formátování data a času Obrázky se stejným datem Automatické otočení obrázků Vytvoření náhledů Hrátky s obrázky Orámování obrázků Ořezávání obrázků Otázky

82 LEKCE IV ZPRACOVÁNÍ FOTOGRAFIÍ Z DATOVÉHO NOSIČE 4.1 Externí média Linux podporuje množství externích zařízení, např. DVD mechaniky, USB disky, SD karty, kamery, fotoaparáty nebo chytré telefony. U většiny systémů včetně Ubuntu stačí vložit médium do mechaniky či připojit k rozhraní USB a systém ho automaticky rozpozná a připojí tak, aby s ním aktuální uživatel mohl hned pracovat. Obrázek 4.1: Souvislosti: Připojení USB disku Jakmile připojíte USB disk, zareaguje HAL (Hardware Abstraction Layer), který představuje mezivrstvu mezi hardwarem a softwarem. Jeho výhoda spočívá v roli univerzálního překladatele a díky němu nemusí software umět přímo pracovat s hardwarem. HAL zase spolupracuje s programy udev 1 a D-BUS, 2 což má za výsledek, že se např. po připojení USB disku ihned spustí správce souborů. Na patřičná oprávnění v pozadí dohlíží služba PolicyKit. Běžný uživatel o této komunikaci za normálních okolností nic netuší a nijak ji nepotřebuje. Ovšem to se změní v případě, že jsou se zařízením problémy nebo je dokonce poškozené Hlášení a logy Při připojení USB disku se do logu zapisují odpovídající hlášení. Logované informace se ukládají do různých souborů (podle toho, od které služby pocházejí) v adresáři /var/log/. Příklady /var/log/syslog Zde se ukládají normální systémová hlášení. Za jejich vytváření a ukládání zodpovídá démon syslogd. /var/log/kern.log Hlášení jádra systému kernelu. /var/log/dmesg Hlášení jádra během startu systému (bootování). Tyto informace se nejprve zapíší do souboru, pokud je připojený odpovídající souborový systém. Předtím si je ale můžete přečíst pomocí příkazu dmesg. To je důležité hlavně v situaci, kdy dojde při startu k chybě a souborový systém nemůže být připojen. Díky dmesg tyto důležité informace získáte a můžete rychle najít příčinu chyby. /var/log/auth.log Hlášení týkající se přihlašování uživatelů do systému. /var/log/udev Hlášení od služby udev. Logovací služba se nastavuje prostřednictvím souboru /etc/rsyslog.conf a souborů v adresáři /etc/rsyslog.d/. Cvičení: Zjistěte, co dělá následující skript: sudo find /var/log -type f -exec wc -l {} \; sort -nr head Hlášení dmesg během startu systému Hlášení během startu poskytují dostatek informací o průběhu startu (bootování) hardwaru a načítaných ovladačích. Dokud systém funguje podle představ svého správce, nejsou tyto informace potřeba; jejich význam se ukáže v okamžiku, kdy dojde k chybě nebo nefunkčnosti v nějaké oblasti. Následuje ukázka s komentáři: 3 1 Služba udev hlídá a vyhodnocuje hardwarové události týkající se připojitelných zařízení, tedy těch, která lze připojit a odpojit za běhu počítače. Jakmile udev získá informace o novém zařízení, vyhodnotí situaci podle stanovených pravidel a zařízení vhodně pojmenuje. 2 D-BUS je služba meziprocesové komunikace IPC používaná hlavně v grafických pracovních prostředích. Prostřednictvím D-BUS spolu programy komunikují, např. že byl připojen USB disk a má se spustit správce souborů nebo že bylo vloženo audio CD a má se spustit přehrávač hudby. 3 Hodnota v hranatých závorkách je počet sekund od začátku startu systému. 82

83 4.1. EXTERNÍ MÉDIA [ ] Initializing cgroup subsys cpuset [ ] Initializing cgroup subsys cpu [ ] Linux version generic (gcc version (Ubuntu/Linaro ubuntu3) ) #30-Ubuntu SMP Thu Mar 8 20:45:39 UTC 2012 (Ubuntu generic ) Jádro (kernel) [ ] Command line: BOOT_IMAGE=/boot/vmlinuz generic root=uuid=1ac132a9-6bb5-40eb-92cb-a02ea616d320 ro quiet splash vt.handoff=7 Parametry jádra [ ] BIOS-provided physical RAM map: [ ] BIOS-e820: f800 (usable) [ ] BIOS-e820: f a0000 (reserved) [ ] BIOS-e820: e (reserved) [ ] BIOS-e820: dfba1640 (usable) [ ] BIOS-e820: dfba dfba36a0 (ACPI NVS) [ ] BIOS-e820: dfba36a e (reserved) [ ] BIOS-e820: f f (reserved) [ ] BIOS-e820: fec fed40000 (reserved) [ ] BIOS-e820: fed (reserved) [ ] BIOS-e820: c (usable) Paměť nalezená BIOSem [ ] DMI: Hewlett-Packard HP Compaq 8000 Elite CMT PC/3647h, BIOS 786G7 v /22/2009 Název počítače [ ] CPU0: Intel(R) Core(TM)2 Quad CPU 2.66GHz stepping 0a CPU [ ] Brought up 4 CPUs [ ] Total of 4 processors activated ( BogoMIPS). Čtyři jádra aktivována [ ] e1000e: Intel(R) PRO/1000 Network Driver k2 Nalezena síťová karta [ ] ata5.00: ATA-8: WDC WD20EARX-00PASB0, 51.0AB51, max UDMA/133 SATA pevný disk [ ] ata3.00: ATA-8: Corsair Force 3 SSD, 1.3.2, max UDMA/133 SATA SSD [ ] scsi 2:0:0:0: Direct-Access ATA Corsair Force PQ: 0 ANSI: 5 [ ] sd 2:0:0:0: Attached scsi generic sg0 type 0 [ ] sd 2:0:0:0: [sda] byte logical blocks: (120 GB/111 GiB) [ ] sd 2:0:0:0: [sda] Write Protect is off [ ] sd 2:0:0:0: [sda] Mode Sense: 00 3a [ ] sd 2:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ ] sda: sda1 sda2 Připojení SSD» [ ] scsi 3:0:0:0: CD-ROM hp DVD-RAM GH60L RD01 PQ: 0 ANSI: 5 [ ] sr0: scsi3-mmc drive: 40x/40x writer dvd-ram cd/rw xa/form2 cdda tray [ ] cdrom: Uniform CD-ROM driver Revision: 3.20 [ ] sr 3:0:0:0: Attached scsi CD-ROM sr0 Připojení DVD [ ] scsi 4:0:0:0: Direct-Access ATA WDC WD20EARX-00P 51.0 PQ: 0 ANSI: 5 [ ] sd 4:0:0:0: [sdb] byte logical blocks: (2.00 TB/1.81 TiB) [ ] sd 4:0:0:0: [sdb] 4096-byte physical blocks Připojení pevného disku 1 [ ] scsi 5:0:0:0: Direct-Access ATA WDC WD20EARX-00P 51.0 PQ: 0 ANSI: 5 [ ] sd 5:0:0:0: [sdc] byte logical blocks: (2.00 TB/1.81 TiB) [ ] sd 5:0:0:0: [sdc] 4096-byte physical blocks Připojení pevného disku 2 [ ] md/raid0:md0: looking at sdc1 [ ] md/raid0:md0: comparing sdc1( ) with sdc1( ) [ ] md/raid0:md0: looking at sdb1 [ ] md/raid0:md0: comparing sdb1( ) with sdc1( ) RAID 0 pro dva pevné disky [ ] nvidia 0000:01:00.0: PCI INT A~-> GSI 16 (level, low) -> IRQ 16 [ ] nvidia 0000:01:00.0: setting latency timer to 64 [ ] vgaarb: device changed decodes: PCI:0000:01:00.0,olddecodes=io+mem,decodes=none:owns=io+mem [ ] NVRM: loading NVIDIA UNIX x86_64 Kernel Module Wed Jul 27 16:53:56 PDT 2011 Grafická karta... Cvičení: Zjistěte s využitím dmesg nejdůležitější informace o hardwaru vašeho počítače. Hlášení při připojení USB disku Abyste mohli sledovat hlášení (např. během připojení USB disku), spusťte terminál a v něm příkaz tail s přepínačem -f, který zajistí, že se obsah souboru bude zobrazovat kontinuálně. Jakmile se do něj zapíše nové hlášení, ihned se zobrazí v terminálu. 1 tail -f /var/log/syslog 2 Apr 19 17:48:47 video kernel: [ ] usb 2-1.7: new high speed USB device number 6 using ehci_hcd 3 Apr 19 17:48:47 video kernel: [ ] scsi7 : usb-storage 2-1.7:1.0 4 Apr 19 17:48:47 video mtp-probe: checking bus 2, device 6: "/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.7" 5 Apr 19 17:48:47 video mtp-probe: bus: 2, device: 6 was not an MTP device 83

84 LEKCE IV ZPRACOVÁNÍ FOTOGRAFIÍ Z DATOVÉHO NOSIČE 6 Apr 19 17:48:48 video kernel: [ ] scsi 7:0:0:0: Direct-Access JetFlash Transcend 16GB 8.07 PQ: 0 ANSI: 2 7 Apr 19 17:48:48 video kernel: [ ] sd 7:0:0:0: Attached scsi generic sg3 type 0 8 Apr 19 17:48:48 video kernel: [ ] sd 7:0:0:0: [sdc] byte logical blocks: (16.0 GB/14.9 GiB) 9 Apr 19 17:48:48 video kernel: [ ] sd 7:0:0:0: [sdc] Write Protect is off 10 Apr 19 17:48:48 video kernel: [ ] sd 7:0:0:0: [sdc] Mode Sense: Apr 19 17:48:48 video kernel: [ ] sd 7:0:0:0: [sdc] No Caching mode page present 12 Apr 19 17:48:48 video kernel: [ ] sd 7:0:0:0: [sdc] Assuming drive cache: write through 13 Apr 19 17:48:48 video kernel: [ ] sd 7:0:0:0: [sdc] No Caching mode page present 14 Apr 19 17:48:48 video kernel: [ ] sd 7:0:0:0: [sdc] Assuming drive cache: write through 15 Apr 19 17:48:48 video kernel: [ ] sdc: sdc1 16 Apr 19 17:48:48 video kernel: [ ] sd 7:0:0:0: [sdc] No Caching mode page present 17 Apr 19 17:48:48 video kernel: [ ] sd 7:0:0:0: [sdc] Assuming drive cache: write through 18 Apr 19 17:48:48 video kernel: [ ] sd 7:0:0:0: [sdc] Attached SCSI removable disk 19 Apr 19 17:48:49 video ntfs-3g[7390]: Version AR.4 external FUSE Apr 19 17:48:49 video ntfs-3g[7390]: Mounted /dev/sdc1 (Read-Write, label "usb_stick", NTFS 3.0) 21 Apr 19 17:48:49 video ntfs-3g[7390]: Cmdline options: rw,nosuid,nodev,uhelper=udisks,uid=1000,gid=1000,dmask=0077,fmask= Apr 19 17:48:49 video ntfs-3g[7390]: Mount options: rw,nosuid,nodev,uhelper=udisks,allow_other,nonempty,relatime,fsname=/dev/sdc1,blkdev,blksize=4096,default_permissions 23 Apr 19 17:48:49 video ntfs-3g[7390]: Global ownership and permissions enforced, configuration type 7 Co se zde událo: Řádek: 2 Ovladač USB ohlásil jádru, že nalezl nové zařízení USB (ehci USB 2). Řádek: 3 Řádek: 6 Řádek: 8 Jedná se o úložné zařízení (usb-storage). Název zařízení USB je JetFlash Transcend 16GB. USB disk má velikost bloku 512 bajtů a kapacitu zhruba 14,9 GiB dat. Řádek: 15 Zařízení bude dostupné jako /dev/sdc. Protože má jen jeden diskový oddíl, bude dostupný jako /dev/sdc1. Řádek: 19 Bylo rozpoznáno, že disk je formátovaný jako NTFS a byl načten odpovídající ovladač. Řádek: 20 Disk nese jméno usb_stick, takže se jeho obsah po připojení automaticky objeví v adresáři /media/usb_stick/. Řádek: 21 Odpovídající parametry příkazu mount byly doplněny. V Ubuntu se ikona pro USB disk nachází vlevo v liště. Kliknutím se spustí správce souborů, pokud se automaticky nespustil po připojení disku (záleží na nastavení). Kliknutím pravým tlačítkem myši na ikonu se zobrazí kontextová nabídka. Položka Vysunout zajistí, že se před odpojením uloží na USB disk všechna data, která se ještě nacházejí v dočasné paměti. V logu pak najdete následující záznamy: Apr 19 18:33:59 video kernel: [ ] usb 2-1.7: reset high speed USB device number 7 using ehci_hcd Apr 19 18:33:59 video kernel: [ ] usb 2-1.7: USB disconnect, device number 7 Cvičení: Vložte do mechaniky po sobě DVD a následně zvukové CD a sledujte soubor s logy. Nyní přes USB připojte fotoaparát nebo přes adaptér SD kartu a opět sledujte hlášení v logu. Všimněte si, který soubor se po vložení či připojení média automaticky spustí Zobrazení připojených zařízení USB Pro zobrazení všech připojených zařízení USB spusťte příkaz lsusb. Pokud přidáte parametr -v resp. -vv, dozvíte se toho mnohem víc. lsusb Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 006 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 009 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 010 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub 84

85 4.1. EXTERNÍ MÉDIA Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub Bus 002 Device 003: ID 05e3:0608 Genesys Logic, Inc. USB Port HUB Bus 002 Device 004: ID 04f3:0234 Elan Microelectronics Corp. Bus 002 Device 005: ID 04d9:1603 Holtek Semiconductor, Inc. Keyboard Bus 003 Device 003: ID 9022:d660 TeVii Technology Ltd. DVB-S2 S660 Bus 004 Device 003: ID 9022:d660 TeVii Technology Ltd. DVB-S2 S660 Bus 002 Device 006: ID 0bb4:0ff9 High Tech Computer Corp. Desire / Desire HD / Hero (Charge Mode) Bus 002 Device 007: ID 058f:6387 Alcor Micro Corp. Transcend JetFlash Flash Drive Každý záznam zobrazuje sběrnici. Normálně má každý počítač více zdířek USB, které jsou obsluhovány různými sběrnicemi. Mohou také podporovat různé rychlosti, např. USB 1, USB 2 nebo nově také USB 3. ID (např. 058f:6387) identifikuje přesně výrobce a také hardware. Na internetu existují různé databáze, v nichž se dozvíte více. 4 Více informací o hardwaru Chcete-li získat co nejvíce informací o hardwaru svého systému, použijte program lshw. Prohledá všechny pseudosouborové systémy jako /proc nebo /sys, kde jádro systému uchovává data. Výsledné informace jsou členěny do různých skupin. K dispozici je také grafická varianta příkazu lshw-gtk. Cvičení: Prozkoumejte zařízení USB, která najdete ve svém systému Kopírování fotek V následujícím příkladu byla k počítači přes adaptér připojena CF karta (compact flash) o kapacitě 1 GiB. Apr 19 19:02:46 video kernel: [ ] usb 2-1.7: USB disconnect, device number 9 Apr 19 19:02:54 video kernel: [ ] usb 2-1.7: new high speed USB device number 10 using ehci_hcd Apr 19 19:02:54 video kernel: [ ] scsi11 : usb-storage 2-1.7:1.0 Apr 19 19:02:54 video mtp-probe: checking bus 2, device 10: "/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.7" Apr 19 19:02:54 video mtp-probe: bus: 2, device: 10 was not an MTP device Apr 19 19:02:55 video kernel: [ ] scsi 11:0:0:0: Direct-Access Generic CF 1.6E PQ: 0 ANSI: 0 CCS Apr 19 19:02:55 video kernel: [ ] scsi 11:0:0:1: Direct-Access Generic MS 1.6E PQ: 0 ANSI: 0 CCS Apr 19 19:02:55 video kernel: [ ] scsi 11:0:0:2: Direct-Access Generic MMC/SD 1.6E PQ: 0 ANSI: 0 CCS Apr 19 19:02:55 video kernel: [ ] scsi 11:0:0:3: Direct-Access Generic SM 1.6E PQ: 0 ANSI: 0 CCS... Apr 19 19:02:55 video kernel: [ ] sd 11:0:0:0: [sdc] byte logical blocks: (1.02 GB/976 MiB)... Apr 19 19:02:55 video kernel: [ ] sdc: sdc1... Karta byla automaticky připojena jako /media/canon_dc/. 5 ls -la /media/canon_dc/ drwx mgn mgn :36 DCIM 4 Viz např. 5 Konkrétně byla použita karta Canon PowerShot. 85

86 LEKCE IV ZPRACOVÁNÍ FOTOGRAFIÍ Z DATOVÉHO NOSIČE Fotoaparáty vytvářejí na datových kartách obvykle adresář pojmenovaný DCIM (angl. Digital Camera Images). V něm mohou být podadresáře, které bývají pojmenovány podle schématu tři číslice + pět znaků, např. 186CANON. V nich jsou uložené fotografie, obvykle 100 souborů na adresář. ls -la /media/canon_dc/dcim/186canon -rw-r--r-- 1 mgn mgn :30 IMG_8691.JPG -rw-r--r-- 1 mgn mgn :30 IMG_8692.JPG -rw-r--r-- 1 mgn mgn :52 IMG_8693.JPG -rw-r--r-- 1 mgn mgn :13 IMG_8694.JPG -rw-r--r-- 1 mgn mgn :25 IMG_8695.JPG -rw-r--r-- 1 mgn mgn :44 IMG_8697.JPG -rw-r--r-- 1 mgn mgn :12 IMG_8698.JPG -rw-r--r-- 1 mgn mgn :12 IMG_8699.JPG -rw-r--r-- 1 mgn mgn :25 IMG_8700.JPG ls -la /media/canon_dc/dcim/187canon/ -rw-r--r-- 1 mgn mgn :27 IMG_8701.JPG -rw-r--r-- 1 mgn mgn :28 IMG_8702.JPG... Nyní můžete soubory kopírovat např. pomocí cp. Pokud ale půjde o stovky nebo více souborů, možná to bude vyžadovat trochu ruční práce, protože jsou fotky rozdělené v podadresářích. Hledání souborů Příkazem find můžete vyhledat a zobrazit soubory podle zadaného schématu nebo pro ně spustit příkaz. man find FIND(1) FIND(1) NAME find - search for files in a~directory hierarchy SYNOPSIS find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression] DESCRIPTION This manual page documents the GNU version of find. GNU find searches the directory tree rooted at each given file name by evaluating the given expression from left to right, according to the rules of precedence (see section OPERATORS), until the outcome is known (the left hand side is false for and operations, true for or), at which point find moves on to the next file name.... Příklad find /media/canon_dc/dcim -name '*.JPG' -print /media/canon_dc/dcim/186canon/img_8691.jpg /media/canon_dc/dcim/186canon/img_8692.jpg /media/canon_dc/dcim/186canon/img_8693.jpg /media/canon_dc/dcim/186canon/img_8694.jpg /media/canon_dc/dcim/186canon/img_8695.jpg... /media/canon_dc/dcim/187canon/img_8701.jpg /media/canon_dc/dcim/187canon/img_8702.jpg... Vypíšou se (-print) všechny soubory v adresáři /media/canon_dc/dcim a rekurzivně ve všech jeho podadresářích, jejichž jméno vyhovuje regulárnímu výrazu *.JPG. Protože se používají zástupné znaky, musí být textový řetězec uzavřen do apostrofů, jinak shell zástupné znaky zruší. Některé volby pro find: -name <výraz> -print Výraz, podle něhož budou identifikovány soubory. Vypíše se kompletní cesta k souboru. -maxdepth <vrstvy> V adresářovém stromě se rekurzivně prohledá maximálně uvedený počet vrstev. -exec <příkaz> Provede se zadaný příkaz. Případné argumenty se zadávají za jeho název, ukončí se středníkem (v uvozovkách, jinak by ho shell chápal jako oddělovač celých příkazů). Zástupný symbol pro soubor je v tomto případě {}. 86 Nyní můžete soubory kopírovat.

87 4.1. EXTERNÍ MÉDIA find /media/canon_dc/dcim -name '*.JPG' -print -exec cp {}. \; /media/canon_dc/dcim/186canon/img_8691.jpg /media/canon_dc/dcim/186canon/img_8692.jpg... Pokud kopírujete fotky z více fotoaparátů, narazíte zřejmě na následující problémy: Názvy souborů se opakují, hlavně názvy obsahující čísla. Nebudete vědět, od koho fotky jsou. Podle jmen souborů nesestavíte chronologickou řadu. Mnoho argumentů Pomocí příkazu find a parametru -exec lze spouštět další příkazy a zadané parametry se těmto spouštěným příkazům předají. Pokud find najde mnoho souborů, spustí pro každý z nich vlastní proces. Příklad: Všechny soubory uživatele killer mají být smazány. find / -user killer -exec rm {} \; Pokud příkaz find najde např souborů, spustí rm tisíckrát. To bude trvat velmi dlouho. Řešením je v tomto případě příkaz xargs. find / -user killer -print xargs rm Příkaz find vypíše všechny soubory uživatele killer a předá je pomocí roury příkazu xargs. Ten ze standardního vstupu vytvoří seznam a následně spustí příkaz rm s tisícem argumentů. Ve výsledku budou spuštěny jen tři procesy find, xargs a rm. Důležité také je, že nebyla překročena maximální velikost příkazové řádky. Tu zobrazuje následující příklad: getconf ARG_MAX Pokud jsou v názvech souborů mezery a předávají se jako parametr, chápe je Bash jako oddělovače parametrů. Proto je příkazům find a xargs nutné sdělit, že mají použít tzv. nulou zakončené textové řetězce. find / -user killer -print0 xargs -0 rm Cvičení: 1. Zjistěte pomocí manuálové stránky příkazu find informace o funkcích následujících argumentů a uveďte ke každému příklad: -type -user -group -size -atime -mtime 87

88 LEKCE IV ZPRACOVÁNÍ FOTOGRAFIÍ Z DATOVÉHO NOSIČE -ctime -perm -iname! -a -o 2. Najděte všechny soubory, které byly změněny v posledních 24 hodinách. 3. Najděte všechny soubory, které jsou větší než 1 MiB a patří vám. Hledání souborů pomocí locate/slocate Příkaz find musí pokaždé prohledat zadaný adresář, což při velkém množství souborů dlouho trvá. locate používá jiný přístup. Jednou denně (například) prohledá pomocí updatedb celý zadaný adresářový strom a informace o nalezených souborech zapíše do databáze. Při hledání pak locate prohledává jen tuto databázi, což je nesrovnatelně rychlejší než v případě find. slocate zohledňuje ještě vlastníka, skupinu a přístupová práva, takže se zobrazí jen soubory, k nimž má uživatel přístup. locate má ale i nevýhody: Zobrazují se jen ty soubory, které byly v systému před spuštěním updatedb. Později vytvořené soubory nebudou nalezeny. To také znamená, že locate nemá smysl používat na výměnná média jako USB disky, protože v okamžiku spuštění updatedb nejsou pravděpodobně v systému připojená. Hledání programů pomocí which/whereis Má-li se najít externí program, resp. příkaz, hledá ho shell ve všech adresářích, které jsou uvedeny v proměnné PATH: echo $PATH /usr/local/texlive/2011/bin/x86_64-linux:/usr/local/jdk/bin: /usr/local/texlive/2011/bin/x86_64-linux:/home/mgn/bin:/usr/local/sbin: /usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin Pokud chcete vědět, ve kterém z těchto adresářů se nachází příkaz find, můžete to zjistit díky which. which find /usr/bin/find Program which začne soubor hledat v prvním adresáři uvedeném v PATH, pokud ho nenajde, pokračuje dalším adresářem atd., dokud soubor nenajde. Příkaz whereis zobrazuje nejen externí příkazy, nýbrž také soubory s dokumentací (manuálové stránky), zdrojové kódy a další soubory, které mají s hledaným příkazem co do činění. whereis userdel userdel: /usr/sbin/userdel /usr/share/man/man8/userdel.8.gz 88

89 4.2. TESTOVÁNÍ, PŘIPOJOVÁNÍ A FORMÁTOVÁNÍ MÉDIÍ Cvičení: Pro následující cvičení potřebujete odpovídající adresáře, abyste mohli kopírovat soubory z fotoaparátu. 1. Vytvořte následující adresáře, použijte k tomu názvy z vašeho fotoaparátu nebo chytrého telefonu. /var/obrazky/skolni-vylet/it11fs/raw/canon /var/obrazky/skolni-vylet/it11fs/raw/sony /var/obrazky/skolni-vylet/it11fs/raw/iphone-jan /var/obrazky/skolni-vylet/it11fs/raw/iphone-stefan Nastavte třídnímu adresáři taková přístupová práva, aby měli všichni žáci právo číst a zapisovat. 3. A všechny v něm vytvořené soubory a adresáře byly přístupné skupině, v níž je celá třída. 4.2 Testování, připojování a formátování médií Až dosud byl USB disk systémem rozpoznán a připojen. Klidně se ale může stát, že připojen nebude nebo že systém nerozpozná použitý souborový systém nebo bude disk prostě poškozený Souborové systémy Než začnete médium testovat, je vhodné vědět, jaký souborový systém byl při jeho formátování vlastně použit. V případě mnoha USB a flash disků nebo datových karet (a také fotoaparátů nebo chytrých telefonů) jde o souborový systém FAT. Tabulka 4.1 zobrazuje přehled běžných souborových systémů a jejich typické použití. Žurnálovací souborový systém Žurnálovací souborový systémem je takový systém, který všechny změny před samotným zapsáním souboru zaznamená do speciální oblasti, žurnálu. Zapíše přitom jen změny. Samotný obsah souboru se uloží později a zůstává ve vyrovnávací paměti co nejdéle, aby se tím dosáhlo co nejvyššího výkonu. V případě výpadku elektrického proudu je možné obsah souboru opět rekonstruovat ze žurnálu. Zabrání se tak nekonzistentnímu stavu, tedy chybovým souborům Připojování a odpojování souborových systémů K připojení souborového systému se používá příkaz mount. Za běžných okolností ho smí spouštět pouze root. mount [-fnrsvw] [-t vfstype] [-o options] device dir Příklad Do všeobecného adresáře /mnt/ je připojeno zařízení, v tomto případě USB disk. Příkaz mount zkouší detekovat souborový systém a načítá odpovídající ovladač. Pokud by se automatická detekce nezdařila, musí se typ zadat pomocí přepínače -t. Souborový systém Linux Windows Pro externí média Popis FAT12 pro diskety MS-DOS FAT16 pro malé disky včetně USB disků do 2 GiB FAT32 pro pevné disky a větší USB disky do 2 TiB VFAT rozšíření FAT systému o delší jména souborů exfat pro flash média do 63 ZiB NTFS pro pevné disky a větší USB disky do 256 TiB (ž.) ext2 ( ) pro pevné disky do 16 TiB ext3 pro pevné disky do 32 TiB (žurnálovací) ext4 pro pevné disky do 1 EiB (žurnálovací) btrfs pro pevné disky do 16 EiB (žurnálovací) xfs pro pevné disky do 8 EiB (žurnálovací) Tabulka 4.1: Přehled některých souborových systémů 89

90 LEKCE IV ZPRACOVÁNÍ FOTOGRAFIÍ Z DATOVÉHO NOSIČE sudo mount /dev/sdv1 /mnt Pokud spustíte mount bez parametrů, vypíšou se všechny připojené souborové systémy. Nejde přitom jen o pravé systémy, nýbrž také o virtuální systémy jako proc nebo sysfs. mount /dev/sda1 on / type ext4 (rw,noatime,nodiratime,errors=remount-ro,commit=0) proc on /proc type proc (rw,noexec,nosuid,nodev) sysfs on /sys type sysfs (rw,noexec,nosuid,nodev) fusectl on /sys/fs/fuse/connections type fusectl (rw) none on /sys/kernel/debug type debugfs (rw) none on /sys/kernel/security type securityfs (rw) udev on /dev type devtmpfs (rw,mode=0755) devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620) tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755) none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size= ) none on /run/shm type tmpfs (rw,nosuid,nodev) /dev/sda3 on /tmp type ext4 (rw,noatime,nodiratime,commit=0) /dev/sda4 on /home type ext4 (rw,noatime,nodiratime,commit=0) /dev/sdc1 on /mnt type vfat (rw) Vidíte, že USB disk (/dev/sdc1) je připojený do adresáře mnt. Použitý souborový systém je FAT s rozšířením VFAT. Pokud byste chtěli vědět, které soubory zařízení jsou přiřazené jednotlivým diskovým oddílům, můžete si je zobrazit příkazem fdisk -l. sudo fdisk -l Disk /dev/sda: 500,1 GB, bajtů hlav: 255, sektorů na stopu: 63, cylindrů: , celkem sektorů Jednotky = sektory po 1 * 512 = 512 bajtech Velikost sektoru (logického/fyzického): 512 bajtů / 512 bajtů Velikost I/O (minimální/optimální): 512 bajtů / 512 bajtů Identifikátor disku :0xb471b471 Zařízení Zavádět Začátek Konec Bloky Id Systém /dev/sda1 * Linux /dev/sda Linux swap/solaris /dev/sda Linux /dev/sda Linux Disk /dev/sdc: 16,2 GB, bajtů hlav: 114, sektorů na stopu: 40, cylindrů: 6 956, celkem sektorů Jednotky = sektory po 1 * 512 = 512 bajtech Velikost sektoru (logického/fyzického): 512 bajtů / 512 bajtů Velikost I/O (minimální/optimální): 512 bajtů / 512 bajtů Identifikátor disku :0xc3072e18 Zařízení Zavádět Začátek Konec Bloky Id Systém /dev/sdc1 * c W95 FAT32 (LBA) Pro odpojení disku spusťte příkaz umount. Jako parametr se zadává buď jméno zařízení, nebo adresář, do něhož je zařízení připojeno. sudo umount /mnt Soubory zařízení Většina pevných disků se připojuje přes rozhraní SCSI (i když jde o SATA disky, DVD mechaniky nebo USB disky). Tím pádem se první disk adresuje jako sda, druhý disk jako sdb atd. První primární oddíl má označení 1, druhý 2 apod. Pokud se použije logický oddíl, pak první z nich začíná vždy 5: první primární oddíl, druhý disk /dev/sdb1 druhý primární oddíl, třetí disk /dev/sdc2 druhý logický oddíl, čtvrtý disk /dev/sdd6 Více informací najdete na straně

91 4.2. TESTOVÁNÍ, PŘIPOJOVÁNÍ A FORMÁTOVÁNÍ MÉDIÍ Kontrola integrity souborových systémů Souborový systém se testuje na chyby programem fsck. To je však jenom univerzální spouštěč, který podle typu souborového systému spustí odpovídající příkaz, např. pro VFAT je to fsck.vfat. sudo fsck [-t vfstype] device Pro kontrolu USB disku tedy příkaz spusťte následovně: sudo fsck -t vfat /dev/sdc1 fsck from util-linux dosfsck 3.0.9, 31 Jan 2010, FAT32, LFN /dev/sdc1: 50 files, 2479/ clusters Důležité: Souborový systém nesmí být během kontroly připojen. Pokud je nalezena chyba, zobrazí se patřičné hlášení a program se pokusí chybu opravit (pokud to bude možné) Formátování souborových systémů Příkazem mkfs lze vytvořit nový souborový systém. mkfs: Usage: mkfs [-V] [-t fstype] [fs-options] device [size] Také zde se používá přepínač -t pro typ souborového systému, podle kterého se spustí odpovídající program, např. mkfs.vfat, mkfs.ntfs, mkfs.ext3, mkfs.ext4, Příkaz pro naformátování USB disku tedy zní: sudo mkfs -t vfat /dev/sdc1 mkfs.vfat (31 Jan 2010) Také v tomto případě nesmí být souborový systém připojen. Pokud USB disk fyzicky odpojíte a zase hned připojíte, bude automaticky připojen pod jménem, které bude složeno z generovaných číslic (např. A40B-7AA0). mount... /dev/sdc1 on /media/a40b-7aa0 type vfat (rw,nosuid,nodev,uid=1000,gid=1000,shortname=mixed, dmask=0077,utf8=1,showexec,flush,uhelper=udisks) Chcete-li disk pořádně pojmenovat, použijte při formátování přepínač -n. sudo mkfs -t vfat -n superdisk /dev/sdc1 mkfs.vfat (31 Jan 2010) V tomto případě bude USB disk automaticky připojen do adresáře /media/superdisk. Pokud byste chtěli jméno USB disku se systémem FAT změnit, použijte příkaz dosfslabel. sudo dosfslabel /dev/sdc1 superdisk USB disk počet diskových oddílů USB disk je běžné zařízení. Je tedy možné vytvořit na něm více diskových oddílů jako na pevném disku. Nepodporují to ale všechny operační systémy (např. starší Windows). Pokud tedy používáte více různých operačních systémů, doporučujeme vám, abyste na USB disku používali jen jeden oddíl (což je standard). Cvičení: Pro toto cvičení potřebujete jeden USB disk, který neobsahuje žádná data a může být smazán! 1. Zasuňte do zdířky USB disk, který smí být smazán. Pokud bude automaticky připojen, spusťte příkaz umount s patřičnými parametry. 2. Naformátujte disk na systém VFAT, jméno mu nedávejte. 3. Jméno mu nastavte dodatečně. 91

92 LEKCE IV ZPRACOVÁNÍ FOTOGRAFIÍ Z DATOVÉHO NOSIČE 4. Otestujte disk, zda obsahuje chyby. 4.3 Využití informací o fotce Do fotografií, které pořídíte digitálním fotoaparátem nebo mobilním telefonem, se ukládají také doplňkové informace ve formátu Exif (Exchangeable Image File Format). Zapisují se přímo do hlavičky souboru JPEG nebo TIFF. Informace zobrazíte pomocí příkazu exif. 6 Příklady exif dsc_8044.jpg EXIF tags in 'dsc_8044.jpg' ('Motorola' byte order): Tag Value Výrobce NIKON CORPORATION Model NIKON D3100 Orientace Nahoře vlevo Horizontální rozliše 300 Vertikální rozlišení 300 Jednotka rozlišení Palec Software Ver.1.01 Datum a čas 2012:04:19 16:30:01 YCbCr Positioning Co-sited Komprese Komprese JPEG Horizontální rozliše 300 Vertikální rozlišení 300 Jednotka rozlišení Palec YCbCr Positioning Co-sited Expoziční čas 1/40 s F-Number f/5,6 Program expozice Shutter priority ISO Speed Ratings 400 Verze Exif Exif verze 2.21 Datum a čas pořízení 2012:04:19 16:30:01 Datum a čas digitali 2012:04:19 16:30:01 Components Configura Y Cb Cr - Komprimované bity na 4 Kompenzace expozice 0,00 EV Maximální clona 3,60 EV (f/3,5) Režim měření Uprostřed - vpravo Zdroj světla Neznámý Blesk Blesk nebleskl Ohnisková vzdálenost 18,0 mm Maker note bajtů neznámých dat Komentář Zlomky vteřin 40 Zlomky vteřin času p 40 Zlomky vteřin času d 40 FlashPixVersion FlashPix verze 1.0 Barevný model srgb Pixel X Dimension 4608 Pixel Y Dimension 3072 Sensing Method One-chip color area sensor Zdroj souboru DSC Typ scény Přímo fotografováno CFA Pattern 8 bajtů neznámých dat Custom Rendered Normal process Režim expozice Automatická expozice Vyvážení bílé Automatické vyvážení bílé Faktor digitálního z 1 Ohnisková vzdálenost 27 Scene Capture Type Standard 6 Pokud příkaz neexistuje, nainstalujte si balík exif. 92

93 4.3. VYUŽITÍ INFORMACÍ O FOTCE Gain Control Low gain up Kontrast Normal Sytost Normal Ostrost Normal Vzdálenost objektu Neznámý Verze značky GPS Interoperability Ind R98 Interoperability Ver EXIF data contains a thumbnail (8729 bytes). exif IMG jpg EXIF tags in 'IMG jpg' ('Motorola' byte order): Tag Value Výrobce HTC Model HTC Legend Horizontální rozliše 72 Vertikální rozlišení 72 Jednotka rozlišení Palec YCbCr Positioning Uprostřed Komprese Komprese JPEG Horizontální rozliše 72 Vertikální rozlišení 72 Jednotka rozlišení Palec ISO Speed Ratings 86 Verze Exif Exif verze 2.2 Datum a čas pořízení 2014:05:08 09:48:37 Datum a čas digitali 2014:05:08 09:48:37 Components Configura Y Cb Cr - Ohnisková vzdálenost 3,5 mm FlashPixVersion FlashPix verze 1.0 Barevný model srgb Pixel X Dimension 1728 Pixel Y Dimension 2592 Interoperability Ind R98 Interoperability Ver EXIF data contains a thumbnail (26229 bytes). Uložené informace se liší v závislosti na výrobci fotoaparátu nebo telefonu. Různý může být také formát jednotlivých záznamů, např. data a času. Datum a čas 2012:04:19 16:30:01 Datum a čas 2012/07/05 15:43:05 Pro nás uživatele je datum velmi důležité, protože díky němu je možné obrázky chronologicky řadit. 7 Místo názvů jednotlivých políček ( štítků, tags) lze zobrazit pouze jejich číselné kódy. 8 Slouží k tomu přepínač -i. Datum má následující štítky: 0x132 0x9004 0x9003 0x0007 0x001d DateTime DateTimeDigitized DateTimeOriginal GPS čas (atomové hodiny) GPS čas Abyste získali jen relevantní záznamy, je potřeba výpis filtrovat. Cvičení: Prozkoumejte informace Exif vašich fotek. Najdete v nich datum pořízení fotografie? 7 Toho lze tedy dosáhnout jen tehdy, je-li u všech přístrojů správně nastaveno datum a čas! 8 Více informací najdete na 93

94 LEKCE IV ZPRACOVÁNÍ FOTOGRAFIÍ Z DATOVÉHO NOSIČE 4.4 Filtrování textových souborů Různé nástroje, např. exif, produkují velké množství informací. Často potřebujeme získat jen jejich určitý výsek, třeba sloupec nebo řádek, který je potřeba najít pomocí nějakého klíčového slova. Linux naštěstí nabízí dostatek nástrojů, jak podobné vyfiltrování provést. Ty nejdůležitější jsou krátce popsány v následujícím textu a můžete si je vyzkoušet s výstupem programu exif Zobrazení obsahu textových souborů Příkazem cat vypíšete obsah jednoho nebo více souborů. cat [Parametr] <soubor1> <soubor2> <...> Nejdůležitější parametry jsou: -n Očíslovat všechny řádky. -b Očíslovat všechny neprázdné řádky. -s Nezobrazovat za sebou jdoucí prázdné řádky. Příklady cat -n sch.txt 1 Pyka:Johannes:IT11FS 2 Manfred:Rolf:IT11FA 3 Wanzinger:Guido:IT11SE Alternativy příkazu cat Příkaz nl také dokáže zobrazit obsah souboru s čísly řádků, takže představuje alternativu k programu cat. Pro číslování nabízí více parametrů, např. možnost doplnit úvodní nuly. Příklady nl -nrz -w2 sch.txt 01 Pyka:Johannes:IT11FS 02 Manfred:Rolf:IT11FA 03 Wanzinger:Guido:IT11SE Pokud chcete zobrazit jen začátek souboru, použijte příkaz head (angl. hlava), pro konec souboru zase příkaz tail (angl. ocas). head [Parametr] <soubor> tail [Parametr] <soubor> Nejdůležitější parametry jsou: -c <x> Zobrazit prvních/posledních x bajtů. <x> může obsahovat jednotku, která počet násobí: b pro 512, k pro 1 KiB, m pro 1 MiB, g pro 1 GiB, kb pro 1000, mb pro (T, P, E, Z, Y) -n <x> Zobrazit prvních/posledních x řádků. Příklady head -n 5 zaci.txt nl 1 Pyka:Johannes:IT11FS 2 Gerber:Dennis:IT11FS 3 Ewender:Nils:IT11FS 4 Feiler:Matthias:IT11FS 5 Wilms:Norman:IT11FS Chcete-li ze souboru zobrazit řádky 10 až 15, můžete příkazy propojit rourou. Nezapomeňte, že zobrazení 10. až 15. řádku znamená zobrazení šesti řádků! 10 Liepold:Michael:IT11FS 11 Aurich:Karl:IT11FS 12 Meyer:Frank:IT11FS nl zaci.txt head -n 15 tail -n 6 13 Jakob:Jens:IT11FS 14 Bischoff:Christian:IT11FS 15 Lehnert:Michael:IT11FS Příkaz tail nabízí ještě jednu zvláštnost. Parametrem -f zajistíte, že soubor se bude vypisovat automaticky vždy, když změní velikost. To se hodí hlavně pro vypisování logů. 94

95 4.4. FILTROVÁNÍ TEXTOVÝCH SOUBORŮ Řazení obsahu textových souborů Příkazem sort můžete řadit obsah textových souborů. Řazení probíhá podle ASCII hodnot, resp. podle pořadí znaků v kódové stránce (typicky podle UTF-8). Toto nastavení se řídí proměnnými LANG, LC_ALL nebo LC_COLLATE, pokud budou obsahovat některou z hodnot cs, cs_cz nebo cs_cz.utf-8, řazení zohlední také české znaky s diakritikou. Podobně to funguje třeba pro němčinu, kde lze přehlásky zohlednit nastavením hodnot na některou z de, de_de nebo de_de.utf-8. sort [Parametr] <soubor> Nejdůležitější parametry jsou: -b Ignorovat úvodní prázdné znaky. -d Řadit podle slovníkových kritérií, tzn. zohledňují se jen alfanumerické a prázdné znaky. -f Pro řazení převádět malá písmena na velká. -i Ignorovat netisknutelné znaky. -n Textové řetězce obsahující čísla řadit jako čísla. -r Řadit v obráceném pořadí. -k Sl1,Sl2 Řadit podle sloupců (začít u Sl1 a skončit u Sl2). -t sep Použít sep jako oddělovač sloupců (viz přepínač -k). -u V případě stejných řádků použít jen první. -o soubor Uložit výsledek do souboru, lze použít jméno vstupního souboru. Příklady sort -u zaci.txt head -n 5 Aurich:Karl:IT11FS Beslmeisel:Johann:IT11SE Bischoff:Christian:IT11FS Bittl:Erwin:IT11FA Seřadí seznam žáků a zobrazí prvních pět záznamů, více prázdných řádků je ignorováno. sort -t: -k3 -n /etc/passwd head -n 5 root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh sync:x:4:65534:sync:/bin:/bin/sync Seřadí seznam uživatelů systému podle jejich UID a zobrazí prvních pět záznamů. Ignorovat více po sobě jdoucích stejných řádků Pokud soubor obsahuje více po sobě jdoucích řádků se stejným obsahem, lze je ignorovat přepínačem -u. Příkaz uniq možnosti rozšiřuje například nastavením počtu řádků po sobě, které se ještě ignorovat nebudou Vybrat řádky z textových souborů Příkazem grep (ale podporují to také jiné programy) lze podle určitého vzoru vybrat ze souboru konkrétní řádky, podobně jako fungují zástupné znaky pro výběr souborů. Těmto vzorům se říká regulární výrazy (angl. regular expression, krátce regex nebo regexp). V následujícím příkladu se vypíší všechny řádky ze souboru, které obsahují jméno Michael. grep 'Michael' zaci.txt Hollmann:Michael:IT11FS Liepold:Michael:IT11FS Lehnert:Michael:IT11FS Hohmann:Michael:IT11FA Regulární výraz není vyhodnocován shellem, musí být proto uzavřen do apostrofů. U regulárních výrazů se znaky rozdělují do dvou kategorií podle funkce: 1. řídicí znaky, které mají zvláštní význam, 95

96 LEKCE IV ZPRACOVÁNÍ FOTOGRAFIÍ Z DATOVÉHO NOSIČE 2. normální znaky, které mohou být použity samy za sebe. Následuje výběr regulárních výrazů: ^ Značí začátek řádku. $ Značí konec řádku. < Začátek slova. > Konec slova. \d Číslice (0 9). \w Alfanumerické znaky (a z, A Z, 0 9). \s Bílé znaky (mezery, tabulátory, zalomení řádků \t\n\r\f).. Libovolný znak. + Předchozí výraz alespoň jednou (1 n). * Předchozí výraz v libovolném počtu (0 n).? Předchozí výraz maximálně jednou (0 1). {n,m} {n} Interval opakování, znak před závorkou n až mkrát. Počet opakování, znak před závorkou přesně nkrát. [...] Jeden ze skupiny znaků v závorce. [ ] Jeden ze znaků z uvedeného rozmezí [0-9], [a-z], [A-Z], [0-9a-zA-Z], [^...] Znak mimo znaky uvedené v závorce. [^ ] Znak mimo rozmezí znaků uvedených v závorce. a1 a2 Jeden, nebo druhý výraz. (...) Skupina výrazů. \ Zrušení speciálního významu následujícího znaku. \. pro tečku, \$ pro znak dolaru, Pokud byste chtěli najít všechna jména jako Maier (Mayr, Mair, Maier, Mayer, Meyer, Meier) nezávisle na velikosti prvního znaku, použili byste následující výraz: [mm][ae][iy]e?r [mm] m nebo M [ae] a nebo e [iy] i nebo y e? e jednou nebo vůbec r r 96

97 4.4. FILTROVÁNÍ TEXTOVÝCH SOUBORŮ Rozčlenění textových souborů do sloupců a polí Příkazem cut můžete soubor rozdělit do sloupců. To se hodí hlavně v případě, pokud potřebujete nějaký konkrétní sloupec z obsahu souboru. cut [Parametr] <soubor> Nejdůležitější parametry jsou: -d Určit oddělovač. -f Použít tento sloupec. Příklad Následující příklad vypíše shelly uživatelů v systému (také systémových uživatelů). Pomocí sort budeme ignorovat duplicitní záznamy. Použijeme k tomu sedmý sloupec souboru /etc/passwd. cut -d: -f7 /etc/passwd sort -u /bin/bash /bin/false /bin/sh /bin/sync /usr/sbin/nologin Počet řádků a slov v textovém souboru Pomocí příkazu wc můžete získat informace o počtu slov, bajtů, znaků a řádků. Nejdůležitější parametry jsou následující: -c Sečíst bajty. -m Sečíst znaky. -l Sečíst řádky. -w Sečíst slova. Příklad V následujícím příkladu spočítáme konfigurační soubory. Protože ls zobrazí pro každý soubor jeden řádek, stačí pomocí wc spočítat řádky. Tím získáme počet souborů. cnt=$(ls /etc/*.conf wc -l) echo $cnt souborů 36 souborů Záměna znaků Příkazem tr můžete zaměnit znaky za jiné (více k tématu na straně 73). tr [PARAMETR] řetězec1 [řetězec2] Nejdůležitější parametry jsou následující: -c Doplnit řetězec1. -d Znaky z řetězce1 odstranit, nikoliv nahradit. -t Nejprve řetězec1 zkrátit na délku řetězce2. Poznámka: Můžete zadat také výběr znaků, např. [abc5-9]. Příklady echo "01234" tr '123' 'ABC' 0ABC4 97

98 LEKCE IV ZPRACOVÁNÍ FOTOGRAFIÍ Z DATOVÉHO NOSIČE Cvičení: 1. Vyzkoušejte následující sekvenci příkazů. cat -n /etc/passwd cut -d: -f1 > users Vysvětlete, co se stalo. 2. Doplňte následující sekvenci tak, abyste použitím head a tail vypsali ze souboru users řádky 9 až 14. head users tail 3. Vypište pomocí sekvence příkazů obsahující head a tail řádek 2 ze souboru users. 4. Vypište obsah souboru users v opačném pořadí. 5. Vypište všechny řádky ze souboru /etc/passwd seřazené podle čísla UID (třetí sloupec, oddělovačem je : ), přičemž: (a) řádek s nejvyšším uživatelským ID vypište jako první, (b) řádek s nejnižším uživatelským ID vypište jako první. 6. Vytvořte skript se jménem lss, který bude vypisovat jen velikosti a názvy souborů (ls -l). 7. Vypište počet řádků souboru /etc/passwd. 8. Uveďte dvě možnosti, jak vypsat obsah souboru /etc/inittab s číslovanými řádky. 9. Očíslujte ve dvou krocích pomocí nl řádky souboru /etc/services, začněte číslem Co udělá příkaz tr se začátkem známého popěvku? echo HOLKA MODROOKÁ, NESEDÁVEJ U POTOKA tr [aeiou] i Zkuste vyřešit následující úlohu a dosáhnout uvedeného výsledku: HOLKA MODROOKÁ, NESEDÁVEJ U POTOKA ----> HALKA MADRAAKÁ, NASADÁVAJ A PATAKA 98

99 4.4. FILTROVÁNÍ TEXTOVÝCH SOUBORŮ 11. Caesarova šifra 9 Slavný římský vládce Julius Caesar prý používal pro přenos tajných poselství následující šifrování: Písmeno A nahradil písmenem D, B písmenem E atd. X zase písmenem A, Y písmenem B a Z písmenem C. S jakými parametry spustíte tr, abyste (a) poselství císaře zašifrovali a (b) následně zase dešifrovali? (c) Co znamená WKH TXLFN EURZQ IRA MXPSV RYHU WKH ODCB GRJ? 10 Cvičení (pro šikovné): 12. Jak z textového souboru odstraníte interpunkční znaménka? Tip: [:punct:] 13. Jak nahradíte všechny prázdné znaky na konci řádků? (Oktalově: \012 ) 14. Jak sestavíte setříděný seznam všech slov textového souboru? Každé slovo se v seznamu smí objevit pouze jednou. 15. Stáhněte si příkazem wget text knihy o Draculovi od Brama Stokera 11 a proveďte následující: cat 345.txt tr ' ' '\012' tr '[:upper:]' '[:lower:]' tr -d '[:punct:]' \ grep -v '[^a-z]' sort uniq -c sort -rn > vysledek.txt Pomocí less vysledek.txt si můžete výsledný soubor prohlédnout. (a) Sekvence příkazů vytvořila seznam slov podle frekvence jejich výskytů. Popište, jak proces proběhl. Poznámka: \012 je znak v osmičkové soustavě pro zalomení řádku grep -v '[^a-z]' propustí jen text (b) Jak byste sekvenci doplnili, aby se zobrazil celkový počet slov, která se v textu objevují jen jednou jedinkrát? 9 Viz 10 Jedná se o Pangram, dříve se hojně používaly pro testování dálnopisu a psacích strojů, dnes pro testování počítačových písem. 11 Podle Linux Journal č. 180, duben 2009, 99

100 LEKCE IV ZPRACOVÁNÍ FOTOGRAFIÍ Z DATOVÉHO NOSIČE 4.5 Kopírování souborů s obrázky Když už teď umíte filtrovat soubory, můžete je zkopírovat z různých fotoaparátů. Při kopírování upravíme jméno tak, aby obsahovalo datum, čas a pro jistotu jako ochranu proti duplicitám také jedinečné pořadové číslo. V prvním kroku se soubory zkopírují. V uvedeném příkladu používáme adresář fotak, pokud nebude zadán žádný parametr. V něm jsou uloženy obrázky z různých fotoaparátů. Pro reálný skript musíte samozřejmě použít také adresář /media, v němž jsou připojena různá média (USB disky, datové karty nebo fotoaparáty) s obrázky. INPUT=$1 OUTPUT=$2 if [ -z $INPUT ] ; then INPUT=fotak fi if [ -z $OUTPUT ] ; then OUTPUT=. fi fotak/img_8693.jpg fotak/imag0433.jpg fotak/img_8697.jpg fotak/img_cr2_0546.jpg FILES=$(find ${INPUT} -iname '*.jpg' \ -not -path '*thumbnails*' -print) for FILE in $FILES ; do echo $FILE done Příkazem find se rekurzivně vyhledávají soubory. Pomocí -iname ignorujeme rozdíly mezi velkými a malými znaky. Protože některé přístroje vytvářejí ke každému snímku ještě náhledový obrázek (angl. thumbnail), budeme adresáře s těmito soubory ignorovat. Pomocí cyklu for si následně nalezená jména vypíšeme Získání data a času Jakmile máme seznam obrázků, můžeme se pokusit vypsat jejich datum a čas. Připomínáme, že datum má následující záznamy (štítky): 0x132 0x9004 0x9003 0x0007 0x001d DateTime DateTimeDigitized DateTimeOriginal GPS čas (atomové hodiny) GPS čas Použijeme pole 0x132, resp. 0x9004. Pokud fotoaparát ukládá datum do jiného pole, pak je třeba skript patřičně upravit. INPUT=$1 OUTPUT=$2 if [ -z $INPUT ] ; then INPUT=fotak fi if [ -z $OUTPUT ] ; then OUTPUT=. fi FILES=$(find ${INPUT} -iname '*.jpg' \ -not -path '*thumbnails*' -print) for FILE in $FILES ; do EXIF_DATE=$( \ exif -i $FILE \ grep -e '^0x132' -e '^0x9004' \ cut -d' ' -f2 ) echo $EXIF_DATE done 2011:12:05 15:52: /04/02 18:03: :12:05 16:44: :04:20 10:50:51 Příkaz exif vypíše díky přepínači -i přehled použitých polí (štítků), pak oddělovač následovaný datem a časem. Pomocí grep si zobrazíte jen ty řádky, které obsahují text Tag 0x132 nebo 0x9004. Pomocí cut použijete jen druhý sloupec, tedy datum. Znak je shellem běžně interpretován jako roura, proto musí být uveden v apostrofech. 100

101 4.5. KOPÍROVÁNÍ SOUBORŮ S OBRÁZKY Formátování data a času Jistě si při pohledu na datum a čas všimnete, že jednou se jako oddělovač používá / a jindy zase :. Mezi datem a časem se nachází mezera. Pokud má být datum použito jako jméno souboru, pak je znak / nepřípustný. Ani dvojtečka není vhodná, zejména s ohledem na použití v systémech Windows. Z tohoto důvodu tyto znaky v následujícím kroku nahradíme podtržítky. INPUT=$1 OUTPUT=$2 if [ -z $INPUT ] ; then INPUT=fotak fi if [ -z $OUTPUT ] ; then OUTPUT=. fi FILES=$(find ${INPUT} -iname '*.jpg' \ -not -path '*thumbnails*' -print) for FILE in $FILES ; do EXIF_DATE=$( \ exif -i $FILE \ grep -e '^0x132' -e '^0x9004' \ cut -d' ' -f2 \ tr '/: ' ' ' \ ) echo $EXIF_DATE done 2011_12_05_15_52_ _04_02_18_03_ _12_05_16_44_ _04_20_10_50_ Obrázky se stejným datem Rozlišení času je zde jedna sekunda. To ale může znamenat, že v jediné sekundě mohlo být nasnímáno více obrázků. Proto je potřeba jako další rozlišovací kritérium použít pořadové číslo, aby měly obrázky vytvořené ve stejné sekundě rozdílná jména souborů. 12 INPUT=$1 OUTPUT=$2 COUNTER=1 if [ -z $INPUT ] ; then INPUT=fotak fi if [ -z $OUTPUT ] ; then OUTPUT=. fi FILES=$(find ${INPUT} -iname '*.jpg' \ -not -path '*thumbnails*' -print) for FILE in $FILES ; do EXIF_DATE=$( \ exif -i $FILE \ grep -e '^0x132' -e '^0x9004' \ cut -d' ' -f2 \ tr '/: ' ' ' \ ) OFILE=img_${EXIF_DATE}_$( \ printf "%04d" ${COUNTER} \ ).jpg echo $OFILE COUNTER=$(($COUNTER+1)) cp "${FILE}" "${OUTPUT}/${OFILE}" done img_2011_12_05_15_52_51_0001.jpg img_2012_04_02_18_03_29_0002.jpg img_2011_12_05_16_44_10_0003.jpg img_2011_04_20_10_50_51_0004.jpg Příkaz printf zajistí, že výsledné číslo bude mít vždy čtyři pozice a úvodní nuly. Při kopírování musí být proměnná uzavřena do uvozovek, protože jméno souboru může obsahovat mezeru (mezera funguje v shellu jako oddělovač parame- 12 Předpokladem je správné nastavení času u fotoaparátu. 101

102 LEKCE IV ZPRACOVÁNÍ FOTOGRAFIÍ Z DATOVÉHO NOSIČE trů). Pokud si nyní prohlédnete soubory v adresáři, zjistíte, že jsou seřazené podle data a času a tedy v chronologickém pořadí Automatické otočení obrázků U některých snímků zjistíte, že je nutné je otočit o 90. Mnoho grafických prohlížečů to udělá automaticky. Řídí se informací v exif (orientace: vlevo dole), pokud ji naleznou. Nedělají to ale všechny programy. Obrázky automaticky otočíte příkazem exifautotran (balík libjpeg-progs). exifautotran [seznam souborů] Cvičení (pro šikovné): 1. Rozšiřte skript tak, aby se po kopírování souborů spustil příkaz exifautotran a obrázky, u kterých je to potřeba, otočil. 2. Rozšiřte skript tak, aby kopíroval také videa (s příponou AVI) a snímky ve formátu RAW (s příponou CR2). Tady už datum nezjistíte pomocí exif, takže jméno souboru vytvářejte jen z pořadového čísla. 3. Příkazem ufraw (balík ufraw) lze převádět raw obrázky do formátu JPG. (a) Informujte se prostřednictvím manuálových stránek, jak funguje příkaz ufraw, resp. ufraw-batch. Prozkoumejte parametry --rotate, --out-type, --exif a --overwrite. (b) Zapracujte do skriptu příkaz ufraw-batch tak, aby se při kopírování raw snímků automaticky vytvářela jejich JPG verze s informacemi exif. Jméno souboru JPG by mělo být vytvořeno podle předchozích pravidel. 4.6 Vytvoření náhledů Pro vytvoření přehledného obrazového alba se používají malé náhledové obrázky, angl. thumbnails. Volně dostupná sada programů ImageMagick (balík imagemagick) obsahuje příkaz convert, který provádí různé změny obrázků (převod mezi formáty, změny velikostí apod.). Když ho spustíte s parametrem -thumbnail 100, obrázek bude automaticky zmenšen na velikost o šířce 100 pixelů. Správný poměr mezi stranami zůstane zachován. convert -thumbnail 100 berlin_01.jpg thumb_berlin_01.jpg Obrázek 4.2: Originál rozměry 2304x307 Cvičení: Vytvořte skript, který ke všem souborům JPG vytvoří jejich náhledy. 102 Obrázek 4.3: Náhled rozměry 133x100

103 4.7. HRÁTKY S OBRÁZKY 4.7 Hrátky s obrázky S ImageMagickem můžete provádět ještě další hrátky, které vám obrázky a fotky vylepší. Tato kapitola už nijak nesouvisí se zkouškou Linux Essentials, jde jen o zábavné doplnění. Vyzkoušejte všechny níže uvedené parametry, i když nevíte, co znamenají nebo jim nerozumíte. U všech následujících obrázků používáme originální fotku kastanie.jpg, měníme její rozměry, aby nebyla tak velká, a výsledek převádíme do PNG souboru. PNG soubory mají tu výhodu, že podporují transparentnost, díky čemuž je možné používat více efektů než u JPG souborů Orámování obrázků Obrázky vypadají při zobrazení lépe, kdy jsou orámovány. S ImageMagickem je orámování snadné, pročtěte si k tomu online dokumentaci. jednoduché orámování, convert kastanie.jpg -thumbnail 200 -mattecolor peru -frame 15x ka_s01.png 3D efekt pomocí -raise, convert kastanie.jpg -thumbnail 200 -raise 8 ka_s02.png 3D efekt pomocí +raise, convert kastanie.jpg -thumbnail 200 +raise 8 ka_s03.png s měkkým stínem, convert kastanie.jpg -thumbnail 200 \ \( +clone -background Blue -shadow 80x3+5+5 \) \ +swap -background none -layers merge +repage ka_s06.png s ostrým stínem, convert kastanie.jpg -thumbnail 200 \ \( +clone -background Blue -shadow 100x4+7+7 \) \ +swap -background none -layers merge +repage ka_s07.png 13 Pro příklady jsou použity upravené návrhy a příklady ze stránek ImageMagicku. 103

104 LEKCE IV ZPRACOVÁNÍ FOTOGRAFIÍ Z DATOVÉHO NOSIČE s rámečkem. convert kastanie.jpg -thumbnail 200 \ \( +clone -shave 20x20 -fill gray50 -colorize 100% \ -mattecolor gray50 -frame 20x \) \ -compose VividLight -composite ka_s08.png Ořezávání obrázků elipsa, convert kastanie.jpg -thumbnail 200 -alpha set \ -background none -vignette 0x4 ka_b01.png obdélník s přechodem, convert kastanie.jpg -thumbnail 200 \ -alpha set -virtual-pixel transparent -channel A \ -morphology Distance Euclidean:1,20\! +channel ka_b02.png obdélník se zakulacenými rohy a přechodem, convert kastanie.jpg -thumbnail 200 \ -alpha set -virtual-pixel transparent -channel A \ -blur 0x20 -level 50%,100% +channel ka_b03.png obdélník se zakulacenými rohy, convert kastanie.jpg -thumbnail 200 \ -alpha set -virtual-pixel transparent -channel A \ -blur 0x20 -threshold 50% +channel ka_b04.png s kruhovým rozmazáním, convert kastanie.jpg -thumbnail 200 \ -alpha set -virtual-pixel transparent -channel A \ -radial-blur 0x100 +channel ka_b05.png 104

105 4.7. HRÁTKY S OBRÁZKY savý papír, convert kastanie.jpg -thumbnail 200 \ \( +clone -alpha extract -virtual-pixel black \ -spread 10 -blur 0x3 -threshold 50% -spread 4 -blur 0x.7 \) \ -alpha off -compose Copy_Opacity -composite ka_b06.png Polaroid 1, convert kastanie.jpg -thumbnail 200 \ -bordercolor white -border 6 \ -bordercolor grey60 -border 1 \ -background none -rotate 6 \ -background black \( +clone -shadow 60x4+4+4 \) +swap \ -background none -flatten ka_b07.png Polaroid 2, convert kastanie.jpg -thumbnail 200 \ -bordercolor snow -background black +polaroid ka_b08.png rámečky 14 convert kastanie.jpg -thumbnail 200 -matte -compose Copy \ -bordercolor Black -border 2 \ -bordercolor Sienna -border 3 \ -bordercolor Black -border 1 \ -bordercolor None -border 2 \ -bordercolor Black -border 2 \ -bordercolor Peru -border 3 \ -bordercolor Black -border 1 \ -compose Over \ \( fancy_add.png \) -gravity NorthWest -composite \ \( fancy_add.png -flip \) -gravity SouthWest -composite \ \( fancy_add.png -flop \) -gravity NorthEast -composite \ \( fancy_add.png -flip -flop \) -gravity SouthEast -composite \ -compose DstOut \ \( fancy_sub.png \) -gravity NorthWest -composite \ \( fancy_sub.png -flip \) -gravity SouthWest -composite \ \( fancy_sub.png -flop \) -gravity NorthEast -composite \ \( fancy_sub.png -flip -flop \) -gravity SouthEast -composite \ ka_b11.png Mnohé další příklady a možnosti naleznete na internetu s pomocí vyhledávačů. 14 Obrázky pro rámečky použity z DIY Frames Section of Anthony s Icon 105

106 LEKCE IV ZPRACOVÁNÍ FOTOGRAFIÍ Z DATOVÉHO NOSIČE 4.8 Otázky 1. Co má za úkol HAL? 2. Ve kterém adresáři najdete logy Linuxu? 3. Do kterého souboru se ukládají všechna systémová hlášení? 4. Jak zobrazíte hlášení, která vznikla při startu systému? 5. USB disk po zasunutí do zdířky nefunguje. Jak dosáhnete toho, aby se systémová hlášení při pokusu o připojení disku trvale vypisovala na obrazovku? 6. Proč musíte USB disk bezpečně odpojit? 7. Jak vypíšete všechna připojená USB zařízení? 8. Jak pomocí find zkopírujete soubory, které nejsou starší než 24 hodin a větší než 10 kb? 9. Jak zabráníte příkazu find, aby neprohledával více než dvě adresářové úrovně? 10. Jaký další příkaz slouží ke hledání souborů a které výhody a nevýhody má tento nástroj ve srovnání s find? 11. Pomocí kterého příkazu najdete spustitelné programy (příkazy), které lze spustit bez uvedení adresářové cesty? 12. Pomocí které proměnné můžete doplnit cesty, kde se hledají spustitelné programy (příkazy)? 13. Při připojení USB disku se zobrazí hlášení, že nebyl rozeznán formát nebo že disk obsahuje chyby. Kterým příkazem USB disk otestujete? 14. Co je chápáno pod pojmem žurnálovací souborový systém? 106

107 4.8. OTÁZKY 15. Jak připojíte a odpojíte USB disk ručně? 16. Kterým příkazem (včetně parametrů) můžete určit zařízení, pod nímž bude dostupný USB disk? 17. Jak se nazývá zařízení, pod kterým je dostupný SCSI pevný disk? (a) druhý primární oddíl třetího disku: (b) první logický oddíl prvního disku: 18. USB disk je naformátovaný jako VFAT. Jak souborový systém otestujete na chyby? 19. Na USB disku je poškozený souborový systém. Jak ho přeformátujete na systém VFAT? 20. Které příkazy zobrazí doplňující informace z fotografií? 21. Jak zní sekvence příkazů, pomocí níž zobrazíte Model fotoaparátu u fotografie IMG4711.JPG? 22. U jednoho souboru máte vypsat řádky Jakým způsobem toho dosáhnete? 23. Jakým způsobem seřadíte obsah souboru /etc/passwd podle třetího sloupce a v obráceném pořadí? 24. Textový řetězec má být převeden na malá písmena. Jakým příkazem to provedete? 25. Jak uložíte aktuální datum ve formátu _18:45 do proměnné aktdate? 107

108 LEKCE IV ZPRACOVÁNÍ FOTOGRAFIÍ Z DATOVÉHO NOSIČE 108

109 Kapitola 5 Lekce V Práce v síti Každá třída chce fotografie ze svého školního výletu ukázat všem ostatním. K tomutu účelu se na serveru v lokální síti zřídí obrazová galerie. Abychom to dokázali, nejprve si v této lekci vysvětlíme nezbytné základy týkající se počítačových sítí a pak si nainstalujeme webový server. Vytvoření fotogalerie je tématem další lekce. Následující kapitoly popisují, jak se linuxový počítač připojí do lokální sítě, aby se mohlo vytvořit připojení k internetu. Před samotnou realizací si nejprve objasníme teoretické základy, kam patří informace o protokolech TCP/IP a principy adresování IPv4 a IPv6. Poté si na typickém příkladu ukážeme, které kroky jsou nutné pro správné nastavení sítě na linuxovém počítači. V části s otázkami si znovu projdeme nejdůležitější aspekty konfigurace sítě v Linuxu. Následně si znalosti procvičíme prakticky při nastavování síťového připojení linuxového počítače. Nakonec na intranetový server nainstalujeme webový server a otestujeme jeho funkčnost. Případně na serveru nastavíme možnost přístupu přes SSH. Obsah 5.1 Internet a rodina protokolů TCP/IP IPv IPv IP adresy a názvy počítačů pomocí DNS Ruční nastavení sítě Automatické nastavení sítě pomocí DHCP Otázky

110 LEKCE V PRÁCE V SÍTI 5.1 Internet a rodina protokolů TCP/IP Protokoly rodiny TCP/IP jsou široce rozšířené a používají se dnes prakticky ve všech oblastech komunikačních technologií. Je to výsledek vývoje, který začal už v šedesátých letech 20. století díky ministerstvu obrany Spojených států amerických. Cílem bylo jednak zlepšit vzájemnou spolupráci mezi výzkumnými vojenskými institucemi a také s univerzitami a jednak umožnit propojení různorodých sítí různých výrobců a vytvořit tak síť sítí, Internet. Pojem Internet zahrnuje nejen propojení více sítí, ale také konkrétní celosvětovou komunikační síť. Jeho úspěch spočívá v tom, že velké množství účastníků může využívat centrální služby, např. výměnu dat přes FTP, elektronickou poštu (přes SMTP), vzdálené ovládání počítače pomocí SSH nebo třeba Telnet. Rodina protokolů TCP/IP je pojmenovaná po hlavních z nich, Transmission Control Protocol a Internet Protocol, které převzaly hlavní úlohu. V odborném žargonu se všem protokolům této skupiny také říká TCP/IP Stack. Protokoly TCP/IP jsou navržené tak, aby byla síť maximální možnou měrou stabilní a aby byl výpadek jednotlivých síťových uzlů automaticky přesměrován. K základním výhodám protokolů (které jsou nezávislé na výrobci) patří, že jsou použitelné na všech počítačích a nabízejí tedy široké možnosti nasazení v různých oblastech. Kromě toho lze vytvářet velké sítě s nenáročnou centrální správou. Obrázek 5.1: Vrstvy TCP/IP Protokoly internetové vrstvy IP Internet Protocol Nestavový nespojovaný protokol s celosvětově zaručeným jednoznačným adresováním přenáší datové pakety po síti nebo přes routery mezi různými sítěmi. ICMP Internet Control Message Protocol Řídí datový provoz v internetu, přenáší řídicí informace mezi stanicemi a poskytuje diagnostické informace pro internetovou a transportní vrstvu. ARP Address Resolution Protocol Slouží k sdělení fyzické MAC adresy při znalosti logické IP adresy. Jeden z nejznámějších programů, který používá ICMP, je ping. Pomocí ping lze zjistit, jestli je protějšek vůbec dostupný a jak dlouho k němu trvá přenos dat. Protokoly transportní vrstvy TCP Transmission Control Protocol Stavový spojovaný protokol, který umožňuje spolehlivý obousměrný přenos souvisejících datových proudů. UDP User Datagramm Protocol Nestavový nespojovaný protokol, který obousměrně přenáší jednotlivé datové segmenty mezi stanicemi; kvůli chybějící kontrole stavu je nespolehlivý, ale také rychlejší než TCP. Protokoly aplikační vrstvy FTP File Transfer Protocol Umožňuje rychlý přenos dat mezi klientem a serverem. 110

111 5.2. IPV4 SMTP Simple Mail Transfer Protocol Výměna elektronické pošty mezi dvěma systémy. SSH NFS Secure Shell Umožňuje prostřednictvím příkazového řádku interaktivní přístup ke vzdálenému počítači, na rozdíl od telnetu je spojení pomocí SSH šifrované. Network File System Přístup k datům přes síť. HTTP Hypertext Transfer Protocol Přenos hypertextových stránek přes World Wide Web. Adresování protokolů, resp. služeb aplikační vrstvy K odeslání dat konkrétní službě v aplikační vrstvě se na úrovni TCP/IP k adresování používají tzv. porty, např. FTP (20/21), SMTP (25), SSH (22), HTTP (80) a HTTPS (443). 5.2 IPv4 Pomocí IP adresy lze každý počítač jednoznačně adresovat. IP adresa má délku čtyř bajtů (=32 bitů) a dělí se na dvě části: ID sítě a ID hosta (počítače). Obrázek 5.2: Adres ní formát IPv4 Maska podsítě odděluje ID sítě od ID hosta v IP adrese. Skládá se ze 32 bitů. Bitové pozice, na kterých je v masce podsítě 1, patří v IP adrese do ID sítě. Bitové pozice, na kterých je v masce podsítě 0, patří v IP adrese do ID hosta. Binární jedničky v masce podsítě jsou vzájemně zarovnány doleva. Tečková decimální notace IPv4 adres a masky podsítě IP adresa se dělí na čtyři skupiny po osmi bitech. Každá skupina je zapsaná decimálně a oddělená tečkou. Obrázek 5.3: Tečková decimální notace IPv4 adres Maska podsítě se zapisuje v tzv. notaci CIDR: Po / následuje počet bitů nastavených na 1. Příklady: odpovídá /8, odpovídá /16, odpovídá /25. Třídy IPv4 adres Adresa IPv4 může patřit do jedné z pěti adresních tříd: Třídy A, B a C jsou zamýšlené pro různě velké sítě. Výhoda rozdělení na třídy spočívá v možnosti upravit adresy podle potřeb organizačních struktur. Výjimku přestavuje třída D, u níž jde o adresování skupiny hostů, které spolu logicky souvisejí (Multicast). Multicastové přenosy se používají např. u IP TV nebo u služeb typu video on demand. Třída E se nepoužívá a je rezervovaná pro budoucí použití. 111

112 LEKCE V PRÁCE V SÍTI Třída Rozsah IP adres od do Standardní maska podsítě Decimálně Notace CIDR A /8 B /16 C /24 D Oblast Multicast E Rezervováno Tabulka 5.1: Adresní třídy IPv4 Třída Rozsah IP adres od do Notace CIDR Poznámka A /8 A sítě /12 16 B sítě B /16 B síť pro Automatic Private IP Addressing (APIPA) C / C sítě Tabulka 5.2: Soukromé IPv4 adresy Zvláštní adresy IPv4 Adresa celé sítě a všesměrové vysílání Adresa celé sítě je nejnižší adresa, tedy hodnota všech bitů v ID hosta je 0. Adresa všesměrového vysílání (angl. broadcast) je nejvyšší adresa, tj. všechny bity host ID jsou nastavené na 1. Loopback adresa Další speciální adresa je loopback s hodnotou Pakety odeslané na tuto adresu slouží k testovacím účelům, jsou hned přijaty a neopustí počítač. Upozornění: Tyto speciální adresy nesmí být použity pro adresování počítačů! Soukromé IPv4 adresy Ve třídách A, B a C byly vytvořeny rozsahy pro soukromé adresování. Jsou určeny pro lokální sítě (LAN), které nevyžadují veřejné adresy. Soukromé IP adresy nejsou směřovány (routovány) do internetu. 5.3 IPv6 Použitelný adresní prostor IPv4 byl rozčleněn jen do tří tříd, proto nebylo vždy možné nakládat s IPv4 adresami efektivně. To vedlo v devadesátých letech k poznání, že v dohledné době nastane nedostatek adres, a proto bude potřeba nové adresní schéma. Dlouhodobým řešením by měl být internetový protokol verze 6 (IPv6), který řeší dosud známé problémy s dostupností adres a routováním. Zohledňuje také požadavky budoucích aplikací jako např. multimédií nebo videa na žádost. Výhody IPv6 Rozšířený adresní prostor: Použitím 128 bitů dosahuje adresní rozsah teoreticky adres. Automatické rozdělování a nastavení IPv6 adres (autokonfigurace). Doplňkové bezpečnostní volby pro bezpečnou výměnu dat prostřednictvím VPNs (IPsec). Podpora kvalitní služby (Quality of Service, QoS), např. upřednostnění vybraných datových přenosů. Zjednodušené routování. Adresní oblasti IPv6 V rámci IPv6 jsou definované různé adresní oblasti se speciálním určením a rozdílnými vlastnostmi. Adresy IPv6 se nerozdělují do tříd, místo toho existují tři oblasti. Unicast Anycast Konkrétní příjemce. Libovolný příjemce ze skupiny. 112

113 5.4. IP ADRESY A NÁZVY POČÍTAČŮ POMOCÍ DNS Multicast Každý příjemce ze skupiny. U IPv6 neexistuje všesměrové vysílání (broadcast)! Adresní typy IPv6 Uvnitř adresní oblasti Unicast existují další typy adres. Global Unicast (2000::/3) Celosvětově platné, globálně routovatelné, přidělovány provozovatelem sítě. Unique Local Unicast (fc00::/7) Soukromé adresy, které se na internetu neroutují. Link Local adresy (fe80::/10) Používají se uvnitř jedné podsítě a vůbec se neroutují. Adresní formát IPv6 Na obrázku vidíte příklad struktury pro celosvětově platnou adresu IPv6 (Global Unicast). Obrázek 5.4: Adresní formát IPv6 Celkových 128 bitů se rozděluje na 64 bitů pro prefix podsítě a 64 bitů pro ID rozhraní. Prefix podsítě se skládá ze 45 bitů pro identifikaci firmy nebo organizace (angl. Top Level Aggregation, TLA, a Next Level Aggregation, NLA) a 16 bitů pro adresu podsítě (angl. Site Level Aggregation, SLA). V prefixu podsítě jsou první tři bity rezervované pro identifikaci typu adresy (zde 001 pro Global Unicast). ID rozhraní se mimo jiné odvozuje od MAC adresy síťové karty. Zápis IPv6 adres Adresy IPv6 se zapisují v osmi blocích po dvou bajtech. Bloky se zadávají hexadecimální notací, oddělují se dvojtečkami. Nuly na začátku bloku lze vypustit, stejně tak bloky, které jsou tvořené jenom nulami. Za sebou následující dvojtečky lze nahradit jedinou, pokud je zachován jednoznačný význam. 2001:0db8:0000:0000:0000:0000:1428:57ab se zkrátí na 2001:0db8::1428:57ab 5.4 IP adresy a názvy počítačů pomocí DNS Pro uživatele nejsou IP adresy příliš přehledné a pamatují si mnohem lépe jména nebo názvy. I na počítače v internetu je možné přistupovat prostřednictvím jejich jmen. Převod na jména zajišťuje služba Domain Name System (DNS). Jedná se o hierarchické jmenné schéma, v němž se jméno počítače skládá (čteno zprava doleva) z kořenové domény, domény nejvyšší úrovně, domény druhé úrovně, podle potřeby různých subdomén a jména samotného počítače. Každá součást jména se odděluje tečkou. Kompletní jméno, které je složené ze všech uvedených prvků, se označuje za Fully Qualified Domain Name (FQDN). Úkolem serveru DNS je převádět jména na adresy a zase zpátky. Pár příkladů kompletních doménových jmen: Städtische Berufsschule für Informationstechnik München (Městská odborná škola pro informační techniku v Mnichově). ulm-ea3-i.ulm.de.net.dtag.de. DNS jméno jednoho routeru společnosti Telekom AG. ftp.arl.army.mil. Jeden z prvních internetových serverů. Obecně prospěšná společnost Liberix, podporující svobodný software v ČR. Tečka pro kořenovou doménu se vynechává. Uniform Resource Locator (URL) Uniform Resource Locator (URL) umožňuje jednotným způsobem přistupovat k různým službám v síti nebo na internetu. Formát URL se skládá z typu služby (např. http, ftp, ), adresy nebo DNS jména serveru, na němž je služba dostupná, a případně názvu cílového adresáře a nebo souboru. Příklady URL: ftp://ftp.debian.org/debian/readme.html 113

114 LEKCE V PRÁCE V SÍTI Obrázek 5.5: DNS URL zadaná pomocí IPv6 adres musí být uzavřena do hranatých závorek Ruční nastavení sítě Mnoho distribucí používá pro nastavení sítě program NetworkManager, populární nástroj pro správu síťových připojení v Linuxu, který usnadňuje také přístup k bezdrátovým sítím. Často jsou také používány distribuční nástroje (např. yast v SUSE). NetworkManager je díky svému jednoduchému ovládání rozšířený hlavně na desktopu. Na serverech se síť nastavuje ručně. To je případ i následujícího scénáře, v němž je krok za krokem popsané nastavení sítě na linuxovém stroji linux1. Nejprve nastavíme IPv4 adresu síťové karty, pak router DSL jako standardní bránu a nakonec překlad jmen. Obrázek 5.6: Modelová situace pro nastavení sítě Nastavení adresy síťových karet Aktuální nastavení síťových karet zjistíte pomocí příkazu ifconfig: ifconfig -a eth0 Link encap:ethernet HWadr 00:0C:29:C7:1E:69 inet adr: Všesměr: Maska: inet6-adr: fe80::20c:29ff:fec7:1e69/64 Rozsah:Linka AKTIVOVÁNO VŠESMĚROVÉ_VYSÍLÁNÍ BĚŽÍ MULTICAST MTU:1500 Metrika:1 RX packets:6 errors:0 dropped:0 overruns:0 frame:0 TX packets:13 errors:0 dropped:0 overruns:0 carrier:0 114

115 5.5. RUČNÍ NASTAVENÍ SÍTĚ kolizí:0 délka odchozí fronty:1000 RX bytes:939 (939.0 b) TX bytes:1378 (1.3 Kb) Přerušení:18 lo Link encap:místní smyčka inet adr: Maska: inet6-adr: ::1/128 Rozsah:Počítač AKTIVOVÁNO SMYČKA BĚŽÍ MTU:16436 Metrika:1 RX packets:34 errors:0 dropped:0 overruns:0 frame:0 TX packets:34 errors:0 dropped:0 overruns:0 carrier:0 kolizí:0 délka odchozí fronty:0 RX bytes:2304 (2.2 Kb) TX bytes:2304 (2.2 Kb) wlan0 Link encap:ethernet HWadr 00:80:5a:54:48:cb AKTIVOVÁNO VŠESMĚROVÉ_VYSÍLÁNÍ BĚŽÍ MULTICAST MTU:1500 Metrika:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 kolizí:0 délka odchozí fronty:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) V tomto příkladu se nacházejí tři síťová rozhraní: Síťová ethernetová karta jako zařízení eth0 s IPv4 adresou a IPv6 adresou fe80::20c: 29ff:fec7:1e69. Dále je k dispozici dosud nenastavená bezdrátová karta (wlan0). A zbývá ještě virtuální síťové rozhraní neboli loopback lo, které reprezentuje samotný počítač, a to s IPv4 adresou (resp. IPv6 adresou ::1). Uvedené jsou ještě další informace, např. hardwarové adresy, MAC adresy jednotlivých karet, přiřazené masky podsítě, IPv4 adresy pro všesměrové vysílání (angl. broadcast) a další stavové informace. Přepínač -a zajistí, že ifconfig zobrazí nastavení všech dostupných síťových karet, a to i těch nenastavených. Pomocí ifconfig můžete ethernetové kartě přiřadit jinou IPv4 adresu: ifconfig eth up Pozor: Konfigurace se ihned změní! Pokud se má použít nestandardní maska podsítě, je potřeba kromě masky zadat také novou adresu pro všesměrové vysílání. ifconfig eth netmask broadcast up Zadání ve formátu CIDR je také možné: ifconfig eth /28 Jakmile je IP adresa počítače linux1 správně nastavená, můžete z tohoto stroje pomocí pingu vyzkoušet ( pingnout ), jestli je v tomto segmentu sítě dostupný nějaký další počítač: ping PING ( ) 56(84) bytes of data. 64 bytes from : icmp_seq=1 ttl=64 time=0.574 ms 64 bytes from : icmp_seq=2 ttl=64 time=0.053 ms 64 bytes from : icmp_seq=3 ttl=64 time=0.051 ms ^C ping statistics packets transmitted, 3 received, 0% packet loss, time 1998ms rtt min/avg/max/mdev = 0.051/0.226/0.574/0.246 ms Poznámka: Zde byl ping po několika řádcích výpisu přerušen klávesovou kombinací Ctrl+c. Nastavení výchozí brány Počítač linux1 má být přes DSL router připojený k internetu, takže musí dostat od routeru přidělenu IP adresu. V tomto modelovém příkladě je v síti jen jeden router, označuje se jako výchozí brána a stará se o směrování dat do ostatních sítí. Příkazem route se DSL router nastaví jako výchozí brána na počítači linux1: route add default gw

116 LEKCE V PRÁCE V SÍTI Platnost výchozí brány si můžete ověřit příkazem route, který vypisuje routovací (směrovací) tabulku linuxového počítače. Pokud je v prvním sloupci napsáno default, je brána nastavená správně. route Směrovací tabulka v jádru pro IP Adresát Brána Maska Přízn Metrik Odkaz Užt Rozhraní default UG eth0 link-local * U eth * U eth0 V tomto okamžiku už by mělo být funkční spojení s počítači v internetu, což si můžete ověřit pomocí pingu např. na veřejný DNS server od Googlu: ping Nastavení překladu jmen Ještě je potřeba nastavit překlad jmen, aby byl linux1 v internetu dostupný také pod názvem. Adresa jmenného serveru (DNS) se zapíše do souboru /etc/resolv.conf. V běžných případech se o překlad jmen postará router DSL, potom bude záznam v souboru /etc/resolv.conf vypadat takto: nameserver Funkčnost překladu jmen ověříte příkazem nslookup (ten je ovšem už zastaralý) nebo dig: dig musin.muenchen.de ; <<>> DiG <<>> musin.muenchen.de ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;musin.muenchen.de. IN A ;; ANSWER SECTION: musin.muenchen.de. 5 IN A musin.muenchen.de. 5 IN A ;; Query time: 4 msec ;; SERVER: #53( ) ;; WHEN: Mon Apr 16 18:27: ;; MSG SIZE rcvd: 67 nslookup musin.muenchen.de Server: Address: #53 Non-authoritative answer: Name: musin.muenchen.de Address: Name: musin.muenchen.de Address: Pokud nebude překlad jmen s DSL routerem fungovat, bude potřeba zapsat do souboru /etc/resolv.conf adresu DNS serveru vašeho poskytovatele připojení (např ) nebo nějakého jiného důvěryhodného DNS serveru. V malých lokálních sítích nebo pro jednotlivé počítače, pro něž nebývá k dispozici DNS server (třeba nejsou připojené do internetu), může funkci překladu jmen plnit soubor /etc/hosts, do něhož se zapisují jednotlivé názvy počítačů a jejich IP adresy. Trvalé uložení síťové konfigurace Pro trvalé uložení konfigurace sítě jen nejlepší použít administrativní nástroje, které vám nabízí vaše distribuce. Např. v Ubuntu jde o nástroj pro nastavení sítě v Ovládacím centru GNOME, v SUSE je to yast. Konfigurační soubory pro síťová rozhraní se v různých distribucích nacházejí na různých místech. 116

117 5.6. AUTOMATICKÉ NASTAVENÍ SÍTĚ POMOCÍ DHCP Distribuce založené na Debianu Např. Ubuntu: /etc/network/interfaces Nápověda: man 5 interfaces. SUSE Red Hat Konfigurační soubory v adresáři /etc/sysconfig/network/ pro eth0 např. ifcfg-eth0. Konfigurační soubory v adresáři /etc/sysconfig/networkscripts/ pro eth0 např. ifcfg-eth Automatické nastavení sítě pomocí DHCP Ruční nastavení sítě je zdlouhavé a náchylné na chyby, automatická konfigurace prostřednictvím Dynamic Host Configuration Protocol (DHCP) je rozhodně pohodlnější. V takovém případě vyjde požadavek na konfiguraci od klienta. DHCP server odpoví a poskytne klientovi všechny nezbytné údaje (např. IP adresu, masku sítě, adresu brány a DNS serveru apod.). Všechny distribuce jsou po své instalaci připravené na roli klienta pro DHCP. Na pozadí se spouští služba dhcpcd, resp. dhclient, která požádá o síťovou konfiguraci. Ve výše uvedeném modelovém příkladu by stačilo aktivovat DHCP server, který je součástí DSL routeru. Cvičení: Připojení počítačů do sítě a jejich statická konfigurace 1. Zjistěte síťové nastavení svého počítače a zapište následující: IPv4 adresa: IPv4 síť: IPv4 všesměrové vysílání: IPv6 adresa: 2. Zjistěte IPv4 a IPv6 adresy svého souseda a vyzkoušejte vzájemné spojení pomocí ping pro IPV4 a pomocí ping6 pro IPv6. 3. Váš počítač je momentálně nastavený tak, že používá DHCP. Zadejte příkaz, kterým nastavíte první ethernetové rozhraní na IPv4 adresu zjištěnou v první úloze. 4. Znovu si zjistěte síťové nastavení vašeho počítače a ověřte si, zda můžete souseda stále kontaktovat prostřednictvím IPv4. 5. Nastavte si výchozí bránu. Použijte IPv4 adresu routeru, kterou vám sdělí lektor kurzu. Ověřte pomocí ping na , že routování funguje správně. 6. Nastavte překlad jmen. Použijte IPv4 adresu DNS serveru, kterou vám sdělí lektor kurzu. Vyzkoušejte překlad jmen pro musin.muenchen.de. 7. Nyní byste měli konfiguraci sítě, kterou jste provedli v předchozích úlohách, uložit trvale. Je potřeba ji zapsat do souboru /etc/network/interfaces (tento se používá v systémech založených na Debianu, tedy i v Ubuntu). Počítač je stále nastavený na automatickou konfiguraci přes DHCP, takže záznam pro první ethernetové rozhraní vypadá následovně: auto eth0 iface eth0 inet dhcp Změňte tedy tento záznam v souboru /etc/network/interfaces a vložte do něj připravenou konfiguraci (xxx nahraďte za své konkrétní hodnoty): auto eth0 iface eth0 inet static address xxx netmask gateway xxx # Adresa IPv4 # Maska sítě # Výchozí brána Restartujte počítač a otestujte, zda je nastavený tak, jak jste chtěli. 117

118 LEKCE V PRÁCE V SÍTI Cvičení: Instalace webového serveru 1. Pro zpřístupnění fotografií ze školního výletu potřebujeme, jak je uvedeno v našem modelovém příkladu (viz obrázek 5.6 na straně 114), nainstalovat webový server Lighttpd. Jedná se rychlý a nenáročný HTTP server, který se navíc ještě snadno nastavuje. Instalace se provede následovně: sudo apt-get install lighttpd Po instalaci je server hned aktivní a měl by reagovat na požadavky ze všech síťových rozhraní na standardním portu 80. Ukázat si to můžeme na výstupu následujícího příkazu: netstat -apn grep ":80" tcp : :* LISTEN 3939/lighttpd Výpis znamená, že program lighttpd jako proces číslo 3939 naslouchá na všech rozhraních ( ) přes TCP na portu 80 (HTTP). Server můžete otestovat vytvořením jednoduché stránky a jejím zobrazením v prohlížeči. echo '<HTML><BODY><P>Funguje to!</p></body></html>' > /var/www/index.html Do adresní řádky prohlížeče zadejte adresu serveru. Pokud to nefunguje, zkontrolujte stav serveru pomocí service lighttpd status, případně ho spusťte pomocí service lighttpd start. Úkol: Nainstalujte a otestujte server Lighttpd podle výše uvedených kroků. 2. Lighttpd je možné pomocí modulů rozšířit o doplňkové funkce. Například může načítat webové stránky z domovských adresářů lokálních uživatelů. Předtím je ovšem třeba aktivovat odpovídající modul jako root, např. lightyenable-mod userdir a server restartovat pomocí service lighttpd restart. Uživatel, který by chtěl tuto funkci využívat, si ve svém domovském adresáři založí adresář /public_html a zveřejní tím jeho obsah pod adresou Důležité je, aby měl uživatel www-data, pod kterým webový server běží, práva ke čtení adresáře a jeho obsahu. Další informace ohledně nastavení Lighttpd najdete na stránkách https:// wiki.archlinux.org/index.php/lighttpd_(česky) nebo Úkol: Rozšiřte Lighttpd tak, aby načítal webové stránky z domovských adresářů lokálních uživatelů. Cvičení (pro šikovné): Nastavení SSH přístupu na intranetový server 1. Pomocí which sshd můžete otestovat intranetový server, jestli na něm běží server SSH. Pokud zjistíte, že neběží, nainstalujte ho pomocí sudo apt-get install openssh-server 2. Spusťte server SSH pomocí sudo service ssh start a přihlaste se přes SSH jako user1: ssh A hned se zase odhlaste. exit Uživatel se může přes SSH přihlašovat bez hesla. K nastavení jsou nutné tyto kroky: uživatel si na klientském počítači vytvoří klíče (veřejný a soukromý), vytvořený veřejný klíč se připojí do souboru /.ssh/authorized_keys v domovském adresáři uživatele na serveru. 3. Vytvořte si jako user1 na klientském počítači dvojici klíčů: ssh-keygen -t rsa 118

119 5.6. AUTOMATICKÉ NASTAVENÍ SÍTĚ POMOCÍ DHCP Přijměte navržený název souboru /home/user1/.ssh/id_rsa a stiskněte dvakrát Enter, čímž vytvoříte prázdné ověřovací heslo. 4. Zkopírujte jako user1 pomocí scp veřejný klíč /home/user1/.ssh/id_rsa.pub do svého (user1) domovského adresáře na serveru SSH: scp /home/user1/.ssh/id_rsa.pub 5. Přihlaste se z klienta ještě jednou jako user1 na server SSH: ssh a nastavte veřejný klíč uživatele user1 jako autorizovaný: cat ~/.ssh/id_rsa.client >> ~/.ssh/authorized_keys 6. Po odhlášení by se měl user1 z klientského počítače přihlásit na server SSH bez hesla. Vyzkoušejte to! Důležité: Ujistěte se, že má adresář /.ssh v domovském adresáři práva -rwx------, protože jinak s ním démon SSH odmítne pracovat a přihlášení přes ssh nebude možné. 119

120 LEKCE V PRÁCE V SÍTI 5.7 Otázky 1. Co je to internet? 2. Vyjmenujte některé protokoly z rodiny protokolů TCP/IP. 3. K čemu slouží SSH a jaké výhody má oproti Telnetu? 4. Kterým aplikačním protokolem jsou přenášena data z webového serveru? 5. Co je to port? 6. Z kolika bitů se skládá IPv4 adresa? 7. K čemu se používá maska sítě? 8. Zapište binární reprezentaci IP adresy Napište IPv4 a IPv6 adresy loopback rozhraní. 10. Napište zkrácenou verzi IPv6 adresy 2001:0db8:0000:0815:4711:0000:0028:03f Jak můžete zjistit konfiguraci dostupných síťových rozhraní? 12. Kterým příkazem zjistíte, zda je počítač dostupný? 13. Co je to výchozí brána a kterým příkazem se nastavuje? 120

121 5.7. OTÁZKY 14. K čemu se používá DNS? 15. Do kterého souboru se zapisuje používaný DNS server? 16. Napište dva příkazy, kterými ověříte funkčnost překladu doménových jmen. 17. Kterým aplikačním protokolem může být automaticky nastaveno síťové rozhraní? 18. Popište kroky a příkazy, kterými do sítě připojíte a správně nastavíte linuxové PC linux2 z modelového příkladu (viz obrázek 5.6 na straně 114). 121

122 LEKCE V PRÁCE V SÍTI 122

123 Kapitola 6 Lekce VI Archivace dat a jejich komprimace Archivace dat patří k důležitým bodům, na které se často zapomíná nebo se zanedbávají. Teprve až jsou data nedostupná nebo poškozená, začneme přemýšlet, zda a kdy jsme vůbec udělali jejich poslední zálohu. Některá data si lze snadno znovu opatřit, ale například fotky ze školního výletu jsou nenávratně ztraceny. Další výlet by byl sice fajn, ale obtížně realizovatelný a šance, že se podaří udělat stejné fotky, se blíží nule. V této části si ukážeme, jak lze data různými způsoby komprimovat a archivovat (např. na externí disk). Obsah 6.1 Komprimace dat gzip bzip zip tar Další nástroje pro komprimaci Zip Otázky Zálohování dat Typy zálohování Generační princip Provedení zálohy Obnovení Otázky

124 LEKCE VI ARCHIVACE DAT A JEJICH KOMPRIMACE 6.1 Komprimace dat Rozlišují se dvě metody komprimace: ztrátová komprimace Data jsou komprimována a počítá se přitom s určitou ztrátou kvality, na druhou stranu se ale sníží množství (velikost) dat. Dekomprimace a získání originálu už není možné. Tento postup se s oblibou používá u filmů, zvukových nahrávek nebo obrázků, např. ve formátu JPG. Ztrátová komprimace není určená pro zálohování dat! bezztrátová komprimace Komprimace proběhne bez ztráty dat, takže je kdykoliv možné obnovit originál. Právě bezztrátová komprimace je určená k vytváření záloh. Data se komprimují a ukládají dvěma způsoby: Jako datový proud V datovém kontejneru Při tomto postupu se původní datový proud komprimuje Do kontejneru se neukládají jen komprimovaná data, nýbrž ke každému uloženému souboru také odpovídající me- a uloží do souboru. Komprimují se čistá data, metadata (v případě souboru např. vlastník, datum vzniku apod.) se tadata (např. název souboru, datum, vlastník, přístupová ztrácejí. práva apod.). V kontejneru může být teoreticky uložené libovolné množství souborů a adresářových struktur. Přehled mnoha komprimačních programů najdete na stránce: Ukázkový soubor Pro ukázky datové komprimace a především pro její srovnání použijeme volně dostupný textový soubor Bible Martina Luthera z roku Má tu výhodu, že jde o čistě textový soubor, nemá omezující licenci a je velký přes 4 MiB. Soubor lze stáhnout z adresy Luther_Uebersetzung_1912.txt gzip Kompresní program gzip (GNU zip) patří k proudovým komprimačním nástrojům a nabízí dobrý kompresní poměr, není zatížený patentovanými algoritmy a najdete ho v každém unixovém/linuxovém systému. Používá se také při přenosu webových stránek ze serveru ke klientovi, např. při komprimaci HTML stránek, aby se přenášely rychleji. Do sady patří tři nástroje: gzip Komprimuje soubor, resp. datový proud. gunzip Dekomprimuje soubor, resp. datový proud. zcat Vypíše obsah komprimovaného textového souboru. Nejdůležitější parametry příkazu gzip jsou: -c Výstup z programu směřuje na standardní výstup stdout, odkud může být načten jiným programem. -d Rozbalit (stejně jako gunzip). --fast Použije se rychlá komprimace, která ale nemá tak dobrý výsledek. --best Použije se nejlepší komprimace, která ale vyžaduje více času než předchozí typ. Za normálních okolností připojí gzip komprimovanému souboru příponu.gz a poté smaže originál. gunzip postupuje přesně obráceně. 124

125 6.1. KOMPRIMACE DAT V následujícím případě se nejprve textový soubor zkopíruje, aby se originál neměnil. Soubor bude zkomprimován ( zabalen ) a následně zase dekomprimován ( rozbalen ). Abychom viděli, jak kvalitní byl kompresní poměr, zobrazíme si pokaždé příkazem lss velikost souboru 1. cp bibel.txt Bcomp.txt lss Bcomp.* echo '*** zabalit *' gzip Bcomp.txt lss Bcomp.* echo '*** rozbalit *' gunzip Bcomp.txt.gz lss Bcomp.* # Vše zase smazat rm Bcomp.* Bcomp.txt *** zabalit * Bcomp.txt.gz *** rozbalit * Bcomp.txt Originální soubor má velikost bajtů, zabalený soubor odpovídá cca 31,7 % původní velikosti. Pokud chcete, aby gzip původní soubor nesmazal, zadejte parametr -c a výstup přesměrujte. cp bibel.txt Bcomp.txt gzip -c Bcomp.txt > Bcomp.txt.gz lss Bcomp.* # Vše zase smazat rm Bcomp.* Bcomp.txt Bcomp.txt.gz bzip2 Kompresní program bzip2 se chová podobně jako gzip, používá ale jiný algoritmus, který komprimuje lépe než gzip. Vyžaduje ale výrazně více času. Tato sada se skládá z následujících nástrojů: bzip2 Komprimuje soubor, resp. datový proud. bunzip2 Dekomprimuje soubor, resp. datový proud. bzcat Vypíše obsah komprimovaného textového souboru. Nejdůležitější parametry jsou identické s příkazem gzip, takže stačí jen zaměnit název příkazu. cp bibel.txt Bcomp.txt bzip2 -c Bcomp.txt > Bcomp.txt.bz2 lss Bcomp.* # Vše zase smazat rm Bcomp.* Bcomp.txt Bcomp.txt.bz2 Zřetelně zde vidíme, že komprimovaný soubor se zmenšil na 22,9 %. V dalším příkladu se příkazem time měří, jak dlouho trvá průběh. Hodnoty sice závisejí na tom, kolik procesů operační systém ještě zpracovává paralelně, ale poskytují docela dobrou přibližnou hodnotu. cp bibel.txt Bcomp.txt time gzip -c Bcomp.txt > Bcomp.txt.gz time bzip2 -c Bcomp.txt > Bcomp.txt.bz2 # Vše zase smazat rm Bcomp.* real 0m0.574s user 0m0.452s sys 0m0.092s real 0m0.955s user 0m0.808s sys 0m0.040s Jak vidíte, bzip2 potřebuje pro komprimaci zhruba 1,5krát více času než gzip zip Kompresní program zip (protějškem je unzip) patří k nástrojům, které komprimují kontejnerově. Dokáže do archivu (s příponou zip) uložit mnoho souborů s patřičnými metadaty. 2 Používá několik algoritmů, které se liší kompresním poměrem a rychlostí zpracování. Základní přednosti programu zip jsou tyto: teoreticky vzato lze uložit libovolné množství souborů, metadata jako název souboru nebo vlastník se ukládají, 1 Příkaz lss je docela obyčejný skript v Bashi, který spustí příkaz ls -l a zobrazí pouze sloupce pro velikost a název souboru. Jak se sloupce zkopírují a použijí, jste se dozvěděli ve čtvrté lekci (více k tématu na straně 94) 2 Program vyvinul Phil Katz, odtud pochází původní název pkzip a pkunzip. 125

126 LEKCE VI ARCHIVACE DAT A JEJICH KOMPRIMACE dodatečně lze soubory přidávat, odstraňovat nebo obnovovat, na výběr souborů lze použít filtr, data mohou být zašifrovaná. 3 Spuštěním zip --help získáte nejdůležitější parametry: zip --help Copyright (c) Info-ZIP - Type 'zip "-L"' for software license. Zip 3.0 (July 5th 2008). Usage: zip [-options] [-b path] [-t mmddyyyy] [-n suffixes] [zipfile list] [-xi list] The default action is to add or replace zipfile entries from list, which can include the special name - to compress standard input. If zipfile and list are omitted, zip compresses stdin to stdout. -f freshen: only changed files -u update: only changed or new files -d delete entries in zipfile -m move into zipfile (delete OS files) -r recurse into directories -j junk (don't record) directory names -0 store only -l convert LF to CR LF (-ll CR LF to LF) -1 compress faster -9 compress better -q quiet operation -v verbose operation/print version info -c add one-line comments -z add zipfile comment read names from stdin -o make zipfile as old as latest entry -x exclude the following names -i include only the following names -F fix zipfile (-FF try harder) -D do not add directory entries -A adjust self-extracting exe -J junk zipfile prefix (unzipsfx) -T test zipfile integrity -X exclude extra file attributes -y store symbolic links as the link instead of the referenced file -e encrypt -n don't compress these suffixes -h2 show more help Originální soubor se nemaže, takže ho není třeba kopírovat. zip bibel.zip bibel.txt lss bibel.* # Vše zase smazat rm bibel.zip adding: bibel.txt (deflated 68%) bibel.txt bibel.zip Příkazem unzip --help získáte nejdůležitější parametry. unzip --help UnZip 6.00 of 20 April 2009, by Debian. Original by Info-ZIP. Usage: unzip [-Z] [-opts[modifiers]] file[.zip] [list] [-x xlist] [-d exdir] Default action is to extract files in list, except those in xlist, to exdir; file[.zip] may be a wildcard. -Z => ZipInfo mode ("unzip -Z" for usage). -p extract files to pipe, no messages -l list files (short format) -f freshen existing files, create none -t test compressed archive data -u update files, create if necessary -z display archive comment only -v list verbosely/show version info -T timestamp archive to latest -x exclude files that follow (in xlist) -d extract files into exdir modifiers: -n never overwrite existing files -q quiet mode (-qq => quieter) -o overwrite files WITHOUT prompting -a auto-convert any text files -j junk paths (do not make directories) -aa treat ALL files as text -U use escapes for all non-ascii Unicode -UU ignore any Unicode fields -C match filenames case-insensitively -L make (some) names lowercase -X restore UID/GID info -V retain VMS version numbers -K keep setuid/setgid/tacky permissions -M pipe through "more" pager -O CHARSET specify a character encoding for DOS, Windows and OS/2 archives -I CHARSET specify a character encoding for UNIX and other archives See "unzip -hh" or unzip.txt for more help. Examples: unzip data1 -x joe => extract all files except joe from zipfile data1.zip unzip -p foo more => send contents of foo.zip via pipe into program more unzip -fo foo ReadMe => quietly replace existing ReadMe if archive file newer 3 Šifrování ale není příliš dobré a na internetu najdete mnoho nástrojů, které se snaží heslo prolomit. 126

127 6.1. KOMPRIMACE DAT Při rozbalování pomocí unzip vynikne několik zvláštností: datum původního souboru zůstává nezměněno, lze obnovit UID, GID a práva (SUID, GUID a sticky bit) původního souboru (pouze root může nastavit jiné UID, GID atd.), lze zabránit přepsání existujících souborů, v textových souborech lze upravit znaky označující konce řádků; Linux používá znak line feed (0 10), Mac carriage return (0 13) a Windows oba dva znaky ( ). Chcete-li zabalit také podadresáře, zadejte přepínač -r. zip -r fotky.zip fotak/ echo '*** Zobrazit obsah ***' unzip -l fotky.zip # Vše zase smazat rm fotky.zip adding: fotak/ (stored 0%) adding: fotak/img_8693.jpg (deflated 0%) adding: fotak/imag0433.jpg (deflated 0%) adding: fotak/img_8697.jpg (deflated 1%) adding: fotak/img_cr2_0546.cr2 (deflated 8%) adding: fotak/img_cr2_0546.jpg (deflated 1%) *** Zobrazit obsah *** Archive: fotky.zip Length Date Time Name :45 fotak/ :45 fotak/img_8693.jpg :45 fotak/imag0433.jpg :45 fotak/img_8697.jpg :45 fotak/img_cr2_0546.cr :45 fotak/img_cr2_0546.jpg files Při komprimaci souborů JPG se stává, že je kompresní poměr velmi malý. To spočívá v tom, že formát souborů JPG je už z principu komprimovaný a jeho další komprimace už nepřinese viditelné výhody. Vlastně jedinou všechny soubory budou zabalené v jednom archivu. Poznámka: Přepínačem -0 určíte, že zip soubory jen uloží do kontejneru a nebude je komprimovat. V předchozím příkladu se zpracoval také soubor img_cr2_0546.cr2. Přepínačem -x lze určité soubory ze zpracování vyřadit, pomocí -i lze zase zařadit jen ty soubory, které odpovídají zadanému vzoru. Tento parametr lze použít opakovaně, ale musí stát na konci celého příkazu. Pokud se použijí zástupné znaky, musí se hodnota uzavřít do apostrofů (quoting, strana 64). zip -r fotky.zip fotak/ -x '*.cr2' echo '*** Zobrazit obsah ***' unzip -l fotky.zip # Vše zase smazat rm fotky.zip adding: fotak/ (stored 0%) adding: fotak/img_8693.jpg (deflated 0%) adding: fotak/imag0433.jpg (deflated 0%) adding: fotak/img_8697.jpg (deflated 1%) adding: fotak/img_cr2_0546.jpg (deflated 1%) *** Zobrazit obsah *** Archive: fotky.zip Length Date Time Name :45 fotak/ :45 fotak/img_8693.jpg :45 fotak/imag0433.jpg :45 fotak/img_8697.jpg :45 fotak/img_cr2_0546.jpg files tar Archivační program tar (angl. tape archiver, nástroj pro zálohování na pásku) je v unixových/linuxových systémech velmi rozšířený a patří také ke kontejnerovým archivátorům. Původně byl zamýšlen pro zálohování souborů na magnetické pásky. Nabízí možnost ukládat soubory sekvenčně do jednoho archivu a opět je extrahovat. Jako přípona slouží tar. 4 Původně tar nedokázal archiv komprimovat, ale ve spojení např. s gzip, resp. bzip2, lze archivy také komprimovat. Mají příponu tar.gz, resp. tar.bz2. tar [parametr] <soubor>... 4 Takovému souboru se často říká tarball. 127

128 LEKCE VI ARCHIVACE DAT A JEJICH KOMPRIMACE Nejdůležitější parametry programu tar jsou: 5 -c Vytvoří archiv. -t Zobrazí obsah. -x Rozbalí archiv. -r Soubory budou přidány. -u Soubory, které jsou novější než ty v archivu, budou přidány. -f K uložení bude použit soubor. -v Zobrazování informací. -z Pro komprimaci se použije gzip. -j Pro komprimaci se použije bzip2. -C Před rozbalením změnit adresář. -p Při rozbalení obnovit práva (jiné UID, GID atd. smí nastavit jen root). Příklady: Soubory jen archivovat a nekomprimovat. tar cvf bibel.tar bibel.txt lss bibel.* # Vše zase smazat rm bibel.tar bibel.txt bibel.tar bibel.txt Nezapomeňte, že tar navíc ukládá ještě metadata, takže nekomprimovaný formát je větší než originál. Soubory archivovat a komprimovat pomocí gzip. tar cvzf bibel.tar.gz bibel.txt lss bibel.* # Vše zase smazat rm bibel.tar.gz bibel.txt bibel.tar.gz bibel.txt Soubory archivovat a komprimovat pomocí bzip2. tar cvjf bibel.tar.bz2 bibel.txt lss bibel.* # Vše zase smazat rm bibel.tar.bz2 bibel.txt bibel.tar.bz bibel.txt Soubory archivovat, komprimovat pomocí bzip2 a potom zobrazit obsah. tar cjf bibel.tar.bz2 bibel.txt tar tvjf bibel.tar.bz2 # Vše zase smazat rm bibel.tar.bz2 -rw-r--r-- plastique/plastique :24 bibel.txt Soubory archivovat, komprimovat pomocí bzip2 a potom rozbalit do jiného adresáře (práva, datum atd. zůstanou zachována). tar cjf bibel.tar.bz2 bibel.txt mkdir test tar tvjpf bibel.tar.bz2 -C test ls -l test/ # Vše zase smazat rm -r test -rw-r--r-- plastique/plastique :24 bibel.txt celkem 0 Kopírování více souborů a adresářů Běžně se soubory kopírují pomocí cp, pokud zadáte přepínač -r, pak se kopírují rekurzivně. Předpokladem ale je, aby žádný adresář v cílovém místě neexistoval. Navíc se k tomu ještě přidává fakt, že se kopíruje obsah souborů, ale nikoliv např. přístupová práva. Pomocí tar můžete tyto problémy snadno obejít: 5 Stejně jako ps podporuje tar zápisy parametrů s -, s -- a také bez

129 6.1. KOMPRIMACE DAT tar cf - <zdrojový adresář> ( cd <cílový adresář>; tar xvf - ) Parametrem - se nebude zapisovat do souboru, nýbrž na standardní výstup stdout a ten bude přesměrován pomocí roury. Pak se změní adresář na cílový a přijatý datový proud se zase rozbalí (- se postará, že se bude číst ze stdin). Pokud se při rozbalování navíc zadá -p, zachovají se také práva. Samozřejmě byste mohli použít také gzip, resp. gunzip, to by ale kopírování prodloužilo, protože zabalení a rozbalení potřebuje nějaký čas a zde nemá žádný význam Další nástroje pro komprimaci Často se vám stane, že k vám hlavně ze světa Windows dorazí archivy, které byly vytvořeny jinými kompresními programy. Ve většině případů je můžete v Linuxu bez problémů zpracovat. rar Kompresní program rar (protějškem je unrar) se řadí do skupiny nástrojů kontejnerové komprimace. Program byl vytvořen Jevgenijem Roshalem, odtud název: Roshal ARchive. Software není ani svobodný (free) ani zdarma (for free), nýbrž jen shareware a musí být po 40 dnech používání zaregistrován. Pro Linux existuje také svobodný rozbalovač unrar-free. Rar se dokázal proti zip navzdory vyššímu kompresnímu poměru prosadit jen v některých oblastech, např. při předávání dat přes internet. Jeho omezením je nesvobodná licence. rar [parametr] <archiv> <soubor>... Nejdůležitější parametry rar jsou následující: a Přidá do archivu soubory. d Smaže soubory z archivu. e Rozbalí archiv. x Rozbalí archiv s kompletní adresářovou strukturou. t Otestuje archiv Zip Kompresní program 7z (7-Zip) patří také k těm, které komprimují kontejnerově, vytvořil ho Igor Viktorovič Pavlov a je vydán s licencí LGPL. Přípona archivů je 7z. Nejvýznamnější vlastnosti jsou: podpora velkých souborů až do velikosti 16 exabajtů, komprimace hlavičky archivu, silné šifrování pomocí AES-256. Ovšem 7z není vhodný pro zálohu linuxového systému, protože ignoruje všechna přístupová práva. Nejdůležitější parametry 7z jsou tyto: a Přidá soubory/adresáře do archivu, resp. vytvoří archiv. d Odstraní soubory/adresáře z archivu. e Rozbalí všechny soubory z archivu. x Rozbalí archiv a zachová adresářovou strukturu. l Vypíše obsah archivu. t Otestuje integritu archivu. u Aktualizuje obsah archivu. 129

130 LEKCE VI ARCHIVACE DAT A JEJICH KOMPRIMACE 7-Zip [64] 9.20 Copyright (c) Igor Pavlov p7zip Version 9.20 (locale=cs_cz.utf-8,utf16=on,hugefiles=on,2 CPUs) Scanning 7z a bibel.7z bibel.txt echo '******' lss bibel.* # Vše zase smazat rm bibel.7z Creating archive bibel.7z Compressing Everything is Ok ****** bibel.txt bibel.7z bibel.txt Otázky 1. Co se rozumí pod pojmem ztrátová, resp. bezztrátová komprimace a která z nich je vhodná pro zálohu dat? 2. Které výhody a nevýhody se objevují u proudové komprimace v porovnání s kontejnerovou komprimací? 3. Jak se u gzip dosáhne toho, aby nemazal originální soubor? 4. Jak lze u zip zabalit také podadresáře? 5. Jak lze zobrazit obsah archivu zip bez jeho rozbalení? 6. Jak lze při vytváření archivu zip vynechat soubory s příponami ~ a.backup? 7. Jak bude vypadat kompletní příkaz pro archivování adresáře hugo s celým obsahem pomocí tar a jeho komprimace pomocí bzip2? 8. Jak zobrazíte obsah archivu tar (zabaleného pomocí bzip2), aniž byste ho rozbalili? 9. Jak se rozbalí archiv tar, aby se obnovila původní práva? Cvičení: Vyzkoušejte sami výše uvedené příklady. 2. Vytvořte přehledovou tabulku, která bude obsahovat různé komprimované formáty souborů (textové, obrázky PNG, obrázky JPG, kresby SVG, ) a u každého kompresní poměr a komprimační dobu. Poznámka: Použijte dostatečně velké soubory, jinak nebudou mít výsledky vypovídací hodnotu.

131 6.2. ZÁLOHOVÁNÍ DAT 6.2 Zálohování dat Zálohování chrání data před ztrátou. Tuto větu byste si měli vzít k srdci, protože mnoho lidí se po záloze začne poprvé ptát, až když jsou data ztracena nebo poškozena Typy zálohování Rozlišují se následující typy záloh: zrcadlová záloha Vytvoří se zrcadlová kopie kompletního datového nosiče (obvykle jde o pevný disk, resp. diskový oddíl) v poměru 1:1. Nezálohují se tedy jen uživatelská data, nýbrž také celý souborový systém, tedy případně i operační systém. kompletní nebo úplná záloha Zálohovaná data (adresáře a soubory) jsou kompletně přenesena na zálohovací médium, např. pásku, výměnný disk nebo jiné médium. rozdílová záloha přírůstková záloha Zálohována jsou všechna data, která byla od poslední kompletní zálohy změněna nebo jsou nová. Zálohována jsou všechna data, která byla od poslední přírůstkové zálohy změněna nebo jsou nová, nebo jde o první spuštění od poslední kompletní zálohy Generační princip Jednou ze strategií při zálohování je generační princip dědeček-otec-syn (angl. grandfather-father-son, GFS), který patří mezi nejčastěji používané. Díky němu lze v různých časových odstupech získat různé verze dat. Pokud je poslední záloha (syn) poškozená, lze data získat ze starších záloh (otec) a tak podobně. Příklad Při denní záloze to tedy vypadá následovně: 4 média pro pondělí až čtvrtek pro každodenní zálohu (syn), 4 média pro čtyři pátky měsíce (otec), 12 médií pro poslední den každého měsíce (dědeček). To tedy znamená, že s 20 médii (předpokládejme, že se jedna záloha vejde na jedno médium) pokryjete celý rok. Podle tohoto principu tedy můžete kdykoliv přistupovat k záloze každého z posledních čtyř pracovních dní (syn), každého z posledních čtyř pátků (otec), každého konce posledních dvanácti měsíců (dědeček) Provedení zálohy V předchozí kapitole jste se dozvěděli o možnostech kontejnerové komprimace. Ta se skvěle hodí pro zálohování a archivování dat. Zálohu lze provádět ručně nebo pomocí skriptu s určitou mírou automatizace. Pro naši (soukromou) zálohu se použije tar s bzip2. Jako úložné médium použijeme USB disk. 6 V následujících příkladech zazálohujeme podadresář fotak. Cílem bude adresář tmp. Kompletní záloha Kompletní zálohu provedeme skriptem sichvoll. Pro název vytvořeného záložního souboru platí následující schéma: zaloha_<čeho>_komplet_<datum>.tar.bz2 Snadno tak poznáme už podle názvu, co, kdy a jak bylo zálohováno. 6 USB disk opravdu není dobrý prostředek pro uchování záloh, protože jej často nosíme po kapsách, rychle se ztratí a snadno poškodí. 131

132 LEKCE VI ARCHIVACE DAT A JEJICH KOMPRIMACE #!/bin/bash zdroj=$1 cil=/tmp # Adresář jako parametr? if [ -z $1 ] ; then zdroj=fotak fi # Odstranit zvláštní znaky ceho=$(echo $zdroj tr '/ ' ' ') # Datum datum=$(date +%Y-%m-%d_%H-%M-%S) /tmp/zaloha_fotak_komplet_ _ tar.bz2 # Název souboru soubor=zaloha_${ceho}_komplet_${datum}.tar.bz2 # Absolutní cesta tarsoubor=${cil}/${soubor} # Archivovat tar cjf ${tarsoubor} ${zdroj} lss ${tarsoubor} Přírůstková záloha Pomocí tar je také možné provést přírůstkovou (inkrementální) zálohu. K tomu je potřeba pomocí parametru -g vytvořit snapshot soubor. Přírůstková záloha se provede spuštěním skriptu sichinc. #!/bin/bash zdroj=$1 cil=/tmp # Adresář jako parametr? if [ -z $1 ] ; then zdroj=fotak fi # Odstranit zvláštní znaky ceho=$(echo $zdroj tr '/ ' ' ') # Datum datum=$(date +%Y-%m-%d_%H-%M-%S) # Název souboru soubor=zaloha_${ceho}_inc_${datum}.tar.bz2 171 /tmp/zaloha_fotak_inc.snar /tmp/zaloha_fotak_inc_ _ tar.bz2 # Snapshot soubor snap=zaloha_${ceho}_inc.snar # Absolutní cesta tarsoubor=${cil}/${soubor} # Archivovat tar cjf ${tarsoubor} ${zdroj} \ -g ${cil}/${snap} lss ${cil}/zaloha_${ceho}_inc* Aby bylo jasné, jak přírůstková záloha pracuje, provedeme krok za krokem zálohu, pokaždé vytvoříme nový soubor a znovu zazálohujeme. Na rychlých počítačích by se mohl název souboru objevit dvakrát za jednu sekundu (sekunda je v tomto případě nejmenší jednotka) a minulá záloha by se tak přepsala. Abychom tomu předešli, použijeme v příkladu příkaz sleep s pauzou dvě sekundy. 132

133 6.2. ZÁLOHOVÁNÍ DAT # Pro jistotu smažeme # všechny "staré" zálohy rm -f /tmp/zaloha_fotak* echo '*** Záloha 1 *' bash sichinc cp bibel.txt fotak/bibel.txt sleep 2 echo '*** Záloha 2 *' bash sichinc echo 'Libovolný text' \ > fotak/text.txt sleep 2 echo '*** Záloha 3 *' bash sichinc *** Záloha 1 * 159 /tmp/zaloha_fotak_inc.snar /tmp/zaloha_fotak_inc_ _ tar.bz2 *** Záloha 2 * 170 /tmp/zaloha_fotak_inc.snar /tmp/zaloha_fotak_inc_ _ tar.bz /tmp/zaloha_fotak_inc_ _ tar.bz2 *** Záloha 3 * 180 /tmp/zaloha_fotak_inc.snar /tmp/zaloha_fotak_inc_ _ tar.bz /tmp/zaloha_fotak_inc_ _ tar.bz2 273 /tmp/zaloha_fotak_inc_ _ tar.bz2 # Vytvořené soubory zase smazat rm -f fotak/bibel.txt fotak/text.txt \ /tmp/zaloha_fotak* Pokud si prohlédnete velikosti souborů po třetí záloze, zjistíte, že se zálohují jen změny. Automatické zálohování Bylo by samozřejmě pěkné, kdyby se po připojení USB disku automaticky provedla záloha. To je samozřejmě s trochou námahy možné realizovat, přesahuje to ale rámec tohoto skriptu. Příklad jak na to najdete např. na ubuntuusers.de/udev. Denní zálohování Pokud nehodláte zálohovat na USB disk, nýbrž do adresáře, který je stále k dispozici, např. síťový disk, můžete zálohování nechat na službě cron, která zálohu spustí v zadaném čase. Můžete ji zadat pomocí příkazu anacron. Pro načasované požadavky existují speciální adresáře, z nichž cron načítá obsažené skripty a automaticky je spouští v zadaný čas. Tyto údaje se nastavují v souboru /etc/crontab. # m h dom mon dow user command 17 * * * * root cd / && run-parts --report /etc/cron.hourly 25 6 * * * root test -x /usr/sbin/anacron (cd / && run-parts --report /etc/cron.daily) 47 6 * * 7 root test -x /usr/sbin/anacron (cd / && run-parts --report /etc/cron.weekly) * * root test -x /usr/sbin/anacron (cd / && run-parts --report /etc/cron.monthly) /etc/cron.hourly Každou hodinu (pokaždé v 17. minutě). /etc/cron.daily Každý den (každý den v 6:25). /etc/cron.weekly Každý týden (každou neděli v 6:47). /etc/cron.monthly Každý měsíc (každého prvního v měsíci v 6:52). Pokud není v danou dobu počítač zapnutý, postará se anacron o pozdější spuštění skriptu Obnovení Kompletní zálohu lze velmi snadno nahrát zpět, v podstatě stačí jen rozbalit odpovídající archiv. V případě přírůstkové zálohy se postupně nahrávají (rozbalují) všechny zálohy. Důležité je žádnou nevynechat. tar xjf /tmp/zaloha_fotak_inc_ _ tar.bz2 -g /tmp/zaloha_fotak_inc.snar tar xjf /tmp/zaloha_fotak_inc_ _ tar.bz2 -g /tmp/zaloha_fotak_inc.snar tar xjf /tmp/zaloha_fotak_inc_ _ tar.bz2 -g /tmp/zaloha_fotak_inc.snar 133

134 LEKCE VI ARCHIVACE DAT A JEJICH KOMPRIMACE Cvičení: 1. Vyzkoušejte všechny uvedené příklady. 2. Zazálohujte svůj vlastní domovský adresář na USB disk Otázky 1. Které metody pro zálohování se často používají? Uveďte u každé minimálně aspoň jednu výhodu a nevýhodu. 2. Co chápete pod pojmem generační princip a jaké výhody přináší? 3. Jak se provádí přírůstková záloha pomocí tar? 134

135 Kapitola 7 Lekce VII Vytvoření webové stránky s obrázky Díky pečlivé přípravě jsme nyní ve fázi, kdy chceme prezentovat své fotografie. Prvním krokem bude vytvoření obrazové galerie s náhledy ve formě webové stránky, druhým krokem její zveřejnění na webovém serveru. Abychom předešli různým problémům se zveřejněním obrázků (fotografií), je dobré si včas stanovit, jakou licenci pro obrázky použijeme. Nabízí se několik různých možností. Na konec se budeme zabývat nastavením a možným rozšířením webového prohlížeče, aby byl náš pohyb po internetu bezpečnější a chránili jsme si své soukromí. Obsah 7.1 Vytváření fotogalerií HTML Zobrazení náhledů Otázky Zveřejnění fotogalerie na webovém serveru Licence Přehled Kterou licenci pro vlastní obrázky Otázky Firefox jako bezpečný prohlížeč JavaScript Ochrana soukromých informací Potlačení reklamy Zabránit stránkám ve sledování Šifrované připojení Ukládání obsahu Vyhledávání na internetu

136 LEKCE VII VYTVOŘENÍ WEBOVÉ STRÁNKY S OBRÁZKY 7.1 Vytváření fotogalerií K prezentování obrázků je vhodná webová stránka (HTML) s náhledy snímků, které jsme vytvořili již dříve. Po kliknutí na náhled se zobrazí plná verze obrázku HTML K tématu HTML existuje dostatek materiálů, začněte třeba s kurzem na adrese Poskytne vám dostatek informací a odkazů na další zdroje. Základní tělo HTML dokumentu vypadá následovně: 1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN"> 2 <html> 3 <head> 4 <title>html stránka</title> 5 </head> 6 <body> 7 <p>jednoduchá webová stránka</p> 8 </body> 9 </html> Obrázek 7.1: Zdrojový kód a náhled na stránku v prohlížeči Na prvním řádku se určuje formát (DOCTYPE) HTML stránky. V příkladu je jako základ použito HTML Na druhém řádku je dokument otevřen značkou <html> na řádku 9 zase uzavřen párovou značkou </html>. Titulek (text, který se zobrazuje v záhlaví okna) se nastavuje v hlavičce (sekce <head>) pomocí značky <title>. V sekci <body> se nachází vlastní obsah dokumentu. Text běžného odstavce se vkládá mezi značky <p>. Přehled HTML značek a jejich vlastností najdete na Zobrazení náhledů Jednoduchý přehled obrázků lze vytvořit pomocí tabulky, do níž jednotlivé náhledy umístíme. Tabulka bude mít následující strukturu: <table border="1"> <tr> <td>a1</td> <td>a2</td> <td>a3</td> <td>a4</td> </tr> <tr> <td>b1</td> <td>b2</td> <td>b3</td> <td>b4</td> </tr> </table> Obrázky do ní vložíte pomocí značky <img>. <table border="1"> <tr> <td><img src="a1.png" width="50" /></td> <td><img src="a2.png" width="50" /></td> <td><img src="a3.png" width="50" /></td> <td><img src="a4.png" width="50" /></td> </tr> <tr> <td><img src="b1.png" width="50" /></td> <td><img src="b2.png" width="50" /></td> <td><img src="b3.png" width="50" /></td> <td><img src="b4.png" width="50" /></td> </tr> </table> 1 Tento formát je překonaný, dnes je aktuální verze 5, která je v mnoha ohledech modernější. Pozn. překl. 136

137 7.1. VYTVÁŘENÍ FOTOGALERIÍ Krok 1: Vytvoření náhledů V dalším kroku se z obrázků vytvoří jejich malé náhledy (viz kapitola 4.7 na straně 103). Obrázky (celkem 22) pro tyto příklady se nacházejí v podadresáři berlin. Pamatujte, že některé efekty jsou proveditelné jen s formátem png. Příkazem basename se z názvu odstraní adresář a [zde] přípona.jpg. for file in berlin/berlin*.jpg; do destfile=berlin/thumb_$(basename $file.jpg).png echo -n "$file " convert $file -thumbnail 200 \ \( +clone -alpha extract \ -virtual-pixel black -spread 10 \ -blur 0x3 -threshold 50% -spread 4 \ -blur 0x.7 \) -alpha off \ -compose Copy_Opacity -composite \ $destfile done berlin/berlin_0001.jpg berlin/berlin_0002.jpg berlin/berlin_0003.jpg berlin/berlin_0004.jpg berlin/berlin_0005.jpg berlin/berlin_0006.jpg berlin/berlin_0007.jpg berlin/berlin_0008.jpg berlin/berlin_0009.jpg berlin/berlin_0010.jpg berlin/berlin_0011.jpg berlin/berlin_0012.jpg berlin/berlin_0013.jpg berlin/berlin_0014.jpg berlin/berlin_0015.jpg berlin/berlin_0016.jpg berlin/berlin_0017.jpg berlin/berlin_0018.jpg berlin/berlin_0019.jpg berlin/berlin_0020.jpg berlin/berlin_0021.jpg berlin/berlin_0022.jpg Krok 2: Vytvoření HTML dokumentu Nyní můžeme vytvořit samotné tělo dokumentu. Použijeme k tomu here document. V tabulce budou v každém řádku zobrazeny čtyři obrázky. Pro zjednodušení bude v tomto kroku vypsán jen název souboru. echo Vytvoření prehled1.html # Hlavička cat <<EOM >prehled1.html <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN"> <html> <head> <title>fotogalerie</title> </head> <body> <table border="1"> EOM cnt=0 for file in berlin/berlin*.jpg; do if [ $cnt -eq 0 ]; then echo "<tr>" >>prehled1.html fi echo "<td>$file</td>" >>prehled1.html cnt=$(($cnt+1)) mod=$(($cnt % 4)) if [ $mod -eq 0 ]; then echo "</tr>" >>prehled1.html cnt=0 fi done if [ $mod -ne 0 ]; then echo "</tr>" >>prehled1.html fi # Patička cat <<EOM >>prehled1.html </table> </body> </html> EOM Vytvoření prehled1.html Aby vždycky vznikly čtyři sloupce, testuje se, zda je aktuální počet vytvořených sloupců dělitelný čtyřmi. Pokud ano, vloží se značka </tr>, která řádek tabulky ukončí. V případě, že počet obrázků neodpovídá násobku čtyř, musí se po ukončení cyklu ještě otestovat, zda je nutné vložit ukončení řádku tabulky. 137

138 LEKCE VII VYTVOŘENÍ WEBOVÉ STRÁNKY S OBRÁZKY <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN"> <html> <head> <title>fotogalerie</title> </head> <body> <table border="1"> <tr> <td>berlin/berlin_0001.jpg</td> <td>berlin/berlin_0002.jpg</td> <td>berlin/berlin_0003.jpg</td> <td>berlin/berlin_0004.jpg</td> </tr> <tr> <td>berlin/berlin_0005.jpg</td> <td>berlin/berlin_0006.jpg</td> <td>berlin/berlin_0007.jpg</td> <td>berlin/berlin_0008.jpg</td> </tr> <tr> <td>berlin/berlin_0009.jpg</td> <td>berlin/berlin_0010.jpg</td> <td>berlin/berlin_0011.jpg</td> <td>berlin/berlin_0012.jpg</td> </tr> <tr> <td>berlin/berlin_0013.jpg</td> <td>berlin/berlin_0014.jpg</td> <td>berlin/berlin_0015.jpg</td> <td>berlin/berlin_0016.jpg</td> </tr> <tr> <td>berlin/berlin_0017.jpg</td> <td>berlin/berlin_0018.jpg</td> <td>berlin/berlin_0019.jpg</td> <td>berlin/berlin_0020.jpg</td> </tr> <tr> <td>berlin/berlin_0021.jpg</td> <td>berlin/berlin_0022.jpg</td> </tr> </table> </body> </html> Krok 3: Propojení kostry dokumentu a náhledů Nyní nastal okamžik, kdy se do dokumentu vloží pomocí <img> náhledy obrázků. echo Vytvoření prehled2.html # Hlavička cat <<EOM >prehled2.html <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN"> <html> <head> <title>fotogalerie</title> </head> <body> <table border="1"> EOM cnt=0 for file in berlin/berlin*.jpg; do if [ $cnt -eq 0 ]; then echo "<tr>" >>prehled2.html fi # Vytvoření náhledů destfile=berlin/thumb_$(basename $file.jpg).png echo -n "$file " convert $file -thumbnail 200 \( +clone -alpha extract -virtual-pixel black \ -spread 10 -blur 0x3 -threshold 50% -spread 4 -blur 0x.7 \) \ -alpha off -compose Copy_Opacity -composite $destfile echo "<td><img src=\"$destfile\" width=\"100\" /></td>" >>prehled2.html cnt=$(($cnt+1)) mod=$(($cnt % 4)) if [ $mod -eq 0 ]; then echo "</tr>" >>prehled2.html cnt=0 fi done if [ $mod -ne 0 ]; then echo "</tr>" >>prehled2.html fi # Patička cat <<EOM >>prehled2.html </table> </body> </html> EOM 138

139 7.1. VYTVÁŘENÍ FOTOGALERIÍ berlin/berlin_0001.jpg berlin/berlin_0002.jpg berlin/berlin_0003.jpg berlin/berlin_0004.jpg berlin/berlin_0005.jpg berlin/berlin_0006.jpg berlin/berlin_0007.jpg berlin/berlin_0008.jpg berlin/berlin_0009.jpg berlin/berlin_0010.jpg berlin/berlin_0011.jpg berlin/berlin_0012.jpg berlin/berlin_0013.jpg berlin/berlin_0014.jpg berlin/berlin_0015.jpg berlin/berlin_0016.jpg berlin/berlin_0017.jpg berlin/berlin_0018.jpg berlin/berlin_0019.jpg berlin/berlin_0020.jpg berlin/berlin_0021.jpg berlin/berlin_0022.jpg A výsledek: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN"> <html> <head> <title>fotogalerie</title> </head> <body> <table border="1"> <tr> <td><img src="berlin/thumb_berlin_0001.png" width="100" /></td> <td><img src="berlin/thumb_berlin_0002.png" width="100" /></td> <td><img src="berlin/thumb_berlin_0003.png" width="100" /></td> <td><img src="berlin/thumb_berlin_0004.png" width="100" /></td> </tr> <tr> <td><img src="berlin/thumb_berlin_0005.png" width="100" /></td> <td><img src="berlin/thumb_berlin_0006.png" width="100" /></td> <td><img src="berlin/thumb_berlin_0007.png" width="100" /></td> <td><img src="berlin/thumb_berlin_0008.png" width="100" /></td> </tr> <tr> <td><img src="berlin/thumb_berlin_0009.png" width="100" /></td> <td><img src="berlin/thumb_berlin_0010.png" width="100" /></td> <td><img src="berlin/thumb_berlin_0011.png" width="100" /></td> <td><img src="berlin/thumb_berlin_0012.png" width="100" /></td> </tr> <tr> <td><img src="berlin/thumb_berlin_0013.png" width="100" /></td> <td><img src="berlin/thumb_berlin_0014.png" width="100" /></td> <td><img src="berlin/thumb_berlin_0015.png" width="100" /></td> <td><img src="berlin/thumb_berlin_0016.png" width="100" /></td> </tr> <tr> <td><img src="berlin/thumb_berlin_0017.png" width="100" /></td> <td><img src="berlin/thumb_berlin_0018.png" width="100" /></td> <td><img src="berlin/thumb_berlin_0019.png" width="100" /></td> <td><img src="berlin/thumb_berlin_0020.png" width="100" /></td> </tr> <tr> <td><img src="berlin/thumb_berlin_0021.png" width="100" /></td> <td><img src="berlin/thumb_berlin_0022.png" width="100" /></td> </tr> </table> </body> </html> Krok 4: Vložení odkazu na obrázky Pomocí značky <a> se vkládají odkazy, např. na obrázky. Aby se každý obrázek otevřel v nové kartě prohlížeče, použije se parametr target. echo Vytvoření prehled3.html # Hlavička cat <<EOM >prehled3.html <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN"> <html> <head> <title>fotogalerie</title> </head> 139

140 LEKCE VII VYTVOŘENÍ WEBOVÉ STRÁNKY S OBRÁZKY Obrázek 7.2: Náhled v prohlížeči <body> <table border="1"> EOM cnt=0 for file in berlin/berlin*.jpg; do if [ $cnt -eq 0 ]; then echo "<tr>" >>prehled3.html fi # Vytvoření náhledů destfile=berlin/thumb_$(basename $file.jpg).png echo -n "$file " convert $file -thumbnail 200 \( +clone -alpha extract -virtual-pixel black \ -spread 10 -blur 0x3 -threshold 50% -spread 4 -blur 0x.7 \) \ -alpha off -compose Copy_Opacity -composite $destfile echo "<td><a href=\"$file\" target=\"_blank\" >" >> prehled3.html echo "<img src=\"$destfile\" width=\"100\" />" >> prehled3.html echo "</a></td>" >>prehled3.html cnt=$(($cnt+1)) mod=$(($cnt % 4)) if [ $mod -eq 0 ]; then echo "</tr>" >>prehled3.html cnt=0 fi done if [ $mod -ne 0 ]; then echo "</tr>" >>prehled3.html fi # Patička cat <<EOM >>prehled3.html 140

141 7.1. VYTVÁŘENÍ FOTOGALERIÍ </table> </body> </html> EOM berlin/berlin_0001.jpg berlin/berlin_0002.jpg berlin/berlin_0003.jpg berlin/berlin_0004.jpg berlin/berlin_0005.jpg berlin/berlin_0006.jpg berlin/berlin_0007.jpg berlin/berlin_0008.jpg berlin/berlin_0009.jpg berlin/berlin_0010.jpg berlin/berlin_0011.jpg berlin/berlin_0012.jpg berlin/berlin_0013.jpg berlin/berlin_0014.jpg berlin/berlin_0015.jpg berlin/berlin_0016.jpg berlin/berlin_0017.jpg berlin/berlin_0018.jpg berlin/berlin_0019.jpg berlin/berlin_0020.jpg berlin/berlin_0021.jpg berlin/berlin_0022.jpg <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN"> <html> <head> <title>fotogalerie</title> </head> <body> <table border="1"> <tr> <td><a href="berlin/berlin_0001.jpg" target="_blank" > <img src="berlin/thumb_berlin_0001.png" width="100" /> </a></td> <td><a href="berlin/berlin_0002.jpg" target="_blank" > <img src="berlin/thumb_berlin_0002.png" width="100" /> </a></td> <td><a href="berlin/berlin_0003.jpg" target="_blank" > <img src="berlin/thumb_berlin_0003.png" width="100" /> </a></td> <td><a href="berlin/berlin_0004.jpg" target="_blank" > <img src="berlin/thumb_berlin_0004.png" width="100" /> </a></td> </tr> <tr> <td><a href="berlin/berlin_0005.jpg" target="_blank" > <img src="berlin/thumb_berlin_0005.png" width="100" /> </a></td> <td><a href="berlin/berlin_0006.jpg" target="_blank" > <img src="berlin/thumb_berlin_0006.png" width="100" /> </a></td> <td><a href="berlin/berlin_0007.jpg" target="_blank" > <img src="berlin/thumb_berlin_0007.png" width="100" /> </a></td> <td><a href="berlin/berlin_0008.jpg" target="_blank" > <img src="berlin/thumb_berlin_0008.png" width="100" /> </a></td> </tr> <tr> <td><a href="berlin/berlin_0009.jpg" target="_blank" > <img src="berlin/thumb_berlin_0009.png" width="100" /> </a></td> <td><a href="berlin/berlin_0010.jpg" target="_blank" > <img src="berlin/thumb_berlin_0010.png" width="100" /> </a></td> <td><a href="berlin/berlin_0011.jpg" target="_blank" > <img src="berlin/thumb_berlin_0011.png" width="100" /> </a></td> <td><a href="berlin/berlin_0012.jpg" target="_blank" > <img src="berlin/thumb_berlin_0012.png" width="100" /> </a></td> </tr> <tr> <td><a href="berlin/berlin_0013.jpg" target="_blank" > <img src="berlin/thumb_berlin_0013.png" width="100" /> </a></td> <td><a href="berlin/berlin_0014.jpg" target="_blank" > <img src="berlin/thumb_berlin_0014.png" width="100" /> 141

142 LEKCE VII VYTVOŘENÍ WEBOVÉ STRÁNKY S OBRÁZKY </a></td> <td><a href="berlin/berlin_0015.jpg" target="_blank" > <img src="berlin/thumb_berlin_0015.png" width="100" /> </a></td> <td><a href="berlin/berlin_0016.jpg" target="_blank" > <img src="berlin/thumb_berlin_0016.png" width="100" /> </a></td> </tr> <tr> <td><a href="berlin/berlin_0017.jpg" target="_blank" > <img src="berlin/thumb_berlin_0017.png" width="100" /> </a></td> <td><a href="berlin/berlin_0018.jpg" target="_blank" > <img src="berlin/thumb_berlin_0018.png" width="100" /> </a></td> <td><a href="berlin/berlin_0019.jpg" target="_blank" > <img src="berlin/thumb_berlin_0019.png" width="100" /> </a></td> <td><a href="berlin/berlin_0020.jpg" target="_blank" > <img src="berlin/thumb_berlin_0020.png" width="100" /> </a></td> </tr> <tr> <td><a href="berlin/berlin_0021.jpg" target="_blank" > <img src="berlin/thumb_berlin_0021.png" width="100" /> </a></td> <td><a href="berlin/berlin_0022.jpg" target="_blank" > <img src="berlin/thumb_berlin_0022.png" width="100" /> </a></td> </tr> </table> </body> </html> Obrázek 7.3: Náhled v prohlížeči Pokud nyní kliknete na náhledový obrázek, otevře se v prohlížeci nové okno nebo karta s obrázkem v plné velikosti. 142

143 7.2. ZVEŘEJNĚNÍ FOTOGALERIE NA WEBOVÉM SERVERU Otázky 1. Zjistěte pomocí webu Jak psát web nejdůležitější definice DOCTYPE a krátce popište jejich funkce. 2. Zjistěte, jaké možnosti a vlastnosti mají ještě značky pro tabulku <table> a pro obrázek <img>. Cvičení: 1. Vyzkoušejte si výše uvedené příklady sami. 2. Když se podíváte na přehled náhledů, zjistíte, že u posledních buněk tabulky není rámeček. Přepracujte logiku skriptu tak, aby poslední sloupce vyplnil buňkami s prázdným obsahem <td> </td>. 3. Přehled může ještě být výrazně vylepšen. Zapojte svou fantazii a kreativitu a vzhled vylepšete např. barvami, jinak tvořenými náhledy, doplňkovými informacemi, jako jsou název souboru, datum vytvoření, údaje EXIF a další. 7.2 Zveřejnění fotogalerie na webovém serveru Poté, co je galerie vytvořená, může být zveřejněna pomocí webového serveru, který jsme instalovali kapitole 5.6 na straně 118 (zatím jen lokálně). Můžete ale klidně použít jiný webový server. Lighttpd standardně zveřejňuje obsah adresáře /var/www. HTML stránku (např. prehled3.html) a adresář s obrázky (v tomto případě berlin) musíte tedy nakopírovat do /var/www. Nezapomeňte na to, že soubory musí mít oprávnění být čitelné všemi, protože jinak bude přístup k nim zamítnut. Obrázek 7.4: Pohled na adresář localhost Kliknutím na odkaz prehled3.html zobrazíte připravenou galerii. 143

144 LEKCE VII VYTVOŘENÍ WEBOVÉ STRÁNKY S OBRÁZKY Obrázek 7.5: Galerie na webovém serveru 7.3 Licence Pokud člověk potřebuje obrázky, texty nebo jiná média, často si sedne k vyhledávači, předhodí mu svůj požadavek a nalezené výsledky pomocí copy & paste začlení do svého dokumentu. Většina lidí přitom nepřemýšlí, jakou licenci použitá díla mají. Kritický okamžik může nastat tehdy, když někdo použije cizí díla ve svém vlastním a majitel to zjistí. To může vést k oboustranně nepříjemné zkušenosti. Aby se takovým situacím předešlo a aby byla licenční problematika obrázků a dalších děl jasná, měl by autor při jejich zveřejnění srozumitelně vyznačit, pod jakou licencí je dává k dispozici Přehled V této kapitole jsou uvedeny důležité licence, které se často používají v oblasti Linuxu. Uvedené informace nemusí být s ohledem na právní účinnost kompletní a korektní. GNU GPL GNU General Public License (označovaná také jako GNU GPL nebo jen GPL) je licence pro svobodný software obsahující copyleft a vydaná organizací Free Software Foundation (FSF). 2 Více k tématu: 3 Krátce řečeno, GNU GPL znamená: program a jeho kód se smí používat volně a bez licenčních a dalších poplatků, uživatel smí studovat zdrojové kódy programu, smí zdrojové kódy měnit a upravovat software pro své potřeby, smí části kódu používat pro vlastní projekty, smí program v nezměněné nebo upravené formě šířit dál. Ale: Musí jiným lidem umožnit provádění změn a úprav kódu podle práv uvedených v GPL a musí tedy upravený kód dát k dispozici. na program se neposkytuje žádná záruka, v žádném případě není vývojář odpovědný za možné škody. 2 GNU GPL byla vytvořena Richardem Stallmanem, zakladatelem projektu GNU, v roce V době překladu příručky jediný srozumitelný překlad verze 3 do češtiny, který zde lze uvést, ovšem jen pro rámcovou informaci. Pozn. překl. 144

145 7.3. LICENCE Copyleft FSF rozumí pod pojmem copyleft kombinaci jednak rozsáhlých svobod při využití a jednak povinností zachovat tyto svobody při předání nebo distribuci kódu. To tedy znamená, že kód, který je licencován GPL, musí zůstat open-source, změny a doplnění musí mít stejnou licenci a kód musí být k dispozici. Filozofie open source Na začátku se používal pojem free software. 4 Eric Raymond zavedl pojem open source, protože se domníval, že slovo free 5 odradí kompetentní zájemce z podnikatelské sféry. U free software jde více o politickou myšlenku, tedy hlavně svobodu, kdežto u open source jde v první řadě o vývojový a obchodní model. Richard Stallman k tomu řekl následující: Strach ze svobody: Hlavní argument pro pojem open-source software je, že free [svobodný] software některé lidi zneklidňuje. To je pravda: Když se mluví o svobodě, o etických otázkách, o zodpovědnost a pohodlnosti, pak se po lidech vyžaduje, aby přemýšleli o věcech, které by nejraději ignorovali. To může vyvolat nepohodlí, takže mnoho lidí tu představu raději zavrhne. Z toho nevyplývá, že by společnost byla lepší, kdybychom o těchto tématech přestali mluvit. 6 Open-source model nabízí hodně také pro podnikání. Vyvíjejí se otevřené standardy. Díky nim mohou jednotlivci i firmy pracovat na jednom produktu, což by bylo nad možnosti jedince. Uživatel přitom sám určuje časový průběh vývoje; rychlé opravy chyb a různé úpravy nepředstavují obvykle žádný problém. Díky tomu, že je kód přístupný, podléhá silné kontrole. To vede k vyšší bezpečnosti. Případné bezpečnostní mezery jsou obvykle rychle rozpoznány mnoha lidmi a také rychle odstraněny. U uzavřeného komerčního softwaru se častěji stává, že jsou nedostatky zatajovány, dokud je neodkryjí a nevyužijí útočníci. Obchodní modely open source V odborné literatuře lze najít množství obchodních modelů pro open source. Mnoho firem sází na oblast poradenství, doplňující implementaci a především na školení a podporu. Podrobný popis najdete na stránce de/index.php/gesch\%c3\%a4ftsmodelle_auf_basis_des_open_source_betriebssystems_linux. GNU LGPL GNU Lesser General Public License (LGPL) byla původně zkratkou pro Library General Public License, ale později byla přejmenována. V podstatě odpovídá licenci GPL s tou výjimkou, že programy (včetně nesvobodných) mohou být kombinovány (dynamicky linkovány) s programovou knihovnou vydanou s licencí LGPL. To znamená, že proprietární program může používat svobodnou knihovnu. Tím je umožněno, že k vývoji programu, který nepodléhá licenci GPL, je možné použít knihovnu chráněnou licencí LGPL. Úpravy knihovny samotné musí být samozřejmě znovu licencovány LGPL. BSD Licence BSD (Berkeley Software Distribution z Kalifornské univerzity) omezuje programátory a také uživatele jen do té míry, že musí uvádět původní autory (copyrightová doložka). Jádro licence spočívá ve vyloučení nároků na odpovědnost vůči programátorům. Zdrojový kód, který podléhá licenci BSD, smí být použit ve vlastních projektech, aniž by ty následně musely být svobodným softwarem. Public Domain Public domain nepředstavuje ve smyslu open source žádnou licenci. Jen říká, že autor se vzdává veškerého vlivu na své dílo a že si s ním každý může dělat, co uzná za vhodné. Pojetí public domain ve Spojených státech amerických ( Vzdávám se všech práv k dílu. ) se liší od pojetí v jiných zemích. V Německu jde o volné dílo, viz https://de.wikipedia.org/ wiki/gemeinfreiheit. 7 FLOSS/FOSS Pojmy Free/Libre Open Source Software (FLOSS), resp. Free and Open Source Software (FOSS) označují svobodný a opensource software. Více informací např. na 8 4 Anglicky znamená free jednak zdarma, jednak svobodný. Hlavní význam, viz dále, se týká svobody, ale na první pohled lidé vidí zdarma. Pozn. překl. 5 Ve významu zdarma, pozn. překl. 6 Richard M. Stallman The Selected Essays of Richard M. Stallman 7 V České republice platí Autorský zákon, který zmiňuje volné dílo v 28 a softwaru se věnuje speciálně 66. Pozn. překl. 8 České informace získáte např. na pozn. překl. 145

146 LEKCE VII VYTVOŘENÍ WEBOVÉ STRÁNKY S OBRÁZKY Closed-source Closed-source je opakem open-source. Znamená to, že zdrojový kód není dostupný. Free Software Foundation doporučuje, aby se tento pojem nepoužíval a místo něj se hovořilo o nesvobodném nebo proprietárním softwaru. Přehled softwarových licencí Licence Smí se používat Vlastní úpravy musí Může být zveřejněno s komerčním softwarem být opět svobodné pod jinými podmínkami GPL ano 9 ano ne LGPL ano ano ne BSD ano ne ano 10 Public Domain ano ne ano Další přehledy v angličtině najdete na těchto stránkách: Německá organizace Bundeszentrale für politische Bildung vydala knihu Freie Software Zwischen Privat- und Gemeineigentum jako PDF s licencí Creative Commons Attribution-ShareAlike 2.0 License: bpb.de/grassmuck.pdf Český Liberix vydal více materiálů, zejména Software na úřadech a jeho otevřené alternativy, cz/projekty/software-na-uradech-a-jeho-otevrene-alternativy-pdf-ke-stazeni/, pozn. překl. Creative Commons Creative Commons, krátce CC, je veřejně prospěšná organizace, která zveřejňuje různé standardizované licenční smlouvy, s jejichž pomocí může autor jednoduchým způsobem uvolnit práva ke svým dílům (textů, obrázkům a fotografiím, hudebním dílům, videoklipům ). Poskytovány jsou následující právní moduly: by Musí být uvedeno jméno autora. nc Dílo nesmí být využito pro komerční účely. nd Dílo nesmí být upraveno nebo změněno. sa Šíření pouze za stejných podmínek. CC BY Například: CC BY-SA CC BY-ND CC BY-NC Uvedení jména. Uvedení jména, šíření za stejných podmínek. Uvedení jména, žádné úpravy. Uvedení jména, nekomerčně. CC BY-NC-SA Uvedení jména, nekomerčně, šíření za stejných podmínek. CC BY-NC-ND Uvedení jména, nekomerčně, žádné úpravy. Více informací na a česky na Licence GNU pro svobodnou dokumentaci GFDL licence GNU pro svobodnou dokumentaci (GNU Free Documentation License) je copyleftová licence určená původně pro softwarovou dokumentaci. Licence umožňuje: rozmnožování díla, rozšiřování díla, úpravy díla, a to také ke komerčním účelům. Na oplátku zavazuje uživatele díla k dodržení následujících podmínek: uvedení autora díla, odvozená díla opatřit stejnou licencí (princip copyleftu). 10 GPL výslovně povoluje komerční zhodnocení programů. Přirozeně za dodržení pravidel GPL, tedy že zákazníkovi musí být na žádost a bez zvláštních poplatků poskytnut zdrojový kód. Poplatek za datový nosič nebo odeslání je v pořádku. 10 BSD licence (upravená BSD licence, resp. BSD licence se třemi klauzulemi a originální BSD licence s propagační klauzulí) jsou kompatibilní s GPL. Z toho vyplývá, že kód licencovaný BSD smí být zařazen do GPL projektu a celek smí být publikován s GPL. 146

147 7.4. FIREFOX JAKO BEZPEČNÝ PROHLÍŽEČ Kterou licenci pro vlastní obrázky Pro fotogalerii se nabízí licence Creative Commons. Autor se musí rozhodnout, jestli zakáže komerční využití (NC, non commercial) nebo jestli požaduje zachování stejných licenčních podmínek také u odvozených děl (SA, share alike) Otázky 1. V čem spočívá základní rozdíl mezi GPL a LPGL? 2. Jak rozumíte pojmu copyleft? 3. Co znamená FLOSS/FOSS? 4. Co znamená CC BY-NC? 5. Co znamená CC BY-NC-ND? 7.4 Firefox jako bezpečný prohlížeč Pro bezpečné surfování internetem jsou nutná některá nastavení v prohlížeči, život vám mohou ulehčit také některé doplňky JavaScript JavaScript je jeden z programovacích jazyků, který je součástí prohlížeče. Díky němu se mohou na lokálním počítači spouštět příkazy, kterou jsou součástí mnoha webových stránek. Platí to ale i pro akce, které vůbec spouštět nechceme. Nastavení se ve starších verzích prováděla pomocí Úpravy Předvolby. V nových verzích jsou dostupná přes adresu about:config nebo pomocí doplňku, např. QuickJava. Ten vám umožní jedním kliknutím povolovat nebo zakazovat různé technologie Java, JavaScript, QuickSilver a další (viz (viz obrázek 7.6 na následující straně)). Pokud tak učiníte a JavaScript tím deaktivujete, budete v tomto ohledu ochráněni, na druhou stranu ale přestane správně fungovat velké množství stránek, které JavaScript vyžadují. Další možností je doplněk NoScript. Umožní vám povolit nebo zakázat spouštění JavaScriptu na každé stránce. Doplňky se instalují v nabídce Nástroje Správce doplňků Ochrana soukromých informací Firefox nabízí možnost používat stále soukromý režim (viz obrázek 7.8 na následující straně). Během něj se neukládají žádné informace o navštívených stránkách, chronologie návštěv, cookies apod. Pokud si tento režim nevyberete, můžete si nastavit, v jaké míře a hlavně kdy má Firefox tato data automaticky vymazat. Vhodná doba pro smazání těchto dat je například v okamžiku, kdy Firefox ukončujete. Následující doplňky vám pomohou snadno a rychle smazat historii, cookies a další data, včetně Flash Local Shared Objects: Click&Clean, BetterPrivacy. 147

148 LEKCE VII VYTVOŘENÍ WEBOVÉ STRÁNKY S OBRÁZKY Obrázek 7.6: Nastavení JavaScriptu Obrázek 7.7: NoScript chrání před zlovolnými stránkami Potlačení reklamy Mnoho stránek své uživatele štve neustálým zobrazováním reklamních ploch. Nejenže to obtěžuje, ale často člověk obtížně najde to, co původně hledal, kromě toho se přenášejí zbytečná data. Doplněk jménem Adblock Plus vám pomůže a nežádoucí reklamu skryje. V jeho nabídce můžete aktivovat různé filtry, díky nimž se zakáže reklama nejen z České republiky, ale třeba z Polska nebo jiné země (viz obrázek 7.9). Obrázek 7.8: Nastavení soukromí Obrázek 7.9: Odstranění reklamy Zabránit stránkám ve sledování Existují různé možnosti, jak stránky zkoušejí zjistit, kdo navštíví které stránky. Jednou z možností je načíst malý obrázek o velikosti jednoho bodu z určitého serveru. Ten pak do svého logovacího souboru uloží, kdo (tedy myšlena IP adresa), kdy a kterou stránku navštívil. Zabránit tomu umí doplněk Ghostery. Zobrazí vám, ze kterých prvků je webová stránka složena a umožní vám některé blokovat. 11 Navíc Ghostery zobrazuje, jakou funkci má ten který prvek. Například u Google Adsense: Google AdSense je aplikace zobrazující reklamy. Majitelé webových stránek se mohou do tohoto programu zapojit a povolit zobrazování textových, obrazových a video reklam na svých stránkách. Tato reklamní sdělení jsou spravována Googlem a vytvářejí finanční příjem jak principem za kliknutí, tak za zobrazení. Hlavní produkty jsou AdSense pro obsah (textová nebo grafická reklama) a AdSense pro vyhledávání Šifrované připojení Mnoho provozovatelů webových stránek nabízí vedle HTTP připojení také šifrovanou variantu HTTPS. Výhodou je, že připojení k serveru nelze odposlouchávat, resp. zjistit jeho obsah. Doplněk https-finder nahradí HTTP připojení jeho 11 Sluší se podotknout, že sami autoři Ghostery lákadlu neodolali a také sledují, jakým způsobem uživatel tento software používá. Odesílání dat autorům samozřejmě můžete zakázat. Pozn. překl. 148

LINUX ADRESÁŘOVÁ STRUKTURA. Co to, hrome, je? V této lekci se budeme brouzdat adresáři. SPŠ Teplice - 3.V

LINUX ADRESÁŘOVÁ STRUKTURA. Co to, hrome, je? V této lekci se budeme brouzdat adresáři. SPŠ Teplice - 3.V LINUX ADRESÁŘOVÁ STRUKTURA Co to, hrome, je? V této lekci se budeme brouzdat adresáři. KOŘENOVÝ ADRESÁŘ kořen = root tak se mu říká Ve skutečnosti se jmenuje / (lomítko, slash). Vše ostatní je v ubuntu

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

Cvičení 2. Přesměrování vstupu a výstupu. Posloupnost příkazů. Příkazy pro informaci o uživatelích

Cvičení 2. Přesměrování vstupu a výstupu. Posloupnost příkazů. Příkazy pro informaci o uživatelích Cvičení 2 Přesměrování vstupu a výstupu Příkaz > abc výstup příkazu jde do souboru abc. Pokud soubor neexistuje je vytvořen. Pokud existuje je přepsán. Příkaz >> abc výstup příkazu jde do souboru abc.

Více

Tomáš Borland Valenta

Tomáš Borland Valenta Architektura GNU/Linuxu Tomáš Borland Valenta Přehled stavebních prvků operačního systému GNU/Linux aneb od základů až po okna... Základní rozdělení Hardware Software Hardware Základní deska CPU Paměť

Více

Minimální požadavky na systém... 21 Linux a Windows na jednom disku... 22 Zrušení instalace Mandriva Linuxu... 23

Minimální požadavky na systém... 21 Linux a Windows na jednom disku... 22 Zrušení instalace Mandriva Linuxu... 23 Obsah Úvodem 9 Typografické konvence.............................. 10 Změny oproti předchozí verzi Mandriva Linuxu.................. 11 Informace o aktualizaci z verze 2006....................... 17 Poděkování....................................

Více

1. přednáška pro začátečníky

1. přednáška pro začátečníky 1. přednáška pro začátečníky http://sut.sh.cvut.cz bejzz a Charlie Úvod Snad na úvod: GNU/Linux je svobodný operační systém unixového typu. Jeho jádro - Linux - bylo vytvořeno Linusem Torvaldsem za pomoci

Více

konec šedesátých let vyvinut ze systému Multics původní účel systém pro zpracování textů autoři: Ken Thompson a Denis Ritchie systém pojmnoval Brian

konec šedesátých let vyvinut ze systému Multics původní účel systém pro zpracování textů autoři: Ken Thompson a Denis Ritchie systém pojmnoval Brian 02 konec šedesátých let vyvinut ze systému Multics původní účel systém pro zpracování textů autoři: Ken Thompson a Denis Ritchie systém pojmnoval Brian Kernighan v r. 1973 přepsán do jazyka C Psát programy,

Více

Programové vybavení počítačů operační systémy

Programové vybavení počítačů operační systémy Programové vybavení počítačů operační systémy Operační systém Základní program, který oživuje hardware a poskytuje prostředí pro ostatní programy Řídí využití procesoru, síťovou komunikaci, tisk, ovládá

Více

PŘÍKAZY OVLÁDÁNÍ SHELLU

PŘÍKAZY OVLÁDÁNÍ SHELLU PŘÍKAZY OVLÁDÁNÍ SHELLU Název školy Obchodní akademie, Vyšší odborná škola a Jazyková škola s právem státní jazykové zkoušky Uherské Hradiště Název DUMu Příkazy ovládání shellu Autor Martin Šimůnek Datum

Více

Stručná instalační příručka SUSE Linux Enterprise Server 11

Stručná instalační příručka SUSE Linux Enterprise Server 11 Stručná instalační příručka SUSE Linux Enterprise Server 11 RYCHLÝ ÚVODNÍ LIST NOVELL Při instalaci nové verze systému SUSE Linux Enterprise 11 postupujte podle následujících pokynů. Tento dokument obsahuje

Více

Unix je víceuživatelský a víceúlohový OS

Unix je víceuživatelský a víceúlohový OS Unix je víceuživatelský a víceúlohový OS Mezi základní úkoly každého OS patří: - Správa hardwareových prostředků - Správa souborového systému - Správa procesů - U víceuživatelských systémů rovněž řízení

Více

Architektura systému GNU/Linux. Bohdan Milar bohdan.milar@liberix.cz

Architektura systému GNU/Linux. Bohdan Milar bohdan.milar@liberix.cz Architektura systému GNU/Linux Bohdan Milar bohdan.milar@liberix.cz Úvod Liberix, o.p.s. Nestátní nezisková organizace Založena na jaře 2005 Hlavní cíl - Podpora a propagace svobodných informačních technologií

Více

úvod Historie operačních systémů

úvod Historie operačních systémů Historie operačních systémů úvod 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

Více

ZOS CV1 Základy operačních systémů

ZOS CV1 Základy operačních systémů ZOS CV1 Základy operačních systémů Kontaktní informace Ing. Ladislav Pešička UL401 (pozor, ne UK410) pesicka@kiv.zcu.cz Úřední hodiny Út t 9:30 aža 10:30 St 9:30 aža 10:30 Web Stránky předmp edmětu budou

Více

IT ESS II. 1. Operating Systém Fundamentals

IT ESS II. 1. Operating Systém Fundamentals IT ESS II. 1. Operating Systém Fundamentals Srovnání desktopových OS a NOSs workstation síťové OS (NOSs) jednouživatelské jednoúlohové bez vzdáleného přístupu místní přístup k souborům poskytují a zpřístupňují

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

4 Microsoft Windows XP Jednoduše

4 Microsoft Windows XP Jednoduše Obsah ÚVOD Nové zkušenosti s novými Windows XP 11 Vaším cílem je: 11 A. Hraní her, využívání encyklopedií a výukových programů, účetnictví 11 B. Procházení WWW stránek Internetu, využívání elektronické

Více

Základní příkazy pro práci se soubory

Základní příkazy pro práci se soubory A7B38UOS Úvod do operačních systémů 3. Cvičení Základní příkazy pro práci se soubory Obsah cvičení Informace o souborech a adresářích Informace o obsahu souborů Vytváření souborů a adresářů Manipulace

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

Úvod do Operačních Systémů

Úvod do Operačních Systémů Úvod do Operačních Systémů 1. cvičení Úvod, práce v grafickém prostředí, jednoduché příkazy. 1 Obsah Organizace cvičení Seznámení s učebnou Přihlašování a odhlašování Práce v grafickém prostředí Příkazová

Více

Instalace webové služby Mydlinka

Instalace webové služby Mydlinka Instalace webové služby Mydlinka Aktualizace dokumentu: 21.10.2014 Obsah 1 Co je to webová služba Mydlinka 2 Požadavky na instalaci a provoz 2.1 SAS 2.2 Databáze 2.3 Operační systém 2.4 Softwarové vybavení

Více

Messenger. Novell 1.0 UMÍSTĚNÍ DOKUMENTACE K PROGRAMU NOVELL MESSENGER. www.novell.com STRUČ NÁ ÚVODNÍ PŘ ÍRUČ KA

Messenger. Novell 1.0 UMÍSTĚNÍ DOKUMENTACE K PROGRAMU NOVELL MESSENGER. www.novell.com STRUČ NÁ ÚVODNÍ PŘ ÍRUČ KA Novell Messenger 1.0 STRUČ NÁ ÚVODNÍ PŘ ÍRUČ KA www.novell.com Novell Messenger je produkt, který nezávisle na platformě slouží k rychlému zasílání zpráv v podnicích pomocí adresáře Novell e-directory

Více

Jak funguje GNU/Linux

Jak funguje GNU/Linux Jak funguje GNU/Linux Úvod do operačního systému a filozofie Jiří Jánský SUT SH 12.10.1010 GNU/Linux I. Proč Linux používájí geekové Za více námahy více muziky Příklad s přepsáním titulků Svobody Open

Více

Základní příkazy UNIXu (Linuxu)

Základní příkazy UNIXu (Linuxu) Základní příkazy UNIXu (Linuxu) Ostatní clear smazání obrazovky man nápověda k příkazům (zkus man man) Ovládání příkazu man PgUp, b stránka vzhůru PgDn, mezerník stránka dolů šipky nahoru a dolů pohyb

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

PŘÍKAZOVÝ ŘÁDEK ZÍSKÁVÁNÍ NÁPOVĚDY

PŘÍKAZOVÝ ŘÁDEK ZÍSKÁVÁNÍ NÁPOVĚDY PŘÍKAZOVÝ ŘÁDEK ZÍSKÁVÁNÍ NÁPOVĚDY Název školy Obchodní akademie, Vyšší odborná škola a Jazyková škola s právem státní jazykové zkoušky Uherské Hradiště Název DUMu Příkazový řádek získávání nápovědy Autor

Více

UŽIVATEL, SKUPINA, PROCES

UŽIVATEL, SKUPINA, PROCES UŽIVATEL, SKUPINA, PROCES Systém bez uživatele je jedině Matrix? Uživatelé se seskupují a řídí práci. Group = skupina uživatelů Trocha teorie: LINUX je systémem víceuživatelským. Tzn. Že k dané instanci

Více

Úvod. unx-predn_01-uvod.odt 25.02.2008 16:13:43 1

Úvod. unx-predn_01-uvod.odt 25.02.2008 16:13:43 1 Úvod unx-predn_01-uvod.odt 25.02.2008 16:13:43 1 Operační systém UNIX Přednášky Jan Zajic, zajic@fel.cvut.cz, K226 Web service.felk.cvut.cz/courses Cíl předmětu pokročilý uživatel začínající administrátor

Více

Střední odborná škola a Střední odborné učiliště, Hořovice

Střední odborná škola a Střední odborné učiliště, Hořovice Kód DUM : VY_32_INOVACE_LIN.1.07 Název materiálu: Anotace Autor Jazyk Očekávaný výstup 07- Síťové služby servery a klienty a úvod do souborového serveru DUM naučí žáky spouštět, diagnostikovat a konfigurovat

Více

Operační systém GNU/Linux

Operační systém GNU/Linux Operační systém GNU/Linux Operační systém - obecně:...základní softwarové vybavení počítače, které se stará o správu systémových zdrojů OS není primárně charakterizován tím jak vypadá (uživatelské rozhraní),

Více

Windows 10 (5. třída)

Windows 10 (5. třída) Windows 10 (5. třída) Pracovní plocha: takto vypadá Pracovní plocha u nás ve škole - pozadí Pracovní plochy - ikony na Pracovní ploše ikona Student 17 (se jménem přihlášeného uživatele) ikona Tento počítač

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

Alternativní operační systémy. Martin Drlík, Daniel Krotil OSY2A, ITV

Alternativní operační systémy. Martin Drlík, Daniel Krotil OSY2A, ITV Alternativní operační systémy Martin Drlík, Daniel Krotil OSY2A, ITV Co lze pokládat za alternativní OS Operační systémy založené na Linuxu Online operační systémy Operační systémy založené na vlastních

Více

Operační systémy. Cvičení 1: Seznámení s prostředím

Operační systémy. Cvičení 1: Seznámení s prostředím Operační systémy Cvičení 1: Seznámení s prostředím 1 Obsah cvičení Organizace cvičení Učebna K311 Unixová učebna K327 (Solárium) Přihlášení do Unixu Spouštění vzorových příkladů vzdáleně (Unix) lokálně

Více

Návod k obsluze IP kamery Zoneway. IP kamery jsou určené pro odbornou montáž.

Návod k obsluze IP kamery Zoneway. IP kamery jsou určené pro odbornou montáž. Návod k obsluze IP kamery Zoneway. IP kamery jsou určené pro odbornou montáž. Obsah 1 Úvod... 1 2 Návod pro připojení do webového rozhraní... 1 2.1 Připojení kamery k WiFi síti... 4 2.2 Postup nastavení

Více

PRACUJEME S SHELLEM Ať žije BASH.

PRACUJEME S SHELLEM Ať žije BASH. PRACUJEME S SHELLEM Ať žije BASH. V této lekci nakoukneme do základů shellu Bash. Trocha nudné teorie. Název je akronym pro Bourne again shell, což poukazuje na jeho základ v dříve nejpoužívanějším unixovém

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

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

Nástroj Setup. Uživatelská příručka

Nástroj Setup. Uživatelská příručka Nástroj Setup Uživatelská příručka Copyright 2007 Hewlett-Packard Development Company, L.P. Windows je registrovaná ochranná známka Microsoft Corporation v USA. Informace uvedené v této příručce se mohou

Více

Téma 1: Práce s Desktop. Téma 1: Práce s Desktop

Téma 1: Práce s Desktop. Téma 1: Práce s Desktop Téma 1: Práce s Desktop 1 Teoretické znalosti V této kapitole zjistíte, co skrývají pojmy jako Desktop, GNOME, KDE, Metacity Window Manager, Nautilus a Konqueror. Desktop neboli pracovní plocha patří mezi

Více

IMPLEMENTACE OPERAČNÍHO SYSTÉMU LINUX DO VÝUKY INFORMAČNÍCH TECHNOLOGIÍ

IMPLEMENTACE OPERAČNÍHO SYSTÉMU LINUX DO VÝUKY INFORMAČNÍCH TECHNOLOGIÍ Identifikační údaje školy Číslo projektu Název projektu Číslo a název šablony Autor Tematická oblast Číslo a název materiálu Anotace Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace

Více

Uživatelská příručka

Uživatelská příručka www.rexcontrols.cz www.contlab.eu www.pidlab.com Ovladač systému REX pro 1-Wire (modul OwsDrv) Uživatelská příručka REX Controls s.r.o. Verze 2.10.7 (revize 2) Plzeň 16.12.2015 Obsah 1 Ovladač OwsDrv a

Více

Rozdělení operačních systémů

Rozdělení operačních systémů Rozdělení operačních systémů OS1 Přednáška číslo 2 Podle počtu ovládaných procesorů Jednoprocesorové (monoprocesorové) Víceprocesorové (multiprocesorové) Asymetrický processing (ASMP) na jednom procesoru

Více

LINUX SOUBORY. Zadejme příkaz ls l! V této lekci se odrazíme od dlouhého výpisu příkazu ls a uvidíme, kam nás to zanese. SPŠ Teplice - 3.

LINUX SOUBORY. Zadejme příkaz ls l! V této lekci se odrazíme od dlouhého výpisu příkazu ls a uvidíme, kam nás to zanese. SPŠ Teplice - 3. LINUX SOUBORY Zadejme příkaz ls l! V této lekci se odrazíme od dlouhého výpisu příkazu ls a uvidíme, kam nás to zanese. Dlouhý výpis příkazu ls Zadejte příkaz ls s parametrem l. Před každou položkou (souborem

Více

Windows 8.1 (5. třída)

Windows 8.1 (5. třída) Windows 8.1 (5. třída) Pracovní plocha: takto vypadá Pracovní plocha u nás ve škole - pozadí Pracovní plochy - ikony na pracovní ploše - Hlavní panel - ikony na Hlavním panelu (zvýrazněná ikona spuštěné

Více

Instalace a první spuštění Programu Job Abacus Pro

Instalace a první spuštění Programu Job Abacus Pro Instalace a první spuštění Programu Job Abacus Pro Pro chod programu je nutné mít nainstalované databázové úložiště, které je připraveno v instalačním balíčku GAMP, který si stáhnete z našich webových

Více

Co děti v kroužku vyzkoušely

Co děti v kroužku vyzkoušely Co děti v kroužku vyzkoušely Instalace Mageia Linux a Ubuntu K rozdělení disků při instalaci na PC s OS Windows (OS se volí pomocí zavaděče GRUB) 1) ve Windows rozdělit disk na C: (cca 40 G) a D: (cca

Více

SignEditor 1 - návod k použití

SignEditor 1 - návod k použití SignEditor 1 - návod k použití Tomáš Ryba tryba@kky.zcu.cz Zdeněk Krňoul zdkrnoul@kky.zcu.cz Jakub Kanis jkanis@kky.zcu.cz 27. března 2012 1 Vznik za podpory projektu Pojabr - Potlačení jazykové bariéry

Více

SADA VY_32_INOVACE_PP1

SADA VY_32_INOVACE_PP1 SADA VY_32_INOVACE_PP1 Přehled anotačních tabulek k dvaceti výukovým materiálům vytvořených Ing. Janem Prašivkou. Kontakt na tvůrce těchto DUM: prasivka@szesro.cz Úvod do informatiky VY_32_INOVACE_PP1.PRA.01

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

Cvičení 3. Plán. Procesy. procesy, jobs Find Wildcards Příklad uživatelé. ZOS 2005, L. Pešička. eryx4> ps x

Cvičení 3. Plán. Procesy. procesy, jobs Find Wildcards Příklad uživatelé. ZOS 2005, L. Pešička. eryx4> ps x Cvičení 3. ZOS 2005, L. Pešička Plán procesy, jobs Find Wildcards Příklad uživatelé Procesy eryx4> ps x PID TTY STAT TIME COMMAND 15055 pts/6 S 0:00 -tcsh 15256 pts/6 R 0:00 ps x eryx4> top & [1] 15260

Více

http://www.zlinskedumy.cz

http://www.zlinskedumy.cz Číslo projektu Číslo a název šablony klíčové aktivity Tematická oblast Autor Ročník 1 Obor CZ.1.07/1.5.00/34.0514 III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Operační systém a textový editor,

Více

Střední odborná škola a Střední odborné učiliště, Hořovice

Střední odborná škola a Střední odborné učiliště, Hořovice Kód DUM : VY_32_INOVACE_LIN.1.04 Název materiálu: Anotace Autor Jazyk Očekávaný výstup 04 Zásady běžné instalace OS Linux DUM naučí připravit počítač k instalaci OSL a provede žáka kroky instalace systému

Více

PSK3-3. Základní příkazy. Zápis cesty

PSK3-3. Základní příkazy. Zápis cesty PSK3-3 Název školy: Autor: Anotace: Vyšší odborná škola a Střední průmyslová škola, Božetěchova 3 Ing. Marek Nožka Přehled základních příkazů systému Unix Vzdělávací oblast: Informační a komunikační technologie

Více

aneb velice zjednodušené vysvětlení základních funkcí a možností systému Vypracoval: Tomáš Dluhoš E-mail: tomas.d@centrum.cz

aneb velice zjednodušené vysvětlení základních funkcí a možností systému Vypracoval: Tomáš Dluhoš E-mail: tomas.d@centrum.cz aneb velice zjednodušené vysvětlení základních funkcí a možností systému Vypracoval: Tomáš Dluhoš E-mail: tomas.d@centrum.cz Operační systém Windows - první operační systém Windows byl představen v roce

Více

Příručka pro aplikaci KSnapshot

Příručka pro aplikaci KSnapshot Richard J. Moore Robert L. McCormick Brad Hards Kontrolor: Lauri Watts Vývojář: Richard J Moore Vývojář: Matthias Ettrich Překlad: Lukáš Vlček 2 Obsah 1 Úvod 5 2 Použití KSnapshot 6 2.1 Spuštění KSnapshot.....................................

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

Úvodní příručka. Získání nápovědy Kliknutím na otazník přejděte na obsah nápovědy.

Úvodní příručka. Získání nápovědy Kliknutím na otazník přejděte na obsah nápovědy. Úvodní příručka Microsoft Access 2013 vypadá jinak než ve starších verzích, proto jsme vytvořili tuto příručku, která vám pomůže se s ním rychle seznámit. Změna velikosti obrazovky nebo zavření databáze

Více

CMS. Centrální monitorovací systém. Manuál

CMS. Centrální monitorovací systém. Manuál Centrální Monitorovací Systém manuál CMS Centrální monitorovací systém Manuál VARIANT plus, spol. s.r.o., U Obůrky 5, 674 01 TŘEBÍČ, tel.: 565 659 600 technická linka 565 659 630 (pracovní doba 8.00 16:30)

Více

Instalační příručka Command WorkStation 5.6 se sadou Fiery Extended Applications 4.2

Instalační příručka Command WorkStation 5.6 se sadou Fiery Extended Applications 4.2 Instalační příručka Command WorkStation 5.6 se sadou Fiery Extended Applications 4.2 Sada Fiery Extended Applications Package (FEA) v4.2 obsahuje aplikace Fiery pro provádění úloh souvisejících se serverem

Více

Návod pro připojení k síti VŠPJ prostřednictvím VPN Vysoká škola polytechnická Jihlava

Návod pro připojení k síti VŠPJ prostřednictvím VPN Vysoká škola polytechnická Jihlava Návod pro připojení k síti VŠPJ prostřednictvím VPN Vysoká škola polytechnická Jihlava autor: OIKT 2015 Obsah Návod pro instalaci VPN... 3 Důležité upozornění... 3 Příprava na instalaci - stažení souborů...

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

PŘÍKAZY PRÁCE SE SOUBORY

PŘÍKAZY PRÁCE SE SOUBORY PŘÍKAZY PRÁCE SE SOUBORY Název školy Obchodní akademie, Vyšší odborná škola a Jazyková škola s právem státní jazykové zkoušky Uherské Hradiště Název DUMu Absolutní a relativní cesty Autor Martin Šimůnek

Více

Projekt implementace OS Linux do výuky informačních technologií

Projekt implementace OS Linux do výuky informačních technologií Projekt implementace OS Linux do výuky informačních technologií Projekt v rámci SIPVZ Implementace operačního systému Linux do výuky informačních technologií Evidenční číslo: 0722P2006 Poskytoval dotace:

Více

C2110 Operační systém UNIX a základy programování

C2110 Operační systém UNIX a základy programování C2110 Operační systém UNIX a základy programování 4. lekce Procesy Petr Kulhánek, Jakub Štěpán kulhanek@chemi.muni.cz Národní centrum pro výzkum biomolekul, Přírodovědecká fakulta Masarykova univerzita,

Více

METODICKÝ POKYN PRÁCE S MS PowerPoint - ZAČÁTEČNÍCI. Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky.

METODICKÝ POKYN PRÁCE S MS PowerPoint - ZAČÁTEČNÍCI. Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky. METODICKÝ POKYN PRÁCE S MS PowerPoint - ZAČÁTEČNÍCI Základní rozložení plochy Výchozím stavem při práci je normální zobrazení. pás karet - základní nabídka příkazů Pořadí jednotlivých snímků Základní plocha

Více

1. Instalace MySQL Serveru...2. 2. Konfigurace MySql Serveru...2. 3. Vytvoření struktury databáze...3

1. Instalace MySQL Serveru...2. 2. Konfigurace MySql Serveru...2. 3. Vytvoření struktury databáze...3 Obsah 1. Instalace MySQL Serveru...2 2. Konfigurace MySql Serveru...2 3. Vytvoření struktury databáze...3 4. Instalace Watchdog na klientských stanicích...4 5. Watchdog Viewer...6 Nastavení připojení k

Více

ZŠ ÚnO, Bratří Čapků 1332

ZŠ ÚnO, Bratří Čapků 1332 MS Excel 2002 Grada - po spuštění je třeba kliknout do středu obrazovky - v dalším dialogovém okně (Přihlášení) vybrat uživatele, zřídit Nového uživatele nebo zvolit variantu Bez přihlášení (pro anonymní

Více

Univerzální rezervační systém. Uživatelská příručka

Univerzální rezervační systém. Uživatelská příručka Univerzální rezervační systém Uživatelská příručka Obsah I. Instalace... 3 II. První spuštění aplikace... 4 III. Hlavní okno aplikace... 5 IV. Nastavení aplikace... 6 1. Přidání místností... 6 2. Uživatelské

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

Střední odborná škola a Střední odborné učiliště, Hořovice

Střední odborná škola a Střední odborné učiliště, Hořovice Kód DUM : VY_32_INOVACE_LIN.1.02 Název materiálu: Anotace Autor Jazyk Očekávaný výstup 02- Zásady psaní a řetězení příkazů, jednoduchý skript DUM naučí žáky zásady práce s příkazy shellu BASH, zásady psaní

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

2.2 Acronis True Image 19

2.2 Acronis True Image 19 Obsah Kniha první Acronis True Image 9.0 1. Úvod 15 1.1 Co je Acronis True Image? 15 1.2 Co je nového v aplikaci Acronis True Image 9.0? 15 1.3 Jaký je rozdíl mezi zálohami a diskovými obrazy disků/diskových

Více

Radim Dolák Gymnázium a Obchodní akademie Orlová

Radim Dolák Gymnázium a Obchodní akademie Orlová Radim Dolák Gymnázium a Obchodní akademie Orlová Úvod Cíl prezentace Samba historie a budoucnost Samba - vlastnosti Samba verze 4 a 4.1 Instalace Současný a plánovaný stav Instalace Správa Testování a

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

Computer Press Brno 2003

Computer Press Brno 2003 r Martin Kysela. Precházíme na Linux Computer Press Brno 2003 II I I. Obsah Podekování 13 Úvod 15 Co v této knize naleznete? 15 Co v této knize nenaleznete? 16 Než začneme 17 Co je Linux? 17 Proč další

Více

SOFTWARE 5P. Instalace. SOFTWARE 5P pro advokátní praxi 2010. Oldřich Florian

SOFTWARE 5P. Instalace. SOFTWARE 5P pro advokátní praxi 2010. Oldřich Florian SOFTWARE 5P Instalace SOFTWARE 5P pro advokátní praxi 2010 Oldřich Florian 2010 Instalace Stránka 1 z 16 Obsah Instalace Runtime Access 2010... 2 Instalace klienta (programu)... 3 Instalace databáze...

Více

Nápověda k aplikaci EA Script Engine

Nápověda k aplikaci EA Script Engine Nápověda k aplikaci EA Script Engine Object Consulting s.r.o. 2006 Obsah Nápověda k aplikaci EA Script Engine...1 1. Co je EA Script Engine...2 2. Důležité upozornění pro uživatele aplikace EA Script Engine...3

Více

Střední odborná škola a Střední odborné učiliště, Hořovice

Střední odborná škola a Střední odborné učiliště, Hořovice Kód DUM : VY_32_INOVACE_LIN.1.19 Název materiálu: Anotace Autor Jazyk Očekávaný výstup 19_ Bezpečnost dat zálohování a obnova dat programem dd DUM seznámí žáky s možnostmi zálohování komprimačním programem

Více

Linuxové distribuce. Michal Dočekal

Linuxové distribuce. Michal Dočekal Linuxové distribuce Michal Dočekal 2011 Právní doložka Právní doložka autor není právník autor neručí za pravdivost uvedených informací autor neručí za jakékoliv případné škody způsobené uvedenými informaci

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

MATLABLINK - VZDÁLENÉ OVLÁDÁNÍ A MONITOROVÁNÍ TECHNOLOGICKÝCH PROCESŮ

MATLABLINK - VZDÁLENÉ OVLÁDÁNÍ A MONITOROVÁNÍ TECHNOLOGICKÝCH PROCESŮ MATLABLINK - VZDÁLENÉ OVLÁDÁNÍ A MONITOROVÁNÍ TECHNOLOGICKÝCH PROCESŮ M. Sysel, I. Pomykacz Univerzita Tomáše Bati ve Zlíně, Fakulta aplikované informatiky Nad Stráněmi 4511, 760 05 Zlín, Česká republika

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

ADMINISTRACE UNIXU A SÍTÍ - AUS Metodický list č. 1

ADMINISTRACE UNIXU A SÍTÍ - AUS Metodický list č. 1 Metodický list č. 1 Cílem předmětu je seznámit posluchače s problematikou správy systémů typu UNIX a základním nastavením počítačových sítí. Zaměření kurzu je především na získání celkového přehledu a

Více

Profilová část maturitní zkoušky 2013/2014

Profilová část maturitní zkoušky 2013/2014 Střední průmyslová škola, Přerov, Havlíčkova 2 751 52 Přerov Profilová část maturitní zkoušky 2013/2014 TEMATICKÉ OKRUHY A HODNOTÍCÍ KRITÉRIA Studijní obor: 78-42-M/01 Technické lyceum Předmět: TECHNIKA

Více

František Hudek. únor ročník

František Hudek. únor ročník VY_32_INOVACE_FH01_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 únor 2013 6.

Více

Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky. PORTÁL KUDY KAM. Manuál pro editaci ŽS. Verze 1.

Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky. PORTÁL KUDY KAM. Manuál pro editaci ŽS. Verze 1. Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky. PORTÁL KUDY KAM Manuál pro editaci ŽS Verze 1.0 2012 AutoCont CZ a.s. Veškerá práva vyhrazena. Tento dokument

Více

Začínáme s Tovek Tools

Začínáme s Tovek Tools NAJÍT POCHOPIT VYUŽÍT Úvodní seznámení s produktem Tovek Tools JAK SI TOVEK TOOLS NAINSTALUJI?... 2 JAK SI PŘIPOJÍM INFORMAČNÍ ZDROJE, VE KTERÝCH CHCI VYHLEDÁVAT?... 2 JAK MOHU VYHLEDÁVAT V INFORMAČNÍCH

Více

1 Správce licencí Správce licencí Správce licencí Start > Všechny programy > IDEA StatiCa > Správce licencí Soubor > Správce licencí Licence

1 Správce licencí Správce licencí Správce licencí Start > Všechny programy > IDEA StatiCa > Správce licencí Soubor > Správce licencí Licence 1 Správce licencí Programy IDEA jsou chráněny proti neoprávněnému použití. Pro běh programu je vyžadována platná licence. Upozornění: Lokální licence na pracovní stanici a síťová licence Eleckey jsou softwarové

Více

LAN se používá k prvnímu nastavení Vašeho DVR a když potřebujete nastavit síť na Vašem DVR pro používání po internetu.

LAN se používá k prvnímu nastavení Vašeho DVR a když potřebujete nastavit síť na Vašem DVR pro používání po internetu. Návod Video Viewer 1.9.9 1 Dodávaný licencovaný software Následující stránky popisují nejpoužívanější funkce software Video Viewer. Podrobnosti o softwaru a jeho nastavení, najdete v rozšířené příručce,

Více

E-learningovýsystém Moodle

E-learningovýsystém Moodle E-learningovýsystém Moodle Jan Povolný Název projektu: Věda pro život, život pro vědu Registrační číslo: CZ.1.07/2.3.00/45.0029 Co je to Moodle? - systém pro tvorbu a správu elektronických výukových kurzů

Více

Administrace webu Postup při práci

Administrace webu Postup při práci Administrace webu Postup při práci Obsah Úvod... 2 Hlavní menu... 3 a. Newslettery... 3 b. Administrátoři... 3 c. Editor stránek... 4 d. Kategorie... 4 e. Novinky... 5 f. Produkty... 5 g. Odhlásit se...

Více

Vstupní požadavky, doporučení a metodické pokyny

Vstupní požadavky, doporučení a metodické pokyny Název modulu: Základy PHP Označení: C9 Stručná charakteristika modulu Modul je orientován na tvorbu dynamických stánek aktualizovaných podle kontextu volání. Jazyk PHP umožňuje velmi jednoduchým způsobem

Více

POZVÁNKA NA KURZY. Literatura Ke všem kurzům jsou poskytovány metodické příručky pro školství v elektronické podobě.

POZVÁNKA NA KURZY. Literatura Ke všem kurzům jsou poskytovány metodické příručky pro školství v elektronické podobě. POZVÁNKA NA KURZY Dovolujeme si zaměstnance Vaší školy pozvat na bezplatná školení sponzorovaná firmou Microsoft, která se konají na naší škole. Tato nabídka se týká všech zaměstnanců školství pedagogů

Více

VirtualBox desktopová virtualizace. Zdeněk Merta

VirtualBox desktopová virtualizace. Zdeněk Merta VirtualBox desktopová virtualizace Zdeněk Merta 15.3.2009 VirtualBox dektopová virtualizace Stránka 2 ze 14 VirtualBox Multiplatformní virtualizační nástroj. Částečně založen na virtualizačním nástroji

Více

LIVE CD/DVD ZLÍNSKÝ KRAJ. Obchodní akademie, Vyšší odborná škola a Jazyková škola s právem státní jazykové zkoušky Uherské Hradiště

LIVE CD/DVD ZLÍNSKÝ KRAJ. Obchodní akademie, Vyšší odborná škola a Jazyková škola s právem státní jazykové zkoušky Uherské Hradiště LIVE CD/DVD Název školy Obchodní akademie, Vyšší odborná škola a Jazyková škola s právem státní jazykové zkoušky Uherské Hradiště Název DUMu Live CD/DVD Autor Martin Šimůnek Datum 2. 10. 2012 Stupeň atypvzdělávání

Více

Kerio IMAP Migration Tool

Kerio IMAP Migration Tool Kerio IMAP Migration Tool 2011 Kerio Technologies s.r.o. Všechna práva vyhrazena. Verze: 7.2 1 Úvod Tato příručka slouží jako průvodce migrací uživatelských účtů a dat z libovolného IMAP serveru do úložiště

Více

Úvodní příručka. Správa souborů Kliknutím na kartu Soubor můžete otevřít, uložit, vytisknout a spravovat své soubory Wordu.

Úvodní příručka. Správa souborů Kliknutím na kartu Soubor můžete otevřít, uložit, vytisknout a spravovat své soubory Wordu. Úvodní příručka Microsoft Word 2013 vypadá jinak než ve starších verzích, proto jsme vytvořili tuto příručku, která vám pomůže se s ním rychle seznámit. Panel nástrojů Rychlý přístup Příkazy tady umístěné

Více

Instalace aplikace 602XML Filler

Instalace aplikace 602XML Filler Instalace aplikace 602XML Filler Popis aplikace 602XML Filler 602XML Filler je aplikace pro vyplňování formulářů. Jedná se o volně šiřitelný a v České republice již všeobecně rozšířený nástroj se snadným

Více