Olomouc 2014 www.liberix.cz

Transkript

Olomouc 2014 www.liberix.cz
Olomouc 2014
www.liberix.cz
Autoři
Michael Niedermair, Joachim Wolf
Städtische Berufsschule für Informationstechnik
http://www.bsinfo.musin.de/
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
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., http://www.liberix.cz/
Volně použitelné pro nekomerční využití ve veřejných školách.
Jiné licenční podmínky možné po dohodě.
Obsah
Úvod
7
1 Lekce I – První kroky s Linuxem
1.1 Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.1.1 Historie Unixu . . . . . . . . . . . . . . . . . . .
1.1.2 Historie Linuxu . . . . . . . . . . . . . . . . . . .
1.1.3 Distribuce . . . . . . . . . . . . . . . . . . . . . .
1.1.4 Nasazení . . . . . . . . . . . . . . . . . . . . . . .
1.1.5 Důležité open-source aplikace . . . . . . . . . . .
1.1.6 Významné open-source programovací jazyky . .
1.2 Terminál a konzole, první kroky v příkazové řádce . . . .
1.2.1 Jak spustit konzoli, resp. terminál . . . . . . . . .
1.2.2 Co je to shell? . . . . . . . . . . . . . . . . . . . .
1.3 Nápověda k příkazům . . . . . . . . . . . . . . . . . . . .
1.4 Příkazy . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.4.1 Jednoduché příkazy . . . . . . . . . . . . . . . . .
1.4.2 Příkazy s argumenty . . . . . . . . . . . . . . . .
1.4.3 Zobrazit běžící programy/procesy . . . . . . . . .
1.5 Základy práce se soubory . . . . . . . . . . . . . . . . . .
1.5.1 Způsoby tvoření názvů v souborovém systému .
1.5.2 Zástupné znaky a regulární výrazy v shellu . . .
1.5.3 Typy souborů . . . . . . . . . . . . . . . . . . . .
1.5.4 Adresářová struktura linuxových systémů (FHS)
1.5.5 Pojmy týkající se souborového systému . . . . .
1.5.6 Práce se soubory . . . . . . . . . . . . . . . . . .
1.6 Textové editory . . . . . . . . . . . . . . . . . . . . . . .
1.6.1 Nano . . . . . . . . . . . . . . . . . . . . . . . . .
1.6.2 Vi . . . . . . . . . . . . . . . . . . . . . . . . . .
1.6.3 Vytvoření ikony na ploše . . . . . . . . . . . . .
1.7 Otázky . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
11
12
12
12
12
13
15
16
17
17
18
20
22
22
23
23
26
26
26
29
30
31
33
37
37
37
39
41
2 Lekce II – Správa uživatelů a oprávnění
2.1 Správa uživatelů v Linuxu . . . . . . . . . . . . . . . . . . . .
2.1.1 Správce systému, běžný uživatel a systémový uživatel
2.1.2 Primární a sekundární skupiny . . . . . . . . . . . . .
2.1.3 Vytvoření uživatelského účtu . . . . . . . . . . . . . .
2.1.4 Práce pod jiným uživatelem – su a sudo . . . . . . . .
2.1.5 Správa skupin . . . . . . . . . . . . . . . . . . . . . . .
2.1.6 Otázky . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2 Oprávnění souborů a jejich vlastnictví . . . . . . . . . . . . . .
2.2.1 Kategorie uživatelů a přístupová práva . . . . . . . . .
2.2.2 Změna přístupových práv a vlastnictví . . . . . . . . .
2.2.3 Otázky a úkoly . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
45
46
46
46
46
49
49
53
54
55
56
60
3 Lekce III – Skripty usnadňují práci
3.1 Úvod do programování skriptů .
3.1.1 První skript . . . . . . .
3.1.2 Spuštění skriptu . . . . .
3.1.3 Proměnné . . . . . . . .
3.1.4 Parametry . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
63
64
64
64
64
65
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3
OBSAH
3.2
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
69
69
69
72
72
73
74
74
75
75
76
77
77
79
4 Lekce IV – Zpracování fotografií z datového nosiče
4.1 Externí média . . . . . . . . . . . . . . . . . . . . . . .
4.1.1 Hlášení a logy . . . . . . . . . . . . . . . . . . .
4.1.2 Zobrazení připojených zařízení USB . . . . . .
4.1.3 Kopírování fotek . . . . . . . . . . . . . . . . .
4.2 Testování, připojování a formátování médií . . . . . . .
4.2.1 Souborové systémy . . . . . . . . . . . . . . . .
4.2.2 Připojování a odpojování souborových systémů
4.2.3 Kontrola integrity souborových systémů . . . .
4.2.4 Formátování souborových systémů . . . . . . .
4.3 Využití informací o fotce . . . . . . . . . . . . . . . . .
4.4 Filtrování textových souborů . . . . . . . . . . . . . . .
4.4.1 Zobrazení obsahu textových souborů . . . . . .
4.4.2 Řazení obsahu textových souborů . . . . . . . .
4.4.3 Vybrat řádky z textových souborů . . . . . . .
4.4.4 Rozčlenění textových souborů do sloupců a polí
4.4.5 Počet řádků a slov v textovém souboru . . . . .
4.4.6 Záměna znaků . . . . . . . . . . . . . . . . . .
4.5 Kopírování souborů s obrázky . . . . . . . . . . . . . .
4.5.1 Získání data a času . . . . . . . . . . . . . . . .
4.5.2 Formátování data a času . . . . . . . . . . . . .
4.5.3 Obrázky se stejným datem . . . . . . . . . . . .
4.5.4 Automatické otočení obrázků . . . . . . . . . .
4.6 Vytvoření náhledů . . . . . . . . . . . . . . . . . . . . .
4.7 Hrátky s obrázky . . . . . . . . . . . . . . . . . . . . .
4.7.1 Orámování obrázků . . . . . . . . . . . . . . .
4.7.2 Ořezávání obrázků . . . . . . . . . . . . . . . .
4.8 Otázky . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
81
82
82
84
85
89
89
89
91
91
92
94
94
95
95
97
97
97
100
100
101
101
102
102
103
103
104
106
5 Lekce V – Práce v síti
5.1 Internet a rodina protokolů TCP/IP . . . .
5.2 IPv4 . . . . . . . . . . . . . . . . . . . . . .
5.3 IPv6 . . . . . . . . . . . . . . . . . . . . . .
5.4 IP adresy a názvy počítačů pomocí DNS . .
5.5 Ruční nastavení sítě . . . . . . . . . . . . .
5.6 Automatické nastavení sítě pomocí DHCP
5.7 Otázky . . . . . . . . . . . . . . . . . . . .
3.3
3.4
Vytváření skupin . . . . . . . . . . . . . . . .
3.2.1 Načítání souboru po řádcích . . . . . .
3.2.2 Cykly . . . . . . . . . . . . . . . . . .
3.2.3 Podmínky . . . . . . . . . . . . . . . .
3.2.4 Vícenásobný výběr . . . . . . . . . . .
3.2.5 Záměna znaků . . . . . . . . . . . . .
3.2.6 Zjištění dostupných skupin . . . . . .
Vytváření uživatelů . . . . . . . . . . . . . . .
3.3.1 Vygenerování uživatelských jmen . . .
3.3.2 Generování hesel . . . . . . . . . . . .
3.3.3 Vytvoření uživatelských účtů žákům .
3.3.4 Vytvoření uživatelských účtů učitelům
3.3.5 Vytvoření superuživatele . . . . . . . .
Otázky . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
109
110
111
112
113
114
117
120
6 Lekce VI – Archivace dat a jejich komprimace
6.1 Komprimace dat . . . . . . . . . . . . . . . .
6.1.1 gzip . . . . . . . . . . . . . . . . . .
6.1.2 bzip2 . . . . . . . . . . . . . . . . . .
6.1.3 zip . . . . . . . . . . . . . . . . . . .
6.1.4 tar . . . . . . . . . . . . . . . . . . .
6.1.5 Další nástroje pro komprimaci . . . .
6.1.6 7-Zip . . . . . . . . . . . . . . . . . .
6.1.7 Otázky . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
123
124
124
125
125
127
129
129
130
4
OBSAH
6.2
Zálohování dat . . . . . . .
6.2.1 Typy zálohování .
6.2.2 Generační princip .
6.2.3 Provedení zálohy .
6.2.4 Obnovení . . . . .
6.2.5 Otázky . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
131
131
131
131
133
134
7 Lekce VII – Vytvoření webové stránky s obrázky
7.1 Vytváření fotogalerií . . . . . . . . . . . . . . .
7.1.1 HTML . . . . . . . . . . . . . . . . . . .
7.1.2 Zobrazení náhledů . . . . . . . . . . . .
7.1.3 Otázky . . . . . . . . . . . . . . . . . . .
7.2 Zveřejnění fotogalerie na webovém serveru . . .
7.3 Licence . . . . . . . . . . . . . . . . . . . . . . .
7.3.1 Přehled . . . . . . . . . . . . . . . . . .
7.3.2 Kterou licenci pro vlastní obrázky . . . .
7.3.3 Otázky . . . . . . . . . . . . . . . . . . .
7.4 Firefox jako bezpečný prohlížeč . . . . . . . . .
7.4.1 JavaScript . . . . . . . . . . . . . . . . .
7.4.2 Ochrana soukromých informací . . . . .
7.4.3 Potlačení reklamy . . . . . . . . . . . . .
7.4.4 Zabránit stránkám ve sledování . . . .
7.4.5 Šifrované připojení . . . . . . . . . . . .
7.4.6 Ukládání obsahu . . . . . . . . . . . . .
7.4.7 Vyhledávání na internetu . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
135
136
136
136
143
143
144
144
147
147
147
147
147
148
148
148
149
149
8 Lekce VIII – OSS Gimp & LibreOffice
151
8.1 GIMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
8.2 LibreOffice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
9 Přehled témat: Linux Essentials
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
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
155
156
156
157
157
157
158
158
158
158
159
159
159
159
160
160
160
161
161
161
162
162
162
162
163
165
5
OBSAH
Rejstříky
Programy / Příkazy
Adresáře / Soubory
Osoby . . . . . . . .
Termíny a výrazy .
6
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
167
167
169
170
171
Ú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
OBSAH
Lekce
Datum
1
2
3
4
5
6
7
8
9
10
11
Téma / Obsah
Test
Úvod, podklady
Lekce I – První kroky s Linuxem
Lekce II – Práce s uživateli a oprávněními
Lekce III – Skripty ulehčují práci
Lekce IV – Zpracování obrázků z USB disku
Lekce V – Práce v síti
Lekce VI – Archivování a komprimace dat
Lekce VII – Vytváření webových stránek pro obrázky
Lekce VIII – OSS Gimp & LibreOffice (volitelné)
Rychlokurz k přípravě na zkoušku
Zkouška LPI Linux Essentials
—
—
Test k I
Test k II
Test k III
Test k IV
Test k V
Test k VI
Test k VII
—
—
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 12.04 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 http://www.ubuntu.com/download/desktop a http://www.
ubuntu.cz/ziskejte/stahnout.
• Doma na své vlastní instalaci, viz http://www.ubuntu.com/download/help/install-ubuntu-desktop, resp.
http://wiki.ubuntu.cz/Instalace/Průvodce%20instalací?redirect=1.
• Ve VirtualBoxu na vlastním počítači:
– pomocí obrazu pro VirtualBox z webu http://virtualboxes.org/images/ubuntu/, viz
http://virtualboximages.com/Ubuntu+12.04+i386+Desktop+VirtualBox+VDI+Virtual+Computer,
– vytvořením vlastního obrazu, viz http://www.abclinuxu.cz/clanky/zaciname-s-virtualboxemvytvoreni-virtualniho-pocitace-a-disku.
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
Slouží k uvedení do problematiky kurzu.
Prezentace lekcí
Před každou lekcí se prezentuje její obsah.
Vědomostní test
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.
Ukázkové skripty
Pomocí copy & paste“ je můžete zkopírovat z textu.
”
1 Při
8
překladu jsme příklady ověřovali na Ubuntu 14.04 a v Debian GNU/Linuxu Wheezy, pozn. překl.
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
OBSAH
10
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
1.2
1.3
1.4
1.5
1.6
1.7
Linux . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.1.1 Historie Unixu . . . . . . . . . . . . . . . . . . .
1.1.2 Historie Linuxu . . . . . . . . . . . . . . . . . .
1.1.3 Distribuce . . . . . . . . . . . . . . . . . . . . .
1.1.4 Nasazení . . . . . . . . . . . . . . . . . . . . . .
1.1.5 Důležité open-source aplikace . . . . . . . . . .
1.1.6 Významné open-source programovací jazyky . .
Terminál a konzole, první kroky v příkazové řádce
1.2.1 Jak spustit konzoli, resp. terminál . . . . . . . .
1.2.2 Co je to shell? . . . . . . . . . . . . . . . . . . .
Nápověda k příkazům . . . . . . . . . . . . . . . . .
Příkazy . . . . . . . . . . . . . . . . . . . . . . . . . .
1.4.1 Jednoduché příkazy . . . . . . . . . . . . . . . .
1.4.2 Příkazy s argumenty . . . . . . . . . . . . . . .
1.4.3 Zobrazit běžící programy/procesy . . . . . . . .
Základy práce se soubory . . . . . . . . . . . . . . .
1.5.1 Způsoby tvoření názvů v souborovém systému .
1.5.2 Zástupné znaky a regulární výrazy v shellu . . .
1.5.3 Typy souborů . . . . . . . . . . . . . . . . . . .
1.5.4 Adresářová struktura linuxových systémů (FHS)
1.5.5 Pojmy týkající se souborového systému . . . . .
1.5.6 Práce se soubory . . . . . . . . . . . . . . . . .
Textové editory . . . . . . . . . . . . . . . . . . . . .
1.6.1 Nano . . . . . . . . . . . . . . . . . . . . . . . .
1.6.2 Vi . . . . . . . . . . . . . . . . . . . . . . . . . .
1.6.3 Vytvoření ikony na ploše . . . . . . . . . . . . .
Otázky . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
12
12
12
12
13
15
16
17
17
18
20
22
22
23
23
26
26
26
29
30
31
33
37
37
37
39
41
11
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.
1.1.1
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 Ritchiem2 vyvinuli hierarchický souborový systém, správu paměti
s velikostí 4 KWord (4096×18 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.
1972 Operační systém byl kompletně přepsán v programovacím jazyku C a distribuován společně s kompilátorem.
1977 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.
1980 Unix (a deriváty Unixu) se stal dominujícím operačním systémem na univerzitách.
1983 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).
1991 Linus Torvalds začíná s vývojem Linuxu, derivátem Unixu.
…
1.1.2
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 GPL3 , 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.
1.1.3
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
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
Red Hat
Debian
Knoppix
CentOS
Edubuntu
Gentoo
Mageia
Ubuntu
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
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.
unstable
Nestabilní verze, na níž se vyvíjí. Jednou z ní bude verze alfa nebo testing.
stable
Stabilní verze se považuje za bezchybnou. Může být bez problémů nasazena na produkční systém.
LTS
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.
1.1.4
Nasazení
Linux našel uplatnění v mnoha oblastech – ať už jde o desktop, serverové systémy nebo oblast embedded zařízení.
13
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 14.04 s Unity.
Obrázek 1.3: Ubuntu 14.04 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 VirtualBox7 ) 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 http://www.virtualbox.org
8 Zdroj: http://top500.org, citováno 16. srpna 2014.
14
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 http://www.
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
1.1.5
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
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
Mozilla Thunderbird je program pro práci s e-maily, RSS kanály a chatem.
Firefox
Mozilla Firefox je svobodný webový prohlížeč.
Blender
Blender je grafický program pro vytváření 3D modelů, například lidského těla (a to včetně textur
a animací).
Gimp
GIMP (GNU Image Manipulation Program) je svobodný grafický bitmapový editor, používá se také
na úpravu fotek.
Audacity
Audacity je svobodný editor zvuku a střižna.
ImageMagick
ImageMagick je sada programů pro zpracování a úpravu bitmapové grafiky (zejména z příkazové
řádky a skriptů).
Apache
Webový server Apache patří mezi nejpoužívanější software na internetu.
MySQL
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
PostgreSQL je svobodný objektově-relační databázový systém (ORDBMS).
NFS
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
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
OpenLDAP je implementace protokolu LDAP, která umožňuje centrálně spravovat profily uživatelů.
Postfix
Postfix je poštovní server (přesněji Mail Transfer Agent, MTA).
1.1.6
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
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++
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 1987.
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
PHP je skriptovací jazyk, v němž se vytvářejí dynamické webové stránky a aplikace.
Java
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ě
10 Při
16
podle The Document Foundation: CommunityByLaws.
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á.
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.
1.2.1
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
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).
1.2.2
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
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
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
Skočí na předchozí slovo.
Esc+f
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
alias
alias
alias
alias
alias
alias
alias
1.3
dir='dir --color=auto'
egrep='egrep --color=auto'
fgrep='fgrep --color=auto'
grep='grep --color=auto'
l='ls -CF'
la='ls -A'
ll='ls -alF'
ls='ls --color=auto'
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.12
12 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
1.3. NÁPOVĚDA K PŘÍKAZŮM
man less
LESS(1)
LESS(1)
NAME
less - opposite of more
SYNOPSIS
less
less
less
less
less
-?
--help
-V
--version
[-[+]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
y ^Y k ^K ^P
f ^F ^V SPACE
b ^B ESC-v
z * Forward one
w
...
* Forward
* Backward
* Forward
* Backward
window (and
* Backward
one
one
one
one
set
one
line
line
window
window
window
window
(or N lines).
(or N lines).
(or N lines).
(or N lines).
to N).
(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í
• http://www.linux.org
• http://linuxos.pro
• http://www.linuxwiki.de
21
LEKCE I – PRVNÍ KROKY S LINUXEM
•
•
•
•
•
•
•
http://lwn.net
http://www.linuxforum.com
http://freecode.com
http://www.linux-knowledge-portal.de
http://www.linuxjournal.com
http://www.linuxfocus.org
http://www.linux-center.org/en
České a slovenské zdroje informací (přidány překladatelem):
•
•
•
•
•
•
•
•
•
http://www.liberix.cz
http://www.linuxexpres.cz
http://www.abclinuxu.cz
http://www.root.cz
http://www.linuxsoft.cz
http://www.ubuntu.cz
http://www.fedora.cz
http://www.linux-mint-czech.cz
http://www.debian-linux.cz
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.
1.4.1
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á
1
3 4 5 6 7 8
10 11 12 13 14 15
17 18 19 20 21 22
24 25 26 27 28 29
31
who
So
2
9
16
23
30
Zobrazí všechny přihlášené uživatele.
user
pts/6
2014-05-02 16:47 (:0)
Sloupce mají následující význam: uživatelské jméno, označení terminálu a čas přihlášení.
22
1.4. PŘÍKAZY
1.4.2
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:
Kalendář pro prosinec 2014.
cal 12 2014
Prosinec 2014
Ne Po Út St Čt
1 2 3 4
7 8 9 10 11
14 15 16 17 18
21 22 23 24 25
28 29 30 31
ls -la /etc/sh*
Pá
5
12
19
26
So
6
13
20
27
Zobrazí všechny soubory (s dalšími informacemi) z adresáře /etc začínající na sh“.
”
-rw-r----- 1 root shadow 1145 Apr 22 04:17 /etc/shadow
-rw------- 1 root root
1145 Apr 22 04:17 /etc/shadow-rw-r--r-- 1 root root
73 Nov 18 2013 /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 cmd3.
1.4.3
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
2961
3028
3088
7415
TTY
pts/0
pts/0
pts/0
pts/0
TIME
00:00:00
00:00:03
00:00:00
00:00:00
CMD
bash
xterm
xterm
ps
23
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
root
root
...
root
syslog
root
...
mgn
PID %CPU %MEM
1 0.0 0.0
2 0.0 0.0
VSZ
24432
0
RSS TTY
2412 ?
0 ?
STAT START
Ss
17:33
S
17:33
TIME COMMAND
0:00 /sbin/init
0:00 [kthreadd]
964
977
1020
0.0
0.0
0.0
0.0 49948
0.0 249464
0.0 234000
2868 ?
1668 ?
5344 ?
Ss
Sl
Ssl
17:33
17:33
17:33
0:00 /usr/sbin/sshd -D
0:00 rsyslogd -c5
0:00 NetworkManager
7486
0.0
0.0
1272 pts/2
R+
20:43
0:00 ps aux
18368
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álu14 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
3303 pts/3
5177 pts/3
5236 pts/3
kill -9 5177
TIME
00:00:00
00:00:00
00:00:00
CMD
bash
xterm
ps
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.15
13 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
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: 16365944k total, 3193964k used, 13171980k free,
130656k buffers
Swap: 3999740k total,
0k used, 3999740k free, 1243236k cached
PID
2388
1234
2415
2358
8042
1
2
3
6
7
8
10
12
13
15
16
USER
mgn
root
mgn
mgn
mgn
root
root
root
root
root
root
root
root
root
root
root
PR
20
20
20
20
20
20
20
20
RT
RT
RT
20
RT
RT
20
RT
NI
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
VIRT
1402m
185m
30740
28324
17468
24432
0
0
0
0
0
0
0
0
0
0
RES SHR S
294m 44m S
81m 38m S
2276 1864 S
3940 624 S
1360 952 R
2412 1348 S
0
0 S
0
0 S
0
0 S
0
0 S
0
0 S
0
0 S
0
0 S
0
0 S
0
0 S
0
0 S
%CPU
9
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
%MEM TIME+ COMMAND
1.8 22:52.08 compiz
0.5
5:35.03 Xorg
0.0
1:24.93 xosview
0.0
0:24.29 dbus-daemon
0.0
0:00.01 top
0.0
0:00.85 init
0.0
0:00.00 kthreadd
0.0
0:00.81 ksoftirqd/0
0.0
0:00.00 migration/0
0.0
0:00.03 watchdog/0
0.0
0:00.00 migration/1
0.0
0:00.70 ksoftirqd/1
0.0
0:00.03 watchdog/1
0.0
0:00.00 migration/2
0.0
0:00.61 ksoftirqd/2
0.0
0:00.05 watchdog/2
Zobrazit využití paměti
Pro zobrazení celkového využití paměti použijte program free.
free
total
Mem:
16365944
-/+ buffers/cache:
Swap:
3999740
-g
used
3103556
1729620
0
free
13262388
14636324
3999740
shared
0
buffers
130704
cached
1243232
Bez parametru zobrazí free informace v bajtech, s parametrem -k v kilobajtech, s -m v megabajtech a s parametrem
v gigabajtech.
25
LEKCE I – PRVNÍ KROKY S LINUXEM
free -m
total
Mem:
15982
-/+ buffers/cache:
Swap:
3905
1.5
used
3029
1687
0
free
12952
14295
3905
shared
0
buffers
128
cached
1214
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.
1.5.1
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.
”
1.5.2
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]*
16 Anglicky
Všechny soubory začínající na písmeno mezi a až f.
se jim říká také glob“ a jejich používání se označuje jako globbing“.
”
”
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.
17 Pojem
26
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 * vyhledá také soubory v podadresářích. Lze to
vypnout přepínačem -d.
Výběr nejdůležitějších linuxových příkazů určených k práci se soubory
ls
Zobrazit soubory a adresáře.
cd
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
Zobrazit aktuální adresář.
cp
Kopírovat soubory/podadresáře.
rm
Odstranit soubory/podadresáře.
mv
Přejmenovat/přesunout soubory/adresáře.
file
Analyzovat obsah souboru.
cat
Zobrazit obsah (textového) souboru.
less
Interaktivně prohlédnout textový soubor.
test
Univerzální příkaz např. ke zjištění, zda soubor existuje.
find
Hledat konkrétní soubory.
grep
Hledat v souborech textové řetězce.
sort
Seřadit obsah textového souboru po řádcích a zobrazit ho.
echo
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
LEKCE I – PRVNÍ KROKY S LINUXEM
Bez skrytých souborů/adresářů.
ls *
test.aaa
test.bbb
test.ccc
Zobrazit skryté soubory/adresáře18
ls -d .*
.
..
.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.
Zobrazit všechny soubory/adresáře
ls -a
.
..
.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 4.1.3 na
straně 86).
ls -R /tmp
Cvičení:
1. V adresáři /home/auricka/fotky se nacházejí následující snímky:
①
②
③
④
⑤
RIMG0001.JPG
RIMG0001.raw
RIMG0002.JPG
RIMG0002.raw
RIMG0003.JPG
⑥
⑦
⑧
⑨
⑩
⑪
⑫
⑬
⑭
RIMG0003.raw
RIMG0004.JPG
RIMG0004.raw
IMAG0022.jpg
IMAG0022.raw
IMAG0023.jpg
IMAG0023.raw
IMAG0024.jpg
IMAG0024.raw
Vytvořte pomocí mkdir test nový adresář, přesuňte se do něj pomocí cd test a vytvořte soubory ①–⑭ pokaždé
příkazem touch název souboru. Zadejte čísla souborů, které budou zobrazeny, když spustíte níže uvedené příkazy.
(a) ls *
(g) ls ????????????
(b) ls RIM*
(h) ls IMAG002?.raw
(c) ls *JPG
(i) ls RIMG000[1-3]*
(d) ls IM*jpg
(j) ls IMAG00[1-4].jpg
(e) ls *A*
(k) ls [^R]*raw
(f) ls IMAG002?.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
10 file02
3 acrobat.ps.pdf
7 Soubor-File29
11 file11
4 Command.com
8 Soubor File29
12 file13
18 Pomocí
28
-d určíte, že příkaz ls nezobrazí obsah adresářů (zde . a ..).
9 File
1.5. ZÁKLADY PRÁCE SE SOUBORY
13 file19
17 Index.HTM
21 liste
14 File19
18 INDEX.html
22 schock.Soubor.198
15 Filiale28
19 INDEX.HTM
23 senseless-file88
16 Hifileasure
20 index.html
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.
1.5.3
(a) ls
(10, 11, 12, 13)
(f) ls
(6, 7)
(b) ls
(3, 22)
(g) ls
(7, 8)
(c) ls
(6, 7, 8)
(h) ls
(6, 7, 23)
(d) ls
(9, 14, 15)
(i) ls
(17, 19)
(e) ls
(18, 19, 24)
(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
první disketová mechanika, obvykle odkaz na soubor zařízení
/dev/fd0H1440
/dev/sda
první pevný disk SATA nebo SCSI
/dev/hda
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
první SATA mechanika CD/DVD-ROM
(zkratka znamená scsi readable“)
”
/dev/sde2 druhý primární oddíl pátého disku SATA SCSI
/dev/sr0
adresář (directory)
/dev/sdb
druhý disk SATA nebo SCSI, případně také USB disk
/dev/tty1
první virtuální terminál
Obsahuje soubory a podadresáře (subdirectories).
Znak
Souborový typ
d
Adresář (directory)
l
Symbolické odkazy (links)
b
c
Blokové zařízení (block device)
Znakové zařízení (character device)
p
Pojmenovaná roura (pipe)
s
Sokety (sockets)
Obrázek 1.12: Výpis pomocí ls -la a zkratky pro typy souborů
29
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
1.5.4
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
Obslužné programy a příkazy, kterou mohou spouštět všichni uživatelé.
/sbin
Programy a příkazy k obsluze a správě systému.
Smí je spouštět pouze root.
/boot
Jádro a soubory, které vyžaduje linuxový zavaděč systému.
/dev
Soubory zařízení.
/etc
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
Domovské adresáře uživatelů.
/lib
Systémové knihovny a jaderné moduly.
/lib…
Alternativní dynamické knihovny, např. /lib32 a /lib64 pro 32bitové a 64bitové aplikace.
/media
Přípojné body pro výměnná média.
/mnt
Dočasný přípojný bod pro souborové systémy.
/opt
Doplňkové aplikace.
/proc
Souborový systém procesů, rozhraní pro komunikaci s jádrem, např. pro správu procesů.
/root
Domovský adresář systémového správce root.
19 Systémový
20 Mnohé
30
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.
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.
1.5. ZÁKLADY PRÁCE SE SOUBORY
/srv
Data systémových služeb.
/tmp
Dočasné soubory.
/usr
Aplikace, programy, X window system, … (statická data).
/usr/src
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í)
1.5.5
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
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).
relativní cesta
Údaje obsažené v cestě začínají na úrovni aktuálního adresáře. Příklad (pro
/home/herbert): dopisy/maria.txt.
31
LEKCE I – PRVNÍ KROKY S LINUXEM
/(0)
bin(1)
chmod(2)
ls(3)
mkdir(4)
ping(5)
video(6)
clips(7)
00002.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)
Cvičení:
Jako zadání pro další úkoly použijeme ukázku z adresářové struktury linuxového systému:
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 56.
2. 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
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 58.
1.5.6
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
-rw-r--r-- 1 uzivatel
* s vytvořením zálohy
-rw-r--r-- 1 uzivatel
-rw-r--r-- 1 uzivatel
-rw-r--r-- 1 uzivatel
uzivatel
uzivatel
*
uzivatel
uzivatel
uzivatel
0 Aug 14 11:54 mujSoubor1
0 Aug 14 11:54 mujSoubor2
0 Aug 14 11:54 mujSoubor1
0 Aug 14 11:54 mujSoubor2
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
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 2 2014-08-14 11:54:47.000000000 ←-0400 mujSoubor1
-rw-r--r-- 1 uzivatel uzivatel 4 2014-08-14 11:54:49.000000000 ←-0400 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
34
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
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?
5955613
* Odkaz
5955613
5955613
-rw-r--r-- 1 uzivatel uzivatel 0 Aug 14 11:54 mujSoubor1
*
-rw-r--r-- 2 uzivatel uzivatel 0 Aug 14 11:54 mujSoubor1
-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
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
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í.
1.6.1
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.
1.6.2
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
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
Smazat (angl. delete) následující čtyři slova (angl. words).
5dd
Smazat následujících pět řádků.
y
Kopírovat aktuální řádek do schránky (angl. yank, škubnout, trhnout).
5y
Kopírovat do schránky pět řádků.
p
Vložit (angl. paste) řádky ze schránky.
G
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!
38
Ukončit vi bez uložení dat.
1.6. TEXTOVÉ EDITORY
:/výraz
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).
:set number
Zobrazit v aktuálním sezení editoru číslování řádků.
Nahradit na aktuálním řádku všechny znaky ö“ za oe“.
”
”
:1,$/\//\./g
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.
:s/ö/oe/g
: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í #.
”
1.6.3
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
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
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
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
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
LEKCE I – PRVNÍ KROKY S LINUXEM
44
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
2.2
Správa uživatelů v Linuxu . . . . . . . . . . . . . . . . . .
2.1.1 Správce systému, běžný uživatel a systémový uživatel
2.1.2 Primární a sekundární skupiny . . . . . . . . . . . . .
2.1.3 Vytvoření uživatelského účtu . . . . . . . . . . . . .
2.1.4 Práce pod jiným uživatelem – su a sudo . . . . . . . .
2.1.5 Správa skupin . . . . . . . . . . . . . . . . . . . . . .
2.1.6 Otázky . . . . . . . . . . . . . . . . . . . . . . . . . .
Oprávnění souborů a jejich vlastnictví . . . . . . . . . . .
2.2.1 Kategorie uživatelů a přístupová práva . . . . . . . .
2.2.2 Změna přístupových práv a vlastnictví . . . . . . . .
2.2.3 Otázky a úkoly . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
46
46
46
46
49
49
53
54
55
56
60
45
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.
2.1.1
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, roz”
bí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.
2.1.2
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.
2.1.3
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
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 http://en.wikipedia.org/wiki/Gecos_field
47
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 znaky2 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 1970.
MinD
Minimální počet dnů, kdy je heslo platné; pokud je políčko prázdné nebo obsahuje nulu, pak není
minimum nastavené.
MaxD
Maximální počet dnů, kdy je heslo platné; po uplynutí této lhůty si uživatel musí heslo změnit.
Varování
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í.
Lhůta
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 1970.
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
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í:
root@linux ~# passwd bittler
New password: **********
Re-enter new password: **********
Password changed.
2.1.4
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:
lorenzvi@linux ~$ su
Heslo: ********
root@linux:/home/lorenzvi# su - bittler
bittler@linux: ~$ 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.
2.1.5
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
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 1010.
groupmod -g 2011 it11fa
Existující skupině it11fa změnit GID na 2011.
groupmod -g 2100 -n teacher ucitele
Skupinu ucitele přejmenovat na teacher a změnit GID na 2100.
groupdel it11fa
Smazat skupinu it11fa.
50
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
summerma
janist
lorenzvi
/home/brunnefl
/home/summerma
/home/janist
/home/lorenzvi
it11fa
it11se
it11fs
ucitele
/etc/skel.zak
/etc/skel.zak
/etc/skel.zak
/etc/skel.ucitel
Brunner,Florian,IT11FA
Summer,Maximilian,IT11SE
Jani,Steffi,IT11FS
Lorenzová,Viola,ucitel
Zkontrolujte pohledem do databáze skupin a uživatelů, že byly účty úspěšně vytvořeny.
51
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
2.1. SPRÁVA UŽIVATELŮ V LINUXU
2.1.6
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 21. 03. 2014. 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
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
2.2. OPRÁVNĚNÍ SOUBORŮ A JEJICH VLASTNICTVÍ
2.2.1
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 1.5.3 na straně 29):
ls -l test.txt
-rw-r----- 1 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
-rw------- 1 root shadow
1187
lis 22 12:45 /etc/passwd
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
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: ---).
root.
Speciální práva: SUID, SGID a sticky bit
Na následujícím příkladu si ukážeme, jak speciální práva4 fungují:
ls -ld /tmp
drwxrwxrwt
-rwsr-xr-x
-rwxr-sr-x
Sticky bit
/usr/bin/passwd /bin/wall
1 root root
4096 srp 15 08:18 /tmp
1 root shadow
73640 srp 15 22:33 /usr/bin/passwd
1 root tty
14552 čer 6 2008 /usr/bin/wall
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.
4V
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
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í.
2.2.2
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ů
u Vlastnictví (user, owner)
g Členové skupiny (group)
o Všichni ostatní uživatelé (others)
a Všechny tři kategorie (all)
Práva
r
číst (read)
w zapisovat (write)
x spouštět (execute)
s
SUID/SGID
t
sticky bit
Symboly
+ Přidat oprávnění
- Odebrat oprávnění
= Nastavena budou jen tato práva
všechna ostatní budou odebrána
(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
chmod o-r skript.sh
ls -l skript.sh
-rw-r----- 1 bittler it11fa
904 bře 10 21:55 skript.sh
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---- 1 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í:
56
(rwx) číst, zapisovat, spouštět
(r-x) číst, spouštět
(r--) číst
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----- 640
Čí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-- 644
Všichni uživatelé v systému mohou soubor číst, jen vlastník ho smí měnit.
u=rwx,g=rx,o= rwxr-x--- 750
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
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í
jméno
Domovský
adresář
Primární
skupina
Sekundární
skupina
brunnefl
summerma
Heslo
tajné
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
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
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
2.2.3
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
příkaz1
ls -l test.txt
-rw-r--r-- 1 bittler it11fa
příkaz2
ls -l test.txt
-rw------- 1 bittler it11fa
208 bře 10 21:55 test.txt
208 bře 10 21:55 test.txt
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
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
LEKCE II – SPRÁVA UŽIVATELŮ A OPRÁVNĚNÍ
62
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
3.2
3.3
3.4
Úvod do programování skriptů . . . . . . .
3.1.1 První skript . . . . . . . . . . . . . . .
3.1.2 Spuštění skriptu . . . . . . . . . . . . .
3.1.3 Proměnné . . . . . . . . . . . . . . . .
3.1.4 Parametry . . . . . . . . . . . . . . . .
Vytváření skupin . . . . . . . . . . . . . . .
3.2.1 Načítání souboru po řádcích . . . . . .
3.2.2 Cykly . . . . . . . . . . . . . . . . . . .
3.2.3 Podmínky . . . . . . . . . . . . . . . .
3.2.4 Vícenásobný výběr . . . . . . . . . . .
3.2.5 Záměna znaků . . . . . . . . . . . . . .
3.2.6 Zjištění dostupných skupin . . . . . . .
Vytváření uživatelů . . . . . . . . . . . . . .
3.3.1 Vygenerování uživatelských jmen . . .
3.3.2 Generování hesel . . . . . . . . . . . .
3.3.3 Vytvoření uživatelských účtů žákům . .
3.3.4 Vytvoření uživatelských účtů učitelům
3.3.5 Vytvoření superuživatele . . . . . . . .
Otázky . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
64
64
64
64
65
69
69
69
72
72
73
74
74
75
75
76
77
77
79
63
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.
3.1.1
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.
3.1.2
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 2.2.1 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.
3.1.3
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 http://en.wikipedia.org/wiki/Shebang_(Unix)
64
Pozn. překl.
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.
3.1.4
Parametry
Skriptu můžete – podobně jako každému příkazu – předávat parametry (viz kapitola 1.4.2 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
1
2
3
4
:
:
:
:
:
bspshowparam
param1
param2
param3
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
LEKCE III – SKRIPTY USNADŇUJÍ PRÁCI
#!/bin/bash
a=7
b=5
let x=a+b
echo 'a+b :'
let x=a-b
echo 'a-b :'
let x=a/b
echo 'a/b :'
let x=a*b
echo 'a*b :'
$x
$x
a+b
a-b
a/b
a*b
:
:
:
:
12
2
1
35
a+b
a-b
a/b
a*b
:
:
:
:
12
2
1
35
$x
$x
Místo let lze používat také $((...)).
#!/bin/bash
a=7
b=5
x=$(($a+$b))
echo 'a+b :'
x=$(($a-$b))
echo 'a-b :'
x=$(($a/$b))
echo 'a/b :'
x=$(($a*$b))
echo 'a*b :'
$x
$x
$x
$x
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
a-b
a/b
a*b
:
:
:
:
12
2
1
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
14.66666666666666666666
14.66
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
66
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.
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
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
(viz obrázek 3.2 na předchozí straně).
sort
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 3.1.4 a spusťte ho:
bspshowparam "A B C D"
bspshowparam A 'D C' D
bspshowparam 1 2 3 4 5 6 7 8 9 0 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:
2697 - 487
2697 * 487
2697 / 87
2697 + 3954
5. Spočítejte pomocí bc následující úkoly s pěti desetinnými místy:
2.48 + 1.86
56.92 / 4.7
6. 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
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)
3.2.1
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
3.2.2
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 1 2 3 4 5; do
echo -n "$i "
done
1 2 3 4 5
Lze ale také použít libovolné textové řetězce.
69
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 {1..10..2}; do
echo -n "$i "
done
1 3 5 7 9
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
1 2 3 4 5
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á
příkaz || příkaz2
Pomocí || je hodnota vyhodnocena a pokud se nerovná nule, je
nule, je spuštěn program příkaz1.
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
S odpovídající podmínkou můžete cyklus while použít jako iterační cyklus.
70
3.2. VYTVÁŘENÍ SKUPIN
#!/bin/bash
x=1
while [ $x -le 5 ] ; do
echo -n "$x "
x=$(( $x + 1 ))
done
1 2 3 4 5
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
Tabulka 3.1: Výběr podmínkových výrazů
Výraz
Příklad
Popis
Čísla
-eq
-ne
-lt
-le
-gt
-ge
$b
$b
$b
$b
$b
$b
]
]
]
]
]
]
Testuje, zda jsou si hodnoty proměnných rovny.
Testuje, zda jsou hodnoty proměnných různé.
Testuje, zda je hodnota první proměnné menší než druhé.
Testuje, zda je hodnota první proměnné menší nebo rovna druhé.
Testuje, zda je hodnota první proměnné větší než druhé.
Testuje, zda je hodnota první proměnné větší nebo rovna druhé.
[
[
[
[
[
[
$a
$a
$a
$a
$a
$a
-eq
-ne
-lt
-le
-gt
-ge
[
[
[
[
-z
-n
$x
$x
$z ]
$z ]
= $z ]
!= $z ]
Testuje, zda je textový řetězec prázdný.
Testuje, zda není textový řetězec prázdný.
Testuje, zda jsou si textové řetězce rovny.
Testuje, zda jsou textové řetězce různé.
[
[
[
[
[
[
[
[
-d
-e
-f
-r
-s
-w
$g
$g
$f ]
$f ]
$f ]
$f ]
$f ]
$f ]
-nt $f ]
-ot $f ]
Testuje, zda jde o adresář.
Testuje, zda soubor/adresář existuje.
Testuje, zda jde o normální soubor.
Testuje, zda je soubor čitelný, resp. zda k tomu má uživatel práva.
Testuje, zda je soubor neprázdný.
Testuje, zda lze do souboru zapisovat, resp. zda k tomu má uživatel práva.
Testuje, zda je první soubor novější než druhý.
Testuje, zda je první soubor starší než druhý.
Textové řetězce
-z
-n
=
!=
Soubory
-d
-e
-f
-r
-s
-w
-nt
-ot
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 100.
4. Počítejte cyklem od 100 do 10, použijte v těle cyklu test a číslo vypište jen tehdy, je-li menší než 50.
71
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.
3.2.3
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
3.2.4
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
;;
Hugo)
echo
;;
Uschi)
echo
;;
*)
echo
;;
esac
72
Peter ...
Hugo ...
Uschi ...
Nenalezeno ...
Hugo ...
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
;;
Hugo)
echo
;;
Uschi)
echo
;;
*)
echo
;;
esac
Peter ...
Hugo ...
Uschi ...
Nenalezeno ...
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!
3.2.5
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 4.4.6 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'
123455
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
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.
3.2.6
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
3.3. VYTVÁŘENÍ UŽIVATELŮ
3.3.1
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í.
3.3.2
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
LEKCE III – SKRIPTY USNADŇUJÍ PRÁCI
3.3.3
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ů
obsahuje následující nové záznamy.
/etc/passwd
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
drwxr-xr-x
drwxr-xr-x
76
2 manfred.rolf
manfred.rolf
4096 2012-04-06 11:02 manfred.rolf/
2 pyka.johannes
pyka.johannes
4096 2012-04-06 11:02 pyka.johannes/
2 wanzinger.guido wanzinger.guido 4096 2012-04-06 11:02 wanzinger.guido/
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.
3.3.4
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.
3.3.5
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
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
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
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
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
4.2
4.3
4.4
4.5
4.6
4.7
4.8
Externí média . . . . . . . . . . . . . . . . . . . . . .
4.1.1 Hlášení a logy . . . . . . . . . . . . . . . . . . .
4.1.2 Zobrazení připojených zařízení USB . . . . . . .
4.1.3 Kopírování fotek . . . . . . . . . . . . . . . . . .
Testování, připojování a formátování médií . . . . .
4.2.1 Souborové systémy . . . . . . . . . . . . . . . .
4.2.2 Připojování a odpojování souborových systémů
4.2.3 Kontrola integrity souborových systémů . . . .
4.2.4 Formátování souborových systémů . . . . . . .
Využití informací o fotce . . . . . . . . . . . . . . . .
Filtrování textových souborů . . . . . . . . . . . . .
4.4.1 Zobrazení obsahu textových souborů . . . . . .
4.4.2 Řazení obsahu textových souborů . . . . . . . .
4.4.3 Vybrat řádky z textových souborů . . . . . . . .
4.4.4 Rozčlenění textových souborů do sloupců a polí
4.4.5 Počet řádků a slov v textovém souboru . . . . .
4.4.6 Záměna znaků . . . . . . . . . . . . . . . . . .
Kopírování souborů s obrázky . . . . . . . . . . . .
4.5.1 Získání data a času . . . . . . . . . . . . . . . .
4.5.2 Formátování data a času . . . . . . . . . . . . .
4.5.3 Obrázky se stejným datem . . . . . . . . . . . .
4.5.4 Automatické otočení obrázků . . . . . . . . . . .
Vytvoření náhledů . . . . . . . . . . . . . . . . . . .
Hrátky s obrázky . . . . . . . . . . . . . . . . . . . .
4.7.1 Orámování obrázků . . . . . . . . . . . . . . . .
4.7.2 Ořezávání obrázků . . . . . . . . . . . . . . . .
Otázky . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
82
82
84
85
89
89
89
91
91
92
94
94
95
95
97
97
97
100
100
101
101
102
102
103
103
104
106
81
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 udev1 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é.
4.1.1
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
4.1. EXTERNÍ MÉDIA
[
[
[
0.000000] Initializing cgroup subsys cpuset
0.000000] Initializing cgroup subsys cpu
0.000000] Linux version 3.0.0-17-generic (buildd@yellow) (gcc version 4.6.1 (Ubuntu/Linaro 4.6.1-9ubuntu3) )
#30-Ubuntu SMP Thu Mar 8 20:45:39 UTC 2012 (Ubuntu 3.0.0-17.30-generic 3.0.22)
Jádro (kernel)
[
0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-3.0.0-17-generic root=UUID=1ac132a9-6bb5-40eb-92cb-a02ea616d320
ro quiet splash vt.handoff=7
Parametry jádra
[
0.000000] BIOS-provided physical RAM map:
[
0.000000] BIOS-e820: 0000000000000000 - 000000000009f800 (usable)
[
0.000000] BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved)
[
0.000000] BIOS-e820: 00000000000e8000 - 0000000000100000 (reserved)
[
0.000000] BIOS-e820: 0000000000100000 - 00000000dfba1640 (usable)
[
0.000000] BIOS-e820: 00000000dfba3640 - 00000000dfba36a0 (ACPI NVS)
[
0.000000] BIOS-e820: 00000000dfba36a0 - 00000000e0000000 (reserved)
[
0.000000] BIOS-e820: 00000000f4000000 - 00000000f8000000 (reserved)
[
0.000000] BIOS-e820: 00000000fec00000 - 00000000fed40000 (reserved)
[
0.000000] BIOS-e820: 00000000fed45000 - 0000000100000000 (reserved)
[
0.000000] BIOS-e820: 0000000100000000 - 000000041c000000 (usable)
Paměť nalezená BIOSem
[
0.000000] DMI: Hewlett-Packard HP Compaq 8000 Elite CMT PC/3647h, BIOS 786G7 v01.02 10/22/2009
Název počítače
[
0.069731] CPU0: Intel(R) Core(TM)2 Quad CPU
Q8400 @ 2.66GHz stepping 0a
CPU
[
0.344038] Brought up 4 CPUs
[
0.344041] Total of 4 processors activated (21278.92 BogoMIPS).
Čtyři jádra aktivována
[
1.314277] e1000e: Intel(R) PRO/1000 Network Driver - 1.3.10-k2
Nalezena síťová karta
[
1.832145] ata5.00: ATA-8: WDC WD20EARX-00PASB0, 51.0AB51, max UDMA/133
SATA pevný disk
[
1.847780] ata3.00: ATA-8: Corsair Force 3 SSD, 1.3.2, max UDMA/133
SATA SSD
[
1.873311] scsi 2:0:0:0: Direct-Access
ATA
Corsair Force 3 1.3. PQ: 0 ANSI: 5
[
1.873503] sd 2:0:0:0: Attached scsi generic sg0 type 0
[
1.873533] sd 2:0:0:0: [sda] 234441648 512-byte logical blocks: (120 GB/111 GiB)
[
1.873593] sd 2:0:0:0: [sda] Write Protect is off
[
1.873595] sd 2:0:0:0: [sda] Mode Sense: 00 3a 00 00
[
1.873615] sd 2:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[
1.874071] sda: sda1 sda2
Připojení SSD»
[
1.876863] scsi 3:0:0:0: CD-ROM
hp
DVD-RAM GH60L
RD01 PQ: 0 ANSI: 5
[
1.885228] sr0: scsi3-mmc drive: 40x/40x writer dvd-ram cd/rw xa/form2 cdda tray
[
1.885232] cdrom: Uniform CD-ROM driver Revision: 3.20
[
1.885325] sr 3:0:0:0: Attached scsi CD-ROM sr0
Připojení DVD
[
1.885514] scsi 4:0:0:0: Direct-Access
ATA
WDC WD20EARX-00P 51.0 PQ: 0 ANSI: 5
[
1.885633] sd 4:0:0:0: [sdb] 3907029168 512-byte logical blocks: (2.00 TB/1.81 TiB)
[
1.885635] sd 4:0:0:0: [sdb] 4096-byte physical blocks
Připojení pevného disku 1
[
1.885756] scsi 5:0:0:0: Direct-Access
ATA
WDC WD20EARX-00P 51.0 PQ: 0 ANSI: 5
[
1.885859] sd 5:0:0:0: [sdc] 3907029168 512-byte logical blocks: (2.00 TB/1.81 TiB)
[
1.885862] sd 5:0:0:0: [sdc] 4096-byte physical blocks
Připojení pevného disku 2
[
2.041003] md/raid0:md0: looking at sdc1
[
2.041005] md/raid0:md0:
comparing sdc1(3907021824) with sdc1(3907021824)
[
2.041011] md/raid0:md0: looking at sdb1
[
2.041013] md/raid0:md0:
comparing sdb1(3907021824) with sdc1(3907021824)
RAID 0 pro dva pevné disky
[
9.585517] nvidia 0000:01:00.0: PCI INT A~-> GSI 16 (level, low) -> IRQ 16
[
9.585525] nvidia 0000:01:00.0: setting latency timer to 64
[
9.585529] vgaarb: device changed decodes: PCI:0000:01:00.0,olddecodes=io+mem,decodes=none:owns=io+mem
[
9.585671] NVRM: loading NVIDIA UNIX x86_64 Kernel Module 280.13 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
2
3
4
5
tail -f /var/log/syslog
Apr 19 17:48:47 video kernel: [28621.335465] usb 2-1.7: new high speed USB device number 6 using ehci_hcd
Apr 19 17:48:47 video kernel: [28621.429996] scsi7 : usb-storage 2-1.7:1.0
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"
Apr 19 17:48:47 video mtp-probe: bus: 2, device: 6 was not an MTP device
83
LEKCE IV – ZPRACOVÁNÍ FOTOGRAFIÍ Z DATOVÉHO NOSIČE
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Apr
Apr
Apr
Apr
Apr
Apr
Apr
Apr
Apr
Apr
Apr
Apr
Apr
Apr
Apr
Apr
Apr
19 17:48:48 video kernel: [28622.425091] scsi 7:0:0:0: Direct-Access
JetFlash Transcend 16GB
8.07 PQ: 0 ANSI: 2
19 17:48:48 video kernel: [28622.727099] sd 7:0:0:0: Attached scsi generic sg3 type 0
19 17:48:48 video kernel: [28622.728375] sd 7:0:0:0: [sdc] 31375360 512-byte logical blocks: (16.0 GB/14.9 GiB)
19 17:48:48 video kernel: [28622.729368] sd 7:0:0:0: [sdc] Write Protect is off
19 17:48:48 video kernel: [28622.729373] sd 7:0:0:0: [sdc] Mode Sense: 03 00 00 00
19 17:48:48 video kernel: [28622.729943] sd 7:0:0:0: [sdc] No Caching mode page present
19 17:48:48 video kernel: [28622.729948] sd 7:0:0:0: [sdc] Assuming drive cache: write through
19 17:48:48 video kernel: [28622.732557] sd 7:0:0:0: [sdc] No Caching mode page present
19 17:48:48 video kernel: [28622.732562] sd 7:0:0:0: [sdc] Assuming drive cache: write through
19 17:48:48 video kernel: [28622.882479] sdc: sdc1
19 17:48:48 video kernel: [28622.884530] sd 7:0:0:0: [sdc] No Caching mode page present
19 17:48:48 video kernel: [28622.884536] sd 7:0:0:0: [sdc] Assuming drive cache: write through
19 17:48:48 video kernel: [28622.884540] sd 7:0:0:0: [sdc] Attached SCSI removable disk
19 17:48:49 video ntfs-3g[7390]: Version 2011.4.12AR.4 external FUSE 28
19 17:48:49 video ntfs-3g[7390]: Mounted /dev/sdc1 (Read-Write, label "usb_stick", NTFS 3.0)
19 17:48:49 video ntfs-3g[7390]: Cmdline options: rw,nosuid,nodev,uhelper=udisks,uid=1000,gid=1000,dmask=0077,fmask=0177
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
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
Jedná se o úložné zařízení (usb-storage).
Řádek: 6
Název zařízení USB je JetFlash Transcend 16GB“.
”
USB disk má velikost bloku 512 bajtů a kapacitu zhruba 14,9 GiB dat.
Řádek: 8
Řá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: [31324.637429] usb 2-1.7: reset high speed USB device number 7 ←using ehci_hcd
Apr 19 18:33:59 video kernel: [31324.745228] 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í.
4.1.2
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
Bus 002
Bus 003
Bus 004
Bus 005
Bus 006
Bus 007
Bus 008
Bus 009
Bus 010
84
Device
Device
Device
Device
Device
Device
Device
Device
Device
Device
001:
001:
001:
001:
001:
001:
001:
001:
001:
001:
ID
ID
ID
ID
ID
ID
ID
ID
ID
ID
1d6b:0002
1d6b:0002
1d6b:0002
1d6b:0002
1d6b:0002
1d6b:0002
1d6b:0001
1d6b:0001
1d6b:0001
1d6b:0001
Linux
Linux
Linux
Linux
Linux
Linux
Linux
Linux
Linux
Linux
Foundation
Foundation
Foundation
Foundation
Foundation
Foundation
Foundation
Foundation
Foundation
Foundation
2.0
2.0
2.0
2.0
2.0
2.0
1.1
1.1
1.1
1.1
root
root
root
root
root
root
root
root
root
root
hub
hub
hub
hub
hub
hub
hub
hub
hub
hub
4.1. EXTERNÍ MÉDIA
Bus
Bus
Bus
Bus
Bus
Bus
Bus
Bus
Bus
001
002
002
002
002
003
004
002
002
Device
Device
Device
Device
Device
Device
Device
Device
Device
002:
002:
003:
004:
005:
003:
003:
006:
007:
ID
ID
ID
ID
ID
ID
ID
ID
ID
8087:0024
8087:0024
05e3:0608
04f3:0234
04d9:1603
9022:d660
9022:d660
0bb4:0ff9
058f:6387
Intel Corp. Integrated Rate Matching Hub
Intel Corp. Integrated Rate Matching Hub
Genesys Logic, Inc. USB-2.0 4-Port HUB
Elan Microelectronics Corp.
Holtek Semiconductor, Inc. Keyboard
TeVii Technology Ltd. DVB-S2 S660
TeVii Technology Ltd. DVB-S2 S660
High Tech Computer Corp. Desire / Desire HD / Hero (Charge Mode)
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.
4.1.3
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
Apr
Apr
Apr
Apr
Apr
Apr
Apr
Apr
...
Apr
...
Apr
...
19
19
19
19
19
19
19
19
19
19:02:46
19:02:54
19:02:54
19:02:54
19:02:54
19:02:55
19:02:55
19:02:55
19:02:55
video
video
video
video
video
video
video
video
video
kernel: [33046.017118] usb 2-1.7: USB disconnect, device number 9
kernel: [33053.615512] usb 2-1.7: new high speed USB device number 10 using ehci_hcd
kernel: [33053.710967] scsi11 : usb-storage 2-1.7:1.0
mtp-probe: checking bus 2, device 10: "/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.7"
mtp-probe: bus: 2, device: 10 was not an MTP device
kernel: [33054.897268] scsi 11:0:0:0: Direct-Access Generic
CF 1.6E PQ: 0 ANSI: 0 CCS
kernel: [33054.898729] scsi 11:0:0:1: Direct-Access Generic
MS 1.6E PQ: 0 ANSI: 0 CCS
kernel: [33054.900084] scsi 11:0:0:2: Direct-Access Generic
MMC/SD 1.6E PQ: 0 ANSI: 0 CCS
kernel: [33054.901422] scsi 11:0:0:3: Direct-Access Generic
SM 1.6E PQ: 0 ANSI: 0 CCS
19 19:02:55 video kernel: [33054.939668] sd 11:0:0:0: [sdc] 2000880 512-byte logical blocks: (1.02 GB/976 MiB)
19 19:02:55 video kernel: [33054.961111]
sdc: sdc1
Karta byla automaticky připojena jako /media/CANON_DC/.5
ls -la /media/CANON_DC/
drwx------ 5 mgn mgn 16384 2011-09-20 10:36 DCIM
4 Viz
např. http://usb-ids.gowdy.us/read/UD/058f/6387
byla použita karta Canon PowerShot.
5 Konkrétně
85
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 3085238 2011-11-08
-rw-r--r-- 1 mgn mgn 2169427 2011-11-08
-rw-r--r-- 1 mgn mgn 4399074 2011-12-05
-rw-r--r-- 1 mgn mgn 2448077 2011-12-05
-rw-r--r-- 1 mgn mgn 2673685 2011-12-05
-rw-r--r-- 1 mgn mgn 2880926 2011-12-05
-rw-r--r-- 1 mgn mgn 2960835 2011-12-05
-rw-r--r-- 1 mgn mgn 3283803 2011-12-05
-rw-r--r-- 1 mgn mgn 2614610 2011-12-05
ls -la /media/CANON_DC/DCIM/187CANON/
-rw-r--r-- 1 mgn mgn 2800427 2011-12-05
-rw-r--r-- 1 mgn mgn 2995669 2011-12-05
...
12:30
12:30
14:52
15:13
15:25
15:44
16:12
16:12
16:25
IMG_8691.JPG
IMG_8692.JPG
IMG_8693.JPG
IMG_8694.JPG
IMG_8695.JPG
IMG_8697.JPG
IMG_8698.JPG
IMG_8699.JPG
IMG_8700.JPG
16:27 IMG_8701.JPG
16: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>
Výraz, podle něhož budou identifikovány soubory.
-print
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ě {}.
Nyní můžete soubory kopírovat.
86
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ř. 1000 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
2097152
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
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
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
...
2. 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ý.
4.2.1
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.
4.2.2
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
FAT12
FAT16
FAT32
VFAT
exFAT
NTFS
ext2
ext3
ext4
btrfs
xfs
Linux
Windows
Pro externí média
✔
✔
✔
✔
✘
✔
✔
✔
✔
✔
✔
✔
✔
✔
✔
✔
✔
✘(✔)
✘
✘
✘
✘
✔
✔
✔
✔
✔
✔
✘
✘
✘
✘
✘
Popis
pro diskety MS-DOS
pro malé disky včetně USB disků do 2 GiB
pro pevné disky a větší USB disky do 2 TiB
rozšíření FAT systému o delší jména souborů
pro flash média do 63 ZiB
pro pevné disky a větší USB disky do 256 TiB (ž.)
pro pevné disky do 16 TiB
pro pevné disky do 32 TiB (žurnálovací)
pro pevné disky do 1 EiB (žurnálovací)
pro pevné disky do 16 EiB (žurnálovací)
pro pevné disky do 8 EiB (žurnálovací)
Tabulka 4.1: Přehled některých souborových systémů
89
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=5242880)
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, 500 106 780 160 bajtů
hlav: 255, sektorů na stopu: 63, cylindrů: 60 801, celkem 976 771 055 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
/dev/sda1
*
63
/dev/sda2
39070080
/dev/sda3
58605120
/dev/sda4
41110335
Konec
39070079
41110334
976768064
58604475
Bloky
19535008+
1020127+
459081472+
8747070+
Id
83
82
83
83
Systém
Linux
Linux swap/Solaris
Linux
Linux
Disk /dev/sdc: 16,2 GB, 16 240 345 088 bajtů
hlav: 114, sektorů na stopu: 40, cylindrů: 6 956, celkem 31 719 424 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
/dev/sdc1
*
Začátek
40
Konec
31719423
Bloky
15859692
Id Systém
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ě 29.
90
4.2. TESTOVÁNÍ, PŘIPOJOVÁNÍ A FORMÁTOVÁNÍ MÉDIÍ
4.2.3
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 2.19.1
dosfsck 3.0.9, 31 Jan 2010, FAT32, LFN
/dev/sdc1: 50 files, 2479/253448 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é).
4.2.4
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
mkfs.vfat, mkfs.ntfs, mkfs.ext3, mkfs.ext4, …
systému, podle kterého se spustí odpovídající program, např.
Příkaz pro naformátování USB disku tedy zní:
sudo mkfs -t vfat /dev/sdc1
mkfs.vfat 3.0.9 (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 3.0.9 (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
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
|34210 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
92
příkaz neexistuje, nainstalujte si balík exif.
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
|2.2.0.0
Interoperability Ind|R98
Interoperability Ver|0100
--------------------+---------------------------------------------------------EXIF data contains a thumbnail (8729 bytes).
exif IMG2014-05-08.jpg
EXIF tags in 'IMG2014-05-08.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|0100
--------------------+---------------------------------------------------------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
Datum a čas
|2012:04:19 16:30:01
|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
8 Více
lze tedy dosáhnout jen tehdy, je-li u všech přístrojů správně nastaveno datum a čas!
informací najdete na http://www.jojosoftware.de/jojothumb/anleitung/jjt_doc802.htm.
93
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.
4.4.1
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 1000×1000… (T, P, E, Z, Y)
-n <x>
Zobrazit prvních/posledních x řádků.
Příklady
head -n 5 zaci.txt | nl
1
2
3
4
5
Pyka:Johannes:IT11FS
Gerber:Dennis:IT11FS
Ewender:Nils:IT11FS
Feiler:Matthias:IT11FS
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ů!
nl zaci.txt | head -n 15 | tail -n 6
10
11
12
13
14
15
Liepold:Michael:IT11FS
Aurich:Karl:IT11FS
Meyer:Frank:IT11FS
Jakob:Jens:IT11FS
Bischoff:Christian:IT11FS
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
4.4. FILTROVÁNÍ TEXTOVÝCH SOUBORŮ
4.4.2
Ř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.
4.4.3
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
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}
Interval opakování, znak před závorkou n až mkrát.
{n}
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
4.4. FILTROVÁNÍ TEXTOVÝCH SOUBORŮ
4.4.4
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
4.4.5
/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ů
4.4.6
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
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 100.
10. 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
4.4. FILTROVÁNÍ TEXTOVÝCH SOUBORŮ
11. Caesarova šifra9
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 www.gutenberg.org/files/345/345.txt text knihy o Draculovi od Brama Stokera11
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 http://cs.wikipedia.org/wiki/Caesarova_šifra
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.
http://cs.wikipedia.org/wiki/Pangram
11 Podle Linux Journal č. 180, duben 2009, http://www.linuxjournal.com/article/10384
99
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.
4.5.1
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
2012/04/02
2011:12:05
2011:04:20
15:52:51
18:03:29
16:44:10
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
4.5. KOPÍROVÁNÍ SOUBORŮ S OBRÁZKY
4.5.2
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
4.5.3
2011_12_05_15_52_51
2012_04_02_18_03_29
2011_12_05_16_44_10
2011_04_20_10_50_51
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č parame12 Předpokladem
je správné nastavení času u fotoaparátu.
101
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í.
4.5.4
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
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ů.13
4.7.1
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 15x15+5+5 ←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
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 20x20+3+4 \) \
-compose VividLight -composite ka_s08.png
4.7.2
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
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
-bordercolor
-bordercolor
-background
-background
-background
-thumbnail 200 \
white -border 6 \
grey60 -border 1 \
none
-rotate 6 \
black \( +clone -shadow 60x4+4+4 \) +swap \
none
-flatten ka_b07.png
• Polaroid 2,
convert kastanie.jpg -thumbnail 200 \
-bordercolor snow -background black +polaroid ka_b08.png
• rámečky14 …
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
\( fancy_add.png -flip
\) -gravity SouthWest
\( fancy_add.png
-flop \) -gravity NorthEast
\( fancy_add.png -flip -flop \) -gravity SouthEast
-compose DstOut \
\( fancy_sub.png
\) -gravity NorthWest
\( fancy_sub.png -flip
\) -gravity SouthWest
\( fancy_sub.png
-flop \) -gravity NorthEast
\( fancy_sub.png -flip -flop \) -gravity SouthEast
ka_b11.png
-composite
-composite
-composite
-composite
\
\
\
\
-composite
-composite
-composite
-composite
\
\
\
\
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
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
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 7–12. 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 2014-06-03_18:45“ do proměnné aktDate?
”
107
LEKCE IV – ZPRACOVÁNÍ FOTOGRAFIÍ Z DATOVÉHO NOSIČE
108
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
5.2
5.3
5.4
5.5
5.6
5.7
Internet a rodina protokolů TCP/IP . . . .
IPv4 . . . . . . . . . . . . . . . . . . . . . . .
IPv6 . . . . . . . . . . . . . . . . . . . . . . .
IP adresy a názvy počítačů pomocí DNS . .
Ruční nastavení sítě . . . . . . . . . . . . .
Automatické nastavení sítě pomocí DHCP
Otázky . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
110
111
112
113
114
117
120
109
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
110
File Transfer Protocol
Umožňuje rychlý přenos dat mezi klientem a serverem.
5.2. IPV4
SMTP Simple Mail Transfer Protocol
Výměna elektronické pošty mezi dvěma systémy.
SSH
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é.
NFS
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: 255.0.0.0 odpovídá /8, 255.255.0.0 odpovídá /16, 255.255.255.128 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
LEKCE V – PRÁCE V SÍTI
Třída
Rozsah IP adres od – do
A
0.0.0.0 – 127.255.255.255
B
Standardní maska podsítě
Decimálně
Notace CIDR
255.0.0.0
/8
128.0.0.0 – 191.255.255.255
255.255.0.0
/16
C
192.0.0.0 – 223.255.255.255
255.255.255.0
/24
D
224.0.0.0 – 239.255.255.255
Oblast Multicast
E
240.0.0.0 – 255.255.255.255
Rezervováno
Tabulka 5.1: Adresní třídy IPv4
Třída
Rozsah IP adres od – do
A
Notace CIDR
10.0.0.0 – 10.255.255.255
172.16.0.0 – 172.31.255.255
B
C
Poznámka
10.0.0.0/8
A sítě
172.16.0.0/12
16 B sítě
169.254.0.0 – 169.254.255.255
169.254.0.0/16
B síť pro Automatic Private IP Addressing (APIPA)
192.168.0.0 – 192.168.255.255
192.168.0.0/16
256 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 127.0.0.1. 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 2128 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
Konkrétní příjemce.
Anycast
Libovolný příjemce ze skupiny.
112
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:
www.bsinfo.musin.de.
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ů.
www.liberix.cz.
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:
http://www.bsinfo.musin.de/downloads/Blockplan1112.pdf
ftp://ftp.debian.org/debian/README.html
http://192.168.9.184/files/VMs/Linux-vm.rar
113
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.
http://[2001:0db8:85a3:08d3:1319:8a2e:0370:7344]/
http://[2001:0db8:85a3:08d3:1319:8a2e:0370:7344]:8080/
5.5
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:192.168.50.1 Všesměr:192.168.50.255 Maska:255.255.255.0
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
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:127.0.0.1 Maska:255.0.0.0
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
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)
Metrika:1
V tomto příkladu se nacházejí tři síťová rozhraní:
• Síťová ethernetová karta jako zařízení eth0 s IPv4 adresou 192.168.50.1
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
127.0.0.1 (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 eth0 192.168.1.1 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 eth0 192.168.2.131 netmask 255.255.255.240 broadcast 192.168.2.143 up
Zadání ve formátu CIDR je také možné:
ifconfig eth0 192.168.2.131/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 192.168.50.254
PING 192.168.50.254 (192.168.50.254) 56(84) bytes of data.
64 bytes from 192.168.50.254: icmp_seq=1 ttl=64 time=0.574 ms
64 bytes from 192.168.50.254: icmp_seq=2 ttl=64 time=0.053 ms
64 bytes from 192.168.50.254: icmp_seq=3 ttl=64 time=0.051 ms
^C
--- 192.168.50.254 ping statistics --3 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 192.168.50.254
115
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
default
192.168.50.254 0.0.0.0
link-local
*
255.255.0.0
192.168.50.0
*
255.255.255.0
Přízn
UG
U
U
Metrik
0
1000
1
Odkaz
0
0
0
Užt Rozhraní
0
eth0
0
eth0
0
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 8.8.8.8
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 192.168.50.254
Funkčnost překladu jmen ověříte příkazem nslookup (ten je ovšem už zastaralý) nebo dig:
dig musin.muenchen.de
; <<>> DiG 9.7.3 <<>> musin.muenchen.de
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12028
;; 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 62.157.140.133
musin.muenchen.de. 5 IN A 80.156.86.78
;;
;;
;;
;;
Query time: 4 msec
SERVER: 192.168.50.254#53(192.168.50.254)
WHEN: Mon Apr 16 18:27:54 2012
MSG SIZE rcvd: 67
nslookup musin.muenchen.de
Server:
192.168.50.254
Address: 192.168.50.254#53
Non-authoritative answer:
Name: musin.muenchen.de
Address: 62.157.140.133
Name: musin.muenchen.de
Address: 80.156.86.78
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ř. 194.25.2.132) 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
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
Konfigurační soubory v adresáři /etc/sysconfig/network/
pro eth0 např. ifcfg-eth0.
Red Hat
Konfigurační soubory v adresáři /etc/sysconfig/networkscripts/
pro eth0 např. ifcfg-eth0.
5.6
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
8.8.8.8., ž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
address
netmask
gateway
inet static
192.168.1.xxx # Adresa IPv4
255.255.255.0 # Maska sítě
192.168.1.xxx # Výchozí brána
Restartujte počítač a otestujte, zda je nastavený tak, jak jste chtěli.
117
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
0
0
0.0.0.0:80
0.0.0.0:*
LISTEN
3939/lighttpd
Výpis znamená, že program lighttpd jako proces číslo 3939 naslouchá na všech rozhraních (0.0.0.0) 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 http://IP_adresa_serveru/~uživatelské_jméno/. 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 http://www.root.cz/clanky/lighttpd-lehky-webserver/, https://
wiki.archlinux.org/index.php/Lighttpd_(Česky) nebo http://www.linuxexpres.cz/praxe/spravalinuxoveho-serveru-lighttpd-a-php-pres-fastcgi.
Ú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 [email protected]
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
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 [email protected]:~/.ssh/id_rsa.client
5. Přihlaste se z klienta ještě jednou jako user1 na server SSH:
ssh [email protected]
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
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 192.168.1.1.
9. Napište IPv4 a IPv6 adresy loopback rozhraní.
10. Napište zkrácenou verzi IPv6 adresy 2001:0db8:0000:0815:4711:0000:0028:03f1.
11. 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
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
LEKCE V – PRÁCE V SÍTI
122
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
6.2
Komprimace dat . . . . . . . . . . .
6.1.1 gzip . . . . . . . . . . . . . . .
6.1.2 bzip2 . . . . . . . . . . . . . .
6.1.3 zip . . . . . . . . . . . . . . .
6.1.4 tar . . . . . . . . . . . . . . .
6.1.5 Další nástroje pro komprimaci
6.1.6 7-Zip . . . . . . . . . . . . . .
6.1.7 Otázky . . . . . . . . . . . . .
Zálohování dat . . . . . . . . . . .
6.2.1 Typy zálohování . . . . . . . .
6.2.2 Generační princip . . . . . . .
6.2.3 Provedení zálohy . . . . . . .
6.2.4 Obnovení . . . . . . . . . . . .
6.2.5 Otázky . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
124
124
125
125
127
129
129
130
131
131
131
131
133
134
123
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
a uloží do souboru. Komprimují se čistá data, metadata
(v případě souboru např. vlastník, datum vzniku apod.) se
ztrácejí.
Do kontejneru se neukládají jen komprimovaná data, nýbrž ke každému uloženému souboru také odpovídající metadata (např. název souboru, datum, vlastník, přístupová
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:
http://en.wikipedia.org/wiki/Comparison_of_file_archivers
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 1912. 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 http://bitcan.dyndns.org/german/MartinLuther-1912/Martin_
Luther_Uebersetzung_1912.txt.
6.1.1
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
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 souboru1 .
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.*
4364051 Bcomp.txt
*** zabalit *
1384697 Bcomp.txt.gz
*** rozbalit *
4364051 Bcomp.txt
Originální soubor má velikost 4364051 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.*
6.1.2
4364051 Bcomp.txt
1384697 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.*
4364051 Bcomp.txt
998272 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.
6.1.3
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
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) 1990-2008 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%)
4364051 bibel.txt
1384837 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í
126
ale není příliš dobré a na internetu najdete mnoho nástrojů, které se snaží heslo prolomit.
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 (0×10 + 0×13).
”
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
--------- ---------- -------0 2014-08-15 13:45
fotak/
4399074 2014-08-15 13:45
fotak/IMG_8693.JPG
1366648 2014-08-15 13:45
fotak/IMAG0433.jpg
2880926 2014-08-15 13:45
fotak/IMG_8697.JPG
8452365 2014-08-15 13:45
fotak/img_cr2_0546.cr2
681938 2014-08-15 13:45
fotak/img_cr2_0546.jpg
--------------17780951
6 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
6.1.4
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
--------- ---------- -------0 2014-08-15 13:45
fotak/
4399074 2014-08-15 13:45
fotak/IMG_8693.JPG
1366648 2014-08-15 13:45
fotak/IMAG0433.jpg
2880926 2014-08-15 13:45
fotak/IMG_8697.JPG
681938 2014-08-15 13:45
fotak/img_cr2_0546.jpg
--------------9328586
5 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
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
4372480 bibel.tar
4364051 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
1384855 bibel.tar.gz
4364051 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
998590 bibel.tar.bz2
4364051 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 4364051 2012-06-02 15: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 4364051 2012-06-02 15: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ě
128
jako ps podporuje tar zápisy parametrů s -, s -- a také bez -.
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.
6.1.5
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.
6.1.6
7-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
LEKCE VI – ARCHIVACE DAT A JEJICH KOMPRIMACE
7-Zip [64] 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18
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
6.1.7
Creating archive bibel.7z
Compressing
bibel.txt
Everything is Ok
******
4364051 bibel.txt
1041165 bibel.7z
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í:
1. 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.
130
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.
6.2.1
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
Zálohována jsou všechna data, která byla od poslední kompletní zálohy změněna nebo
jsou nová.
přírůstková záloha
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.
6.2.2
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).
6.2.3
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
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)
17169468 /tmp/zaloha_fotak_komplet_ ←2014-08-21_16-02-11.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
17169604 /tmp/zaloha_fotak_inc_ ←2014-08-21_16-01-10.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
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
*** Záloha 1 *
159 /tmp/zaloha_fotak_inc.snar
16138746 /tmp/zaloha_fotak_inc_2014-08-17_11-03-24.tar.bz2
*** Záloha 2 *
170 /tmp/zaloha_fotak_inc.snar
16138746 /tmp/zaloha_fotak_inc_2014-08-17_11-03-24.tar.bz2
998507 /tmp/zaloha_fotak_inc_2014-08-17_11-03-31.tar.bz2
*** Záloha 3 *
180 /tmp/zaloha_fotak_inc.snar
16138746 /tmp/zaloha_fotak_inc_2014-08-17_11-03-24.tar.bz2
998507 /tmp/zaloha_fotak_inc_2014-08-17_11-03-31.tar.bz2
273 /tmp/zaloha_fotak_inc_2014-08-17_11-03-34.tar.bz2
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
# 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 http://wiki.
”
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
17 *
* * *
root
25 6
* * *
root
47 6
* * 7
root
52 6
1 * *
root
command
cd / &&
test -x
test -x
test -x
run-parts --report /etc/cron.hourly
/usr/sbin/anacron || (cd / && run-parts --report /etc/cron.daily)
/usr/sbin/anacron || (cd / && run-parts --report /etc/cron.weekly)
/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.
6.2.4
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_2012-05-20_06-17-30.tar.bz2 -g /tmp/zaloha_fotak_inc.snar
tar xjf /tmp/zaloha_fotak_inc_2012-05-21_06-17-10.tar.bz2 -g /tmp/zaloha_fotak_inc.snar
tar xjf /tmp/zaloha_fotak_inc_2012-05-22_06-17-20.tar.bz2 -g /tmp/zaloha_fotak_inc.snar
133
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.
6.2.5
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
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
7.2
7.3
7.4
Vytváření fotogalerií . . . . . . . . . . . . .
7.1.1 HTML . . . . . . . . . . . . . . . . . .
7.1.2 Zobrazení náhledů . . . . . . . . . . . .
7.1.3 Otázky . . . . . . . . . . . . . . . . . .
Zveřejnění fotogalerie na webovém serveru
Licence . . . . . . . . . . . . . . . . . . . . .
7.3.1 Přehled . . . . . . . . . . . . . . . . . .
7.3.2 Kterou licenci pro vlastní obrázky . . .
7.3.3 Otázky . . . . . . . . . . . . . . . . . .
Firefox jako bezpečný prohlížeč . . . . . .
7.4.1 JavaScript . . . . . . . . . . . . . . . .
7.4.2 Ochrana soukromých informací . . . .
7.4.3 Potlačení reklamy . . . . . . . . . . . .
7.4.4 Zabránit stránkám ve sledování . . . .
7.4.5 Šifrované připojení . . . . . . . . . . .
7.4.6 Ukládání obsahu . . . . . . . . . . . . .
7.4.7 Vyhledávání na internetu . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
136
136
136
143
143
144
144
147
147
147
147
147
148
148
148
149
149
135
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.
7.1.1
HTML
K tématu HTML existuje dostatek materiálů, začněte třeba s kurzem na adrese http://www.jakpsatweb.cz/. Poskytne
vám dostatek informací a odkazů na další zdroje.
Základní tělo HTML dokumentu vypadá následovně:
1
2
3
4
5
6
7
8
9
<!DOCTYPE html PUBLIC "-//W3C//DTD␣HTML␣3.2//EN">
<html>
<head>
<title>HTML stránka</title>
</head>
<body>
<p>Jednoduchá webová stránka</p>
</body>
</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 3.2.1 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 http://www.jakpsatweb.cz/html/rejstrik.html.
7.1.2
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"
<td><img src="A2.png"
<td><img src="A3.png"
<td><img src="A4.png"
</tr>
<tr>
<td><img src="B1.png"
<td><img src="B2.png"
<td><img src="B3.png"
<td><img src="B4.png"
</tr>
</table>
1 Tento
136
width="50"
width="50"
width="50"
width="50"
/></td>
/></td>
/></td>
/></td>
width="50"
width="50"
width="50"
width="50"
/></td>
/></td>
/></td>
/></td>
formát je překonaný, dnes je aktuální verze 5, která je v mnoha ohledech modernější. Pozn. překl.
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_0003.jpg
berlin/berlin_0005.jpg
berlin/berlin_0007.jpg
berlin/berlin_0009.jpg
berlin/berlin_0011.jpg
berlin/berlin_0013.jpg
berlin/berlin_0015.jpg
berlin/berlin_0017.jpg
berlin/berlin_0019.jpg
berlin/berlin_0021.jpg
berlin/berlin_0002.jpg
berlin/berlin_0004.jpg
berlin/berlin_0006.jpg
berlin/berlin_0008.jpg
berlin/berlin_0010.jpg
berlin/berlin_0012.jpg
berlin/berlin_0014.jpg
berlin/berlin_0016.jpg
berlin/berlin_0018.jpg
berlin/berlin_0020.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
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
7.1. VYTVÁŘENÍ FOTOGALERIÍ
berlin/berlin_0001.jpg
berlin/berlin_0005.jpg
berlin/berlin_0009.jpg
berlin/berlin_0013.jpg
berlin/berlin_0017.jpg
berlin/berlin_0021.jpg
berlin/berlin_0002.jpg
berlin/berlin_0006.jpg
berlin/berlin_0010.jpg
berlin/berlin_0014.jpg
berlin/berlin_0018.jpg
berlin/berlin_0022.jpg
berlin/berlin_0003.jpg
berlin/berlin_0007.jpg
berlin/berlin_0011.jpg
berlin/berlin_0015.jpg
berlin/berlin_0019.jpg
berlin/berlin_0004.jpg
berlin/berlin_0008.jpg
berlin/berlin_0012.jpg
berlin/berlin_0016.jpg
berlin/berlin_0020.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><img src="berlin/thumb_berlin_0002.png" width="100"
<td><img src="berlin/thumb_berlin_0003.png" width="100"
<td><img src="berlin/thumb_berlin_0004.png" width="100"
</tr>
<tr>
<td><img src="berlin/thumb_berlin_0005.png" width="100"
<td><img src="berlin/thumb_berlin_0006.png" width="100"
<td><img src="berlin/thumb_berlin_0007.png" width="100"
<td><img src="berlin/thumb_berlin_0008.png" width="100"
</tr>
<tr>
<td><img src="berlin/thumb_berlin_0009.png" width="100"
<td><img src="berlin/thumb_berlin_0010.png" width="100"
<td><img src="berlin/thumb_berlin_0011.png" width="100"
<td><img src="berlin/thumb_berlin_0012.png" width="100"
</tr>
<tr>
<td><img src="berlin/thumb_berlin_0013.png" width="100"
<td><img src="berlin/thumb_berlin_0014.png" width="100"
<td><img src="berlin/thumb_berlin_0015.png" width="100"
<td><img src="berlin/thumb_berlin_0016.png" width="100"
</tr>
<tr>
<td><img src="berlin/thumb_berlin_0017.png" width="100"
<td><img src="berlin/thumb_berlin_0018.png" width="100"
<td><img src="berlin/thumb_berlin_0019.png" width="100"
<td><img src="berlin/thumb_berlin_0020.png" width="100"
</tr>
<tr>
<td><img src="berlin/thumb_berlin_0021.png" width="100"
<td><img src="berlin/thumb_berlin_0022.png" width="100"
</tr>
</table>
</body>
</html>
/></td>
/></td>
/></td>
/></td>
/></td>
/></td>
/></td>
/></td>
/></td>
/></td>
/></td>
/></td>
/></td>
/></td>
/></td>
/></td>
/></td>
/></td>
/></td>
/></td>
/></td>
/></td>
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
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
7.1. VYTVÁŘENÍ FOTOGALERIÍ
</table>
</body>
</html>
EOM
berlin/berlin_0001.jpg
berlin/berlin_0005.jpg
berlin/berlin_0009.jpg
berlin/berlin_0013.jpg
berlin/berlin_0017.jpg
berlin/berlin_0021.jpg
berlin/berlin_0002.jpg
berlin/berlin_0006.jpg
berlin/berlin_0010.jpg
berlin/berlin_0014.jpg
berlin/berlin_0018.jpg
berlin/berlin_0022.jpg
berlin/berlin_0003.jpg
berlin/berlin_0007.jpg
berlin/berlin_0011.jpg
berlin/berlin_0015.jpg
berlin/berlin_0019.jpg
berlin/berlin_0004.jpg
berlin/berlin_0008.jpg
berlin/berlin_0012.jpg
berlin/berlin_0016.jpg
berlin/berlin_0020.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
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
7.2. ZVEŘEJNĚNÍ FOTOGALERIE NA WEBOVÉM SERVERU
7.1.3
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>&nbsp;</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
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.
7.3.1
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:
• http://www.gnu.org/licenses/gpl-3.0.html
• http://jxself.org/translations/gpl-3.cz.shtml3
• http://www.gpl.sk/v3/
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
3V
GPL byla vytvořena Richardem Stallmanem, zakladatelem projektu GNU, v roce 1989.
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
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 http://winfwiki.wi-fom.
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/
7
wiki/Gemeinfreiheit.
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 http://www.ifossf.org.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 http://www.liberix.cz, pozn. překl.
145
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
s komerčním softwarem
Vlastní úpravy musí
být opět svobodné
Může být zveřejněno
pod jinými podmínkami
GPL
LGPL
BSD
Public Domain
ano9
ano
ano
ano
ano
ano
ne
ne
ne
ne
ano10
ano
Další přehledy v angličtině najdete na těchto stránkách:
• http://en.wikipedia.org/wiki/Comparison_of_free_software_licences
• http://www.gnu.org/licenses/gpl-faq
Německá organizace Bundeszentrale für politische Bildung vydala knihu Freie Software Zwischen Privat- und Ge”
meineigentum“ jako PDF s licencí Creative Commons Attribution-ShareAlike 2.0 License: http://freie-software.
bpb.de/Grassmuck.pdf
Český Liberix vydal více materiálů, zejména Software na úřadech a jeho otevřené alternativy“, http://liberix.
”
pozn. překl.
cz/projekty/software-na-uradech-a-jeho-otevrene-alternativy-pdf-ke-stazeni/,
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.
Například:
CC BY
Uvedení jména.
CC BY-SA
Uvedení jména, šíření za stejných podmínek.
CC BY-ND
Uvedení jména, žádné úpravy.
CC BY-NC
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 http://www.creativecommons.org a česky na http://www.creativecommons.cz.
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
7.4. FIREFOX JAKO BEZPEČNÝ PROHLÍŽEČ
7.3.2
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).
7.3.3
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.
7.4.1
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ů.
7.4.2
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
LEKCE VII – VYTVOŘENÍ WEBOVÉ STRÁNKY S OBRÁZKY
Obrázek 7.6: Nastavení JavaScriptu
7.4.3
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í
7.4.4
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í.“
7.4.5
Š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
7.4. FIREFOX JAKO BEZPEČNÝ PROHLÍŽEČ
bezpečnější variantou, kdykoliv bude k dispozici.
7.4.6
Ukládání obsahu
Když stránka nabízí nějaký soubor ke stažení, můžete ho získat kliknutím nebo přes kontextovou nabídku a Uložit odkaz
jako. V případě více souborů na jedné stránce už to ale není zábava, spíše otrava. Doplněk DownThemAll (DTA) prohledá
celou stránku a nabídne vám možnost stáhnout všechny nalezené soubory současně. Můžete si je před stažením filtrovat
– obrázky, dokumenty a podobně (viz obrázek 7.10).
Obrázek 7.10: Filtry doplňku DownThemAll
7.4.7
Vyhledávání na internetu
Pro vyhledávání používá většina lidí Google, Seznam nebo možná ještě Bing.12 S využitím doplňku FoxyWebSearch lze
dotaz odeslat více vyhledávačům současně a výsledek zobrazit. Souhrn na pravém okraji ukazuje, kolik výsledků každý
z vyhledávačů nalezl.
Cvičení:
1. Vyzkoušejte všechny uvedené doplňky.
2. Hledejte v katalogu na adrese https://addons.mozilla.org/cs/firefox/extensions/
privacy-security/ další doplňky týkající se bezpečnosti.
3. Prohledejte ostatní kategorie s doplňky. Pokud se vám některý bude líbit, vyzkoušejte ho.
12 V
německém originále textu byly uvedeny Google, Yahoo a Bing, v ČR je situace jiná. Pozn. překl.
149
LEKCE VII – VYTVOŘENÍ WEBOVÉ STRÁNKY S OBRÁZKY
150
Kapitola 8
Lekce VIII – OSS Gimp & LibreOffice
V této části se zaměříme na používání open-source softwaru. Tato část je volitelná, pokud zbude čas nebo pro domácí
přípravu.
Na některých fotkách můžete někdy najít fleky, občas tam překáží nějaký předmět, který tam nemá co dělat, nebo má
někdo červené oči. Pomocí Gimpu můžete s trochou praxe podobné nedokonalosti odstranit a získat tak výrazně lepší
fotografie.
V předchozím textu jsme si ukázali, jak z třídních fotek vytvořit fotogalerii s náhledy. Další možností, jak lze prezentovat fotky, je vytvoření prezentace v LibreOffice.
Obsah
8.1
8.2
GIMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
LibreOffice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
151
LEKCE VIII – OSS GIMP & LIBREOFFICE
8.1
GIMP
Gimp (GNU Image Manipulation Program) je bezplatný a svobodný bitmapový editor, který je k dispozici s licencí GNU
GPL. Používá se obvykle k úpravě jednotlivých obrázků a fotografií a k aplikování vizuálních efektů a filtrů.
Instalace
GIMP se nachází v běžném zdroji softwaru Ubuntu a lze ho snadno nainstalovat. Jde o verzi 2.8, která podporuje zobrazení
v jednom okně (starší verze pracovaly pouze v režimu více oken).
sudo apt-get install gimp
Obrázek 8.1: GIMP v režimu jednoho okna
Popisovat zde GIMP by bylo nad rámec možností. Existuje množství návodů a článků, které vám ukáží, jak s GIMPem
pracovat, například:
• http://www.gimpusers.de/tutorials
• http://www.gimp-werkstatt.de/tutorien-grundlagen.php
• http://www.linuxexpres.cz/praxe/gimptorialy-jednoduche-navody-pro-gimp1
Cvičení:
Vyzkoušejte si GIMP se svými fotografiemi, pročtěte si některé tutoriály a návody a pokuste se vylepšit své snímky nebo
z nich odstranit případné nedostatky.
8.2
LibreOffice
LibreOffice je svobodný a bezplatný kancelářský balík pro zpracování textů, tabulkové výpočty, prezentace a vektorové
kresby. Obsahuje také modul pro zpracování dat z databází a editor rovnic.
Pro vytváření prezentací slouží LibreOffice Impress, ale popisovat ho zde nebudeme. Pomohou vám některé z následujících článků:
1V
češtině existuje kniha Lubomíra Čevely Digitální fotografie v programu GIMP, vydal Computer Press, 2012. Pozn. překl.
152
8.2. LIBREOFFICE
•
•
•
•
http://www.libreoffice.org/get-help/documentation/
http://help.libreoffice.org/Impress/Instructions_for_Using_Impress/de
http://gofree.com/Tutorials/LibreOfficeImpress1.php
http://www.openoffice.cz/navody/impress2
Cvičení:
Vyzkoušejte si Impress a vytvořte prezentaci ze svých fotek.
2 Nejvíce
českých návodů najdete zřejmě na webu OpenOffice.cz, pozn. překl.
153
LEKCE VIII – OSS GIMP & LIBREOFFICE
154
Kapitola 9
Přehled témat: Linux Essentials
Úvod
Souhrnný popis celého programu LinuxEssentials najdete na adrese http://wiki.lpi.org/wiki/LinuxEssentials
(ve verzi 1.0)1
Cílem programu Linux Essentials je definovat základní dovednosti, které jsou nezbytné pro kompetentní používání
linuxového operačního systému na stolním či přenosném počítači nebo na mobilním zařízení (typu tablet, telefon). Tento
projekt chce pomáhat mladým lidem a také všem, pro které je Linux a open source novinkou. Podporovat je v pochopení
role, kterou Linux a open source představují v širším kontextu odvětví IT.
Popis kandidáta vhodného pro zkoušku (MQC)
Následující popis představuje kandidáta, který ještě splňuje požadavky k absolvování zkoušky LPI Linux Essentials. Takového fiktivního člověka nazýváme Minimally Qualified Candidate (minimálně kvalifikovaný kandidát, MQC). Standardy
zkoušky LPI Linux Essentials musí být nastaveny tak, aby tento člověk – a každý schopnější – zkoušku absolvoval a každý
méně schopný u ní neuspěl.
Úspěšný kandidát by měl rozumět oblasti Linuxu a open source a měl by znát nejběžnější open-source aplikace. Měl
by rozumět základním komponentám linuxového operačního systému a měl by ovládat práci v příkazové řádce. Dále by
měl disponovat základními znalostmi z oblasti bezpečnosti a správy systému, stejně jako správy uživatelů, skupin, práce
v příkazové řádce a uživatelských oprávnění. Držitel certifikátu Linux Essentials je s nejvyšší pravděpodobností koncový
uživatel komplexně spravovaného systému.
Minimálně kvalifikovaný kandidát vhodný pro zkoušku Linux Essentials:
• Má základní povědomí o svobodném a open-source softwaru (FOSS), o různých komunitách
a softwarových licencích.
• Rozumí principům procesů, programů a základním komponentám operačního systému.
• Má základní přehled o počítačovém hardwaru.
• Má alespoň základní povědomí o systémové bezpečnosti, o uživatelích a skupinách, přístupových
právech pro veřejné a soukromé adresáře.
• Dokáže svůj počítač připojit do lokální sítě (LAN) a přistupovat k jiným počítačům.
• Zná běžné open-source aplikace a dokáže k ním přiřadit jejich možné closed-source ekvivalenty.
• Rozumí ovládání linuxových desktopových prostředí a dokáže najít nápovědu či pomoc.
• Díky základním dovednostem ovládá práci v příkazové řádce, včetně správy souborů.
• Dokáže vytvářet jednoduché zálohy a archivy.
• Umí použít textový editor v příkazové řádce.
• Rozumí přístupovým oprávněním souborů a adresářů.
• Dokáže napsat a spustit jednoduché skripty.
1 Zdroj: http://wiki.lpi.org/wiki/LinuxEssentials(DE)
155
PŘEHLED TÉMAT: LINUX ESSENTIALS
Přehled
Téma
Popis
Váha
1
Linuxová komunita a kariéra v oblasti open source
7
1.1
Vývoj Linuxu a běžných operačních systémů
2
1.2
Důležité open-source aplikace
2
1.3
Porozumění licencím open-source softwaru
1
1.4
Počítačová gramotnost a práce s Linuxem
2
2
Jak se vyznat v linuxovém systému
8
2.1
První kroky v příkazové řádce
2
2.2
Nápověda v příkazové řádce
2
2.3
Práce s adresáři a logovacími soubory
2
2.4
Vytváření, přesouvání a mazání souborů
2
3
Síla příkazové řádky
10
3.1
Archivace souborů v příkazové řádce
2
3.2
Vyhledávání v souborech a čtení dat
4
3.3
Vytváření skriptů
4
4
Linuxový operační systém
8
4.1
Výběr operačního systému
1
4.2
Hardware počítače
2
4.3
4.4
Ukládání dat
Připojení počítače do sítě
3
2
5
Bezpečnost a oprávnění k souborům
7
5.1
Základní bezpečnost a typy uživatelů
2
5.2
Vytváření uživatelů a skupin
2
5.3
Nastavení práv a vlastnictví u souborů
2
5.4
Speciální adresáře a soubory
1
Součet
1 Linuxová komunita a kariéra v oblasti open source
Váha: 7
1.1 Vývoj Linuxu a běžných operačních systémů
Váha
2
Popis
Informace o vývoji Linuxu a důležitých distribucích
Hlavní poznatky:
• Filozofie open source
• Distribuce
• Embedded systémy
Stručný seznam použitých souborů, pojmů a programů:
• Android
• Debian
• CentOS
156
40
1.2 Důležité open-source aplikace
Váha
2
Popis
Důležité aplikace a jejich použití
Hlavní poznatky:
•
•
•
•
•
Desktopové aplikace
Serverové aplikace
Mobilní aplikace
Programovací jazyky
Nástroje pro správu softwarových balíků
Stručný seznam použitých souborů, pojmů a programů:
•
•
•
•
•
Apache OpenOffice, LibreOffice, Thunderbird, Firefox
Blender, Gimp, Audacity, ImageMagick
Apache, MySQL, PostgreSQL
NFS, Samba, OpenLDAP, Postfix, DNS, DHCP
C, Perl, Shell, Python, PHP
1.3 Porozumění licencím open-source softwaru
Váha
1
Popis
Open-source komunity a licence svobodného a open-source softwaru
Hlavní poznatky:
• Licence
• Free Software Foundation (FSF), Open Source Initiative (OSI)
Stručný seznam použitých souborů, pojmů a programů:
• GPL, BSD, Creative Commons
• Svobodný software (free software), otevřený software (open-source software), FOSS, FLOSS
• Obchodní modely open source
Je dobré znát:
• Duševní vlastnictví: Copyright, chráněné obchodní značky a patenty
• Licence Apache, licence Mozilla
1.4 Počítačová gramotnost a práce s Linuxem
Váha
2
Popis
Základní počítačové dovednosti a práce s Linuxem
Hlavní poznatky:
• Základní ovládání desktopu
• První kroky v příkazové řádce
• Komerční využití Linuxu, cloud computing a virtualizace
Stručný seznam použitých souborů, pojmů a programů:
• Využití webového prohlížeče, povědomí o bezpečném chování, možnosti nastavení, vyhledávání na internetu, ukládání obsahu
• Terminál a konzole
• Nastavení hesel
• Nástroje pro nastavení osobního zabezpečení
• Používání běžných open-source aplikací v prezentacích a projektech
157
PŘEHLED TÉMAT: LINUX ESSENTIALS
2 Jak se vyznat v linuxovém systému
Váha: 8
2.1 První kroky v příkazové řádce
Váha
2
Popis
Základní dovednosti pro používání příkazové řádky v Linuxu
Hlavní poznatky:
•
•
•
•
•
•
Základy práce v shellu
Zadávání příkazů a jejich syntaxe
Nastavení, přepínače a parametry
Proměnné
Vyhledávací vzory, zástupné znaky
Používání uvozovek (quoting)
Stručný seznam použitých souborů, pojmů a programů:
•
•
•
•
echo
history
Proměnná prostředí PATH
which
Je dobré znát:
• Nahrazování proměnných
• Operátory ||, && and ;
2.2 Nápověda v příkazové řádce
Váha
2
Popis
Používání různých systémů nápovědy v příkazové řádce
Hlavní poznatky:
• Man
• Info
Stručný seznam použitých souborů, pojmů a programů:
•
•
•
•
•
man
info
Manuálové stránky
/usr/share/doc
locate
Je dobré znát:
• apropos, whatis, whereis
2.3 Práce s adresáři a logovacími soubory
Váha
2
Popis
Orientace v domovském adresáři, v systémových adresářích, logovací soubory na různých místech
Hlavní poznatky:
• Soubory, adresáře
• Skryté soubory a adresáře
158
• Domovský adresář (home)
• Absolutní a relativní cesty
Stručný seznam použitých souborů, pojmů a programů:
•
•
•
•
•
Běžné volby a přepínače pro ls
Rekurzivní výpis
cd
. a ..
Home
a~
2.4 Vytváření, přesouvání a mazání souborů
Váha
2
Popis
Vytváření, přesouvání a mazání souborů a adresářů v domovském adresáři
Hlavní poznatky:
• Soubory a adresáře
• Rozdíl mezi velkými a malými písmeny
• Jednoduché použití zástupných znaků a uvozovek
Stručný seznam použitých souborů, pojmů a programů:
• mv, cp, rm, touch
• mkdir, rmdir
3 Síla příkazové řádky
Váha: 10
3.1 Archivace souborů v příkazové řádce
Váha
2
Popis
Archivace souborů v jejich adresářích
Hlavní poznatky:
• Soubory, adresáře
• Archivy, komprimace
Stručný seznam použitých souborů, pojmů a programů:
•
•
•
•
tar
Běžné volby pro tar
gzip, bzip2
zip, unzip
Je dobré znát:
• Rozbalení jednotlivých souborů z archivu
3.2 Vyhledávání v souborech a čtení dat
Váha
4
Popis
Vyhledávání v souborech a čtení dat v domovských adresářích
Hlavní poznatky:
• Roury a kolony
• Přesměrování vstupu a výstupu
159
PŘEHLED TÉMAT: LINUX ESSENTIALS
• Nejdůležitější regulární výrazy podle standardu POSIX (., [ ], *, ?)
Stručný seznam použitých souborů, pojmů a programů:
•
•
•
•
•
•
•
find
grep
less
head, tail
sort
cut
wc
Je dobré znát:
• Základní regulární výrazy podle standardu POSIX (zejm. - [^ ], ^, $)
• Rozšířené regulární výrazy podle standardu POSIX ( - +, ( ), |)
• xargs
3.3 Vytváření skriptů
Váha
4
Popis
Vytváření jednoduchých skriptů z často opakovaných příkazů
Hlavní poznatky:
• Základy zpracování textu
• Základy vytváření skriptů
Stručný seznam použitých souborů, pojmů a programů:
•
•
•
•
•
•
/bin/sh
Proměnné
Argumenty
for cykly
echo
Návratová hodnota
Je dobré znát:
•
•
•
•
pico, nano, vi
(jen základy nutné pro vytvoření skriptu)
Bash
Příkazy if, while a case
Příkazy read, test a [
4 Linuxový operační systém
Váha: 8
4.1 Výběr operačního systému
Váha
1
Popis
Informace o důležitých operačních systémech a linuxových distribucích
Hlavní poznatky:
• Rozdíly mezi systémy Windows, Mac OS X a Linux
• Správa životního cyklu distribucí
Stručný seznam použitých souborů, pojmů a programů:
• Grafické prostředí vs. příkazová řádka, možnosti desktopového prostředí
• Vývojové cykly, beta, stabilní verze
160
4.2 Hardware počítače
Váha
2
Popis
Jak vybrat komponenty pro stavbu desktopového a serverového počítače
Hlavní poznatky:
• Hardware
Stručný seznam použitých souborů, pojmů a programů:
• Pevné disky a oddíly, základní desky, procesory, síťové prvky, optické mechaniky, periférie
• Typy displejů
• Ovladače
4.3 Ukládání dat
Váha
3
Popis
Kde jsou v linuxovém systému uloženy různé informace
Hlavní poznatky:
• Jádro
• Procesy
• syslog, klog, dmesg
• /lib, /usr/lib, /etc, /var/log
Stručný seznam použitých souborů, pojmů a programů:
• Programy, knihovny, balíky a databáze balíků, systémová nastavení
• Procesy a procesní tabulky, adresování paměti, systémová hlášení a logování
• ps, top, free
4.4 Připojení počítače do sítě
Váha
2
Popis
Zodpovězení základních otázek a nastavení nutná pro připojení počítače do lokální sítě (LAN)
Hlavní poznatky:
• Internet, síť, router
• Domain Name Service
• Nastavení sítě
Stručný seznam použitých souborů, pojmů a programů:
• route
• resolv.conf
• IPv4, IPv6
• ifconfig
• netstat
• ping
Je dobré znát:
• ssh
• dig
161
PŘEHLED TÉMAT: LINUX ESSENTIALS
5 Bezpečnost a oprávnění k souborům
Váha: 7
5.1 Základní bezpečnost a typy uživatelů
Váha
2
Popis
Různé typy uživatelů v linuxovém systému
Hlavní poznatky:
• Root a neprivilegovaní uživatelé
• Systémoví uživatelé
Stručný seznam použitých souborů, pojmů a programů:
• /etc/passwd, /etc/group
• id, who, w
• sudo
Je dobré znát:
• su
5.2 Vytváření uživatelů a skupin
Váha
2
Popis
Vytváření uživatelů a skupin v linuxovém systému
Hlavní poznatky:
• Příkazy týkající se uživatelů a skupin
• Uživatelská ID
Stručný seznam použitých souborů, pojmů a programů:
•
•
•
•
/etc/passwd, /etc/shadow, /etc/group
id, last
useradd, groupdadd
passwd
Je dobré znát:
• usermod, userdel
• groupmod, groupdel
5.3 Nastavení práv a vlastnictví u souborů
Váha
2
Popis
Správa přístupových oprávnění u souborů a nastavení jejich vlastníků
Hlavní poznatky:
• Souborová a adresářová práva a vlastnictví
Stručný seznam použitých souborů, pojmů a programů:
• ls -l
• chmod, chown
Je dobré znát:
• chgrp
162
5.4 Speciální adresáře a soubory
Váha
1
Popis
Speciální adresáře a soubory v linuxovém systému, včetně zvláštních přístupových práv
Hlavní poznatky:
• Systémové soubory a knihovny
• Symbolické odkazy (symlinky)
Stručný seznam použitých souborů, pojmů a programů:
•
•
•
•
/etc, /var
/tmp, /var/tmp
a sticky bity
ls -d
ln -s
Je dobré znát:
• Pevné odkazy (hardlinky)
• Setuid/Setgid
163
PŘEHLED TÉMAT: LINUX ESSENTIALS
164
Přílohy
Doporučená literatura
České knihy doplněny překladatelem, původní literaturu ponecháváme bez změny.
• Bíbr, I. a kol. Mandriva Linux 2010 CZ. Instalační a uživatelská příručka. Brno: Computer Press, 2009.
ISBN 978-80-251-2825-1
• Bíbr, I. a kol. Ubuntu 10.10 CZ. Praktická příručka uživatele Linuxu. Brno: Computer Press, 2010.
ISBN 978-80-251-3007-0
• Fogel, K. Tvorba open source softwaru. Jak řídit úspěšný projekt svobodného softwaru. Praha: CZ.NIC, 2012.
ISBN: 978-80-904248-5-2
• Kameník, P. Příkazový řádek v Linuxu. Praktická řešení. Brno: Computer Press, 2011.
ISBN 978-80-251-2819-0
• MATEJKA, J. Internet jako objekt práva: hledání rovnováhy autonomie a soukromí. 1. vydání. Praha: CZ.NIC, 2013.
ISBN 978-80-904248-7-6
• Satrapa, P. Internetový protokol verze 6. Třetí, aktualizované a doplněné vydání. Praha: CZ.NIC, 2011.
ISBN 978-80-904248-4-5
• Sobell, Mark G. Mistrovství v Linuxu. Příkazový řádek, shell, programování. Brno: Computer Press, 2007.
ISBN 978-80-251-1726-2
Dále doporučujeme archiv bezplatného openMagazinu (http://www.openmagazin.cz).
• Linux Essentials – Die Einsteiger-Zertifizierung des LPI der Firma Linup-Front
Schulungsunterlage (Deutsch) unter Creative Commons
http://shop-download.linupfront.de/cc/lxes-de-manual-cc.pdf
Schulungsunterlage (anglicky) unter Creative Commons
http://shop-download.linupfront.de/cc/lxes-en-manual-cc.pdf
• Linux Essentials (anglicky)
Roderick W. Ssh
ISBN: 978-1-1181-0679-2
Paperback, 368 stran, 2012, 32,00 eur
http://eu.wiley.com/WileyCDA/WileyTitle/productCd-1118106792,miniSiteCd-SYBEX.html
• Linux – Das umfassende Handbuch
Johannes Plötner, Steffen Wendzel
Galileo Computing
1282 stran, 5., aktualizované vydání 2012, vazba, s 2 DVD
49,90 eur, ISBN 978-3-8362-1822-1
Openbook (zdarma)
http://openbook.galileocomputing.de/linux/
• Ubuntu GNU/Linux (Version 11.04)
Marcus Fischer
Galileo Computing
1118 stran, 39,90 eur ISBN 978-3-8362-1765-1
Openbook (zdarma)
http://openbook.galileocomputing.de/ubuntu/
• Linux-UNIX-Programmierung
Jürgen Wolf
Galileo Computing
165
PŘEHLED TÉMAT: LINUX ESSENTIALS
1216 stran, s CD, 49,90 eur ISBN 3-89842-749-8 Openbook (zdarma)
http://openbook.galileocomputing.de/linux_unix_programmierung/
• Shell-Programmierung
Jürgen Wolf
Galileo Computing
782 stran, s CD, 44,90 eur
ISBN 3-89842-683-1
Openbook (zdarma)
http://openbook.galileocomputing.de/shell_programmierung/
• Wie werde ich UNIX-Guru?
Arnold Willemer
Galileo Computing
672 stran, 2003, vazba,
34,90 eur, ISBN 978-3-89842-240-6 (Vergriffen) Openbook (zdarma)
http://openbook.galileocomputing.de/unix_guru/
• IT-Handbuch für Fachinformatiker
Sascha Kersken
Galileo Computing
ca. 1172 stran, 5., aktualizované a rozšířené vydání, vazba,
ca. 34,90 eur, ISBN 978-3-8362-1744-6
Openbook (zdarma)
http://openbook.galileocomputing.de/it_handbuch/
166
PROGRAMY / PŘÍKAZY
Programy / Příkazy
Symboly a čísla
7z....................................................................... 129
A
anacron............................................................... 133
apropos................................................................. 21
apt-get .................................................................. 18
ash ....................................................................... 18
B
basename ............................................................ 137
bash ..................................................................... 18
bg ........................................................................ 23
bunzip2............................................................... 125
bzcat .................................................................. 125
bzip2 ............................................................ 125, 127
C
cal........................................................................ 22
cat .................................................................. 27, 94
cd .......................................................... 27, 27, 28, 31
cmd.exe ................................................................ 18
command.com........................................................ 18
convert ............................................................... 102
cp ......................................................... 27, 33, 86, 128
csh ....................................................................... 18
cut ................................................................. 97, 100
D
dash ..................................................................... 18
date ...................................................................... 22
dhclient .............................................................. 117
dhcpcd ................................................................ 117
dig ..................................................................... 116
dmesg .............................................................. 82, 83
dosfslabel .............................................................. 91
E
echo ............................................................20, 27, 27
env....................................................................... 64
exif ........................................................... 92, 94, 100
exifautotran ......................................................... 102
grep ................................................. 26, 27, 74, 95, 100
groupadd............................................................... 50
groupdel ............................................................... 50
groupmod ............................................................. 50
gunzip ................................................................ 124
gzip .............................................................. 124, 127
H
head ................................................................ 75, 94
help...................................................................... 19
history .................................................................. 19
htop ..................................................................... 24
Ch
chgrp............................................................... 57, 57
chmod .........................................................56, 56, 57
chown ............................................................. 57, 57
chpasswd .............................................................. 58
I
id ......................................................................... 47
ifconfig ......................................................... 114, 115
J
jobs ...................................................................... 23
K
kill ....................................................................... 24
killall .................................................................... 24
L
less.................................................................. 20, 27
ln ......................................................................... 35
locate ................................................................... 88
ls ................................................................22, 26, 27
lshw ..................................................................... 85
lshw-gtk ............................................................... 85
lsusb..................................................................... 84
F
fdisk ..................................................................... 90
fg ......................................................................... 23
file ....................................................................... 27
find ........................................................ 27, 28, 86, 88
free ...................................................................... 25
fsck ...................................................................... 91
fsck.vfat ................................................................ 91
M
man...................................................................... 19
md5...................................................................... 75
md5pass ................................................................ 75
mkdir .............................................................. 27, 28
mkfs ..................................................................... 91
mkfs.ext3 .............................................................. 91
mkfs.ext4 .............................................................. 91
mkfs.ntfs ............................................................... 91
mkfs.vfat ............................................................... 91
mount.......................................................... 84, 89, 90
mv .................................................................. 27, 34
G
gedit..................................................................... 23
N
Nano .................................................................... 37
167
PROGRAMY / PŘÍKAZY
nano................................................................ 37, 40
newgrp ................................................................. 46
nl ......................................................................... 94
nslookup ............................................................. 116
P
passwd ........................................................49, 55, 77
ping ........................................................ 110, 115117
ping6 .................................................................. 117
printf .................................................................. 101
ps ................................................................... 23, 24
pstree ................................................................... 24
pwd................................................................. 27, 31
python .................................................................. 26
R
rar ..................................................................... 129
read...................................................................... 73
rm............................................................... 27, 34, 87
rmdir .................................................................... 27
route ............................................................ 115, 116
S
scp ..................................................................... 119
sed ....................................................................... 26
sh ........................................................................ 18
sleep................................................................... 132
slocate .................................................................. 88
sort ........................................................ 27, 77, 95, 97
ssh ..................................................................... 119
su ........................................................................ 49
sudo ................................................... 18, 49, 49, 77, 78
synaptic ................................................................ 18
syslogd ................................................................. 82
T
tail ..............................................................83, 94, 94
tar................................................................ 127, 128
tee .................................................................. 67, 68
test.................................................................. 27, 70
time ................................................................... 125
top ....................................................................... 24
touch ............................................................... 27, 28
tr ................................................................73, 75, 97
U
ufraw ................................................................. 102
ufraw-batch ......................................................... 102
umount ............................................................ 90, 91
unalias .................................................................. 20
uniq ..................................................................... 95
unrar .................................................................. 129
unset .................................................................... 64
unzip .................................................................. 125
updatedb ............................................................... 88
useradd ................................................... 46, 47, 51, 75
usermod................................................................ 51
V
vi ......................................................................... 37
vim ...................................................................... 37
W
w ......................................................................... 52
168
wall ...................................................................... 56
wc........................................................................ 97
whatis .................................................................. 21
whereis ................................................................. 88
which ................................................................... 88
who................................................................. 22, 52
X
xargs .............................................................. 87, 160
Y
yast .............................................................. 114, 116
Z
zcat .................................................................... 124
zip ..................................................................... 125
zsh ....................................................................... 18
ADRESÁŘE / SOUBORY
Adresáře / Soubory
A
auth.log (/var/log/) .................................................. 82
B
.bash_history (~/) .................................................... 19
.bash_logout (~/) ..................................................... 19
C
crontab (/etc/) ...................................................... 133
D
dmesg (/var/log/) .................................................... 82
E
/etc/rsyslog.d/ ........................................................ 82
/etc/skel/ ............................................................... 47
/etc/sysconfig/network/ ......................................... 117
/etc/sysconfig/networkscripts/ ................................ 117
G
group (/etc/) .................................................46, 49, 76
H
hosts (/etc/) ......................................................... 116
I
interfaces (/etc/network/) ....................................... 117
K
kern.log (/var/log/).................................................. 82
M
/mnt/ .................................................................... 89
P
passwd (/etc/).............................. 46, 47, 49, 50, 55, 76, 97
~/Plocha/.......................................................... 39, 40
R
resolv.conf (/etc/) .................................................. 116
rsyslog.conf (/etc/) .................................................. 82
S
shadow (/etc/) .......................................... 46, 48, 48, 55
sudoers (/etc/) ................................................... 49, 77
syslog (/var/log/) .................................................... 82
U
udev (/var/log/) ...................................................... 82
urandom (/dev/) ..................................................... 75
/usr/share/doc/ ....................................................... 21
/usr/share/doc/howto/ ............................................. 21
V
/var/log/................................................................ 82
169
OSOBY
Osoby
K
Kernighan, Brian .................................................... 12
L
Lemmke, Ari .......................................................... 12
N
Niedermair, Michael ................................................. 2
R
Raymond, Eric...................................................... 145
Ritchie, Dennis .................................................. 12, 16
S
Stallman, Richard............................................ 144, 145
Stroustrup, Bjarne................................................... 16
T
Thompson, Ken ...................................................... 12
Torvalds, Linus....................................................... 12
W
Wall, Larry ............................................................ 16
Wolf, Joachim ......................................................... 2
170
TERMÍNY A VÝRAZY
Termíny a výrazy
Symboly a čísla
~ .......................................................................... 26
& ......................................................................... 23
&& ....................................................................... 70
ǀ ........................................................................... 67
ǀǀ .......................................................................... 70
2>&1 .................................................................... 67
7z....................................................................... 129
7-Zip .................................................................. 129
; ........................................................................... 23
<.......................................................................... 67
>> ........................................................................ 66
A
adresář.................................................................. 29
adresáře
cesta .............................................................. 30
domovský ....................................................... 46
FHS ............................................................... 30
strom ............................................................. 30
struktura ........................................................ 30
adresy
CIDR ..................................................... 111, 115
DNS............................................................. 116
hardwarové................................................... 115
MAC............................................................ 115
Android ................................................................ 15
Anycast .............................................................. 112
Apache ................................................................. 16
Apache OpenOffice ................................................. 15
ARP ................................................................... 110
Audacity ............................................................... 16
B
Balík
instalovat ....................................................... 18
Bash
Alias .............................................................. 20
Historie .......................................................... 19
Poslední příkazy .............................................. 19
bash
odhlásit .......................................................... 19
Berkeley Software Distribution ......................... viz BSD
bezpečnost .......................................................... 155
heslo.............................................................. 48
riziko ............................................................. 49
šifrování ......................................................... 48
Blender ................................................................. 16
bootování .............................................................. 82
brute force............................................................. 48
BSD.................................................................... 145
Buggix .................................................................. 12
bzip2 .................................................................. 125
C
C ......................................................................... 16
C++...................................................................... 16
case-insensitive ...................................................... 26
case-preserving ...................................................... 26
case-sensitive ......................................................... 26
CC ..................................................................... 146
CC BY .......................................................... 146
CC BY-NC .................................................... 146
CC BY-NC-ND............................................... 146
CC BY-NC-SA ............................................... 146
CC BY-ND .................................................... 146
CC BY-SA ..................................................... 146
CIDR .................................................................. 115
cloud .................................................................... 14
cluster .................................................................. 14
copyleft..................................................... 12, 144, 145
Creative Commons ............................................... 146
cron ................................................................... 133
cykly .................................................................... 69
for ................................................................. 69
while ............................................................. 70
D
Databáze ............................................................. 152
D-BUS .................................................................. 82
DCIM ................................................................... 86
démon .................................................................. 82
DHCP ................................................................. 117
DNS ................................................................... 113
jména .......................................................... 113
server .......................................................... 113
DOCTYPE ........................................................... 136
Domain Name System ........................................... 113
doména
druhé úrovně ................................................ 113
FQDN .......................................................... 113
kořenová ...................................................... 113
první úrovně ................................................. 113
subdoména ................................................... 113
Dynamic Host Configuration Protocol...................... 117
E
editor
rovnic .......................................................... 152
Emacs ................................................................... 37
Exif ...................................................................... 92
F
FHS ...................................................................... 30
Filesystems Hierarchy Standard ........................ viz FHS
Firefox .................................................................. 16
doplňky........................................................ 147
171
TERMÍNY A VÝRAZY
FLOSS................................................................. 145
FOSS ............................................................ 145, 155
Fotoaparát
Zobrazit metadata ............................................ 92
FQDN ................................................................. 113
Freax .................................................................... 12
Free and Open Source Software ............................... 145
Free/Libre Open Source Software ............................ 145
FSF................................................................. 12, 144
FTP .................................................................... 110
Fully Qualified Domain Name ................................. 113
G
GECOS ................................................................. 47
GFDL.................................................................. 146
GID ...................................................................... 47
Gimp .............................................................. 16, 152
globbing................................................................ 26
Gnome.................................................................. 14
GNU..................................................................... 12
GNU Lesser General Public License ................. viz LGPL
GNU LGPL .................................................. viz LGPL
GPL...................................................................... 12
grafika
vektorová ..................................................... 152
gzip .................................................................... 124
H
HAL ..................................................................... 82
hardware
přístup ........................................................... 46
Hardware Abstraction Layer............................ viz HAL
hash ..................................................................... 48
hash-bang ............................................................. 64
here document ................................................. 68, 137
heslo .................................................................... 48
databáze ......................................................... 47
pravidla.......................................................... 48
prolomení ....................................................... 48
změnit............................................................ 49
HTML ................................................................ 136
HTTP ................................................................. 111
server .......................................................... 118
testování serveru ........................................... 118
Hypertext Transfer Protocol ................................... 111
I
ICMP .................................................................. 110
IFS ....................................................................... 71
ImageMagick ......................................................... 16
Inode .................................................................... 35
Internet............................................................... 110
vývoj ........................................................... 110
IP ....................................................................... 110
IPC....................................................................... 82
IPsec .................................................................. 112
IPv4.................................................................... 111
loopback adresa ............................................. 112
Multicast ...................................................... 112
soukromé adresy............................................ 112
tečková decimální notace ................................ 111
Třída
172
A ............................................................. 112
B.............................................................. 112
C ............................................................. 112
D ............................................................. 112
E.............................................................. 112
třídy adres .................................................... 111
zápis ............................................................ 111
zvláštní adresy............................................... 112
IPv6
adresní formát ............................................... 113
adresní oblast ................................................ 112
adresní typy .................................................. 113
výhody......................................................... 112
zápis ............................................................ 113
J
Java ...................................................................... 16
JavaScript ............................................................ 147
JPEG .................................................................... 92
K
KDE ..................................................................... 14
kernel ................................................................... 82
komprimace......................................................... 124
bezztrátová ................................................... 124
kontejnerová ................................................. 124
proudová ...................................................... 124
ztrátová ........................................................ 124
Konsole................................................................. 17
L
LAN ................................................................... 155
LDAP ................................................................... 16
LGPL .................................................................. 145
LibreOffice ...................................................... 15, 152
licence
BSD ....................................................... viz BSD
closed source................................................. 146
copyleft ............................................. viz copyleft
Creative Commons......... 147, viz Creative Commons
FLOSS ................................................. viz FLOSS
FOSS..................................................... viz FOSS
GNU FDL ..................................................... 146
GNU General Public License ...................... viz GPL
GNU GPL ............................................... viz GPL
GPL ....................................................... viz GPL
LGPL ............................................. 145, viz LGPL
přehled......................................................... 146
public domain ........................... viz public domain
softwarové .................................................... 155
Lighttpd .............................................................. 118
Linux
historie .......................................................... 12
přehled distribucí ............................................. 13
vlastnosti........................................................ 46
Linux Essentials
cíle .............................................................. 155
logy...................................................................... 82
flash disk ........................................................ 83
hlášení jádra ................................................... 82
nastavení ........................................................ 82
při startu ........................................................ 82
TERMÍNY A VÝRAZY
syslog ............................................................ 82
systémová hlášení ............................................ 82
USB disk......................................................... 83
zobrazit kontinuálně ......................................... 83
lomítko ................................................................. 26
Long Term Support ..........................................viz LTS
LTS ...................................................................... 13
LXDE ................................................................... 14
M
manuálové stránky ................................................. 20
média
externí ........................................................... 82
Midnight Commander ............................................. 18
Minimally Qualified Candidate ........................viz MQC
Mozilla
Firefox ........................................................... 16
Thunderbird .................................................... 16
MQC .................................................................. 155
Multicast .........................................................111113
multimédia .......................................................... 112
MySQL ................................................................. 16
N
náhledy............................................................... 102
Nano .................................................................... 37
nano..................................................................... 37
nápověda .............................................................. 20
NetworkManager ................................................. 114
NFS ................................................................ 16, 111
O
obrázky
kopírovat ...................................................... 100
open source ......................................................... 145
filozofie ........................................................ 145
obchodní modely ........................................... 145
OpenLDAP ............................................................ 16
oprávnění
soubory ........................................................ 155
P
Pangram ............................................................... 99
PCRE .................................................................... 26
Perl ...................................................................... 16
PHP ..................................................................... 16
Pico...................................................................... 37
PID ...................................................................... 24
ping ................................................................... 115
plocha .................................................................. 39
vytvořit ikonu ................................................. 39
počítačová gramotnost .......................................... 157
podmínky.............................................................. 72
PolicyKit ............................................................... 82
Port
20 ................................................................ 111
21 ................................................................ 111
22 ................................................................ 111
25 ................................................................ 111
80 ................................................................ 111
443 .............................................................. 111
Postfix .................................................................. 16
PostgreSQL............................................................ 16
práva
administrátorská .............................................. 46
číselně............................................................ 56
číst ................................................................ 55
chgrp ............................................................. 56
chmod............................................................ 56
chown............................................................ 56
omezená ......................................................... 46
přístupová ...................................................... 54
r.................................................................... 55
SGID.............................................................. 55
spouštět ......................................................... 55
sticky bit ........................................................ 55
SUID.............................................................. 55
uživatelská...................................................... 46
w .................................................................. 55
x ................................................................... 55
zapisovat ........................................................ 55
změnit............................................................ 56
znakově.......................................................... 56
prezentace ........................................................... 152
procesy ................................................................. 23
Program
spustit na pozadí .............................................. 23
spustit za sebou ............................................... 23
zobrazit běžící ................................................. 23
proměnná
$? ............................................................. 65, 70
..................................................................... 65
$# .................................................................. 65
$$ .................................................................. 65
$* .................................................................. 65
$0 .................................................................. 65
$1..9 ............................................................... 65
$HISTFILE ...................................................... 19
$HISTSIZE ...................................................... 19
$HOME .......................................................... 64
$PATH ........................................................... 64
Bash .............................................................. 65
smazat ........................................................... 64
typ ................................................................ 65
zobrazit všechny .............................................. 64
příkaz ................................................................... 22
seskupení ....................................................... 76
public domain ...................................................... 145
Python.................................................................. 16
Q
Quality of Service, QoS .......................................... 112
quoting ........................................................ 27, 39, 64
R
rar ..................................................................... 129
regulární výrazy ............................................ 26, 74, 95
root
dočasná práva ................................................. 49
roura .................................................................... 87
roury .................................................................... 67
router ................................................................. 114
S
Samba................................................................... 16
173
TERMÍNY A VÝRAZY
server ................................................................... 14
databázový ..................................................... 14
DNS............................................................. 113
groupware ...................................................... 14
HTTP .......................................................... 118
jmenný ........................................................ 113
poštovní .................................................... 14, 16
souborový ...................................................... 14
webový ..........................................14, 16, 118, 143
sezení ................................................................... 46
SHA-2................................................................... 75
Shebang ................................................................ 64
Shell
Co to je .......................................................... 18
Signál
SIGTERM ....................................................... 24
síť
Address Resolution Protocol ............................ 110
adresa celé sítě .............................................. 112
automatické nastavení .................................... 117
broadcast ...................................................... 112
DHCP .......................................................... 117
File Transfer Protocol ..................................... 110
FTP ....................................................... 110, 111
HTTP .......................................................... 111
HTTPS......................................................... 111
Internet Control Message Protocol .................... 110
Internet Protocol............................................ 110
IP adresa ................................................ 110, 111
IPv4 ............................................................. 111
loopback....................................................... 112
MAC adresa .................................................. 110
maska podsítě ............................................... 111
Network File System....................................... 111
protokoly ..................................................... 110
Secure Shell .................................................. 111
Simple Mail Transfer Protocol .......................... 111
sítí............................................................... 110
SMTP..................................................... 110, 111
soukromé adresy............................................ 112
SSH ....................................................... 110, 111
TCP/IP ......................................................... 110
TCP/IP vrstvy................................................ 110
TCP/IP výhody .............................................. 110
telnet ........................................................... 110
Transmission Control Protocol ......................... 110
uložení konfigurace ........................................ 116
User Datagramm Protocol ............................... 110
všesměrové vysílání ....................................... 112
výchozí brána................................................ 115
World Wide Web ........................................... 111
skript
Bash .............................................................. 64
proměnné ....................................................... 64
spustit ............................................................ 64
Skriptování .......................................................... 155
skupiny
databáze ......................................................... 49
primární ......................................................... 46
přidělení čísel .................................................. 50
root ............................................................... 50
sekundární...................................................... 46
174
smazat ........................................................... 50
správa ............................................................ 49
strategie ......................................................... 50
systémové služby ............................................. 50
uživatel .......................................................... 50
vytvořit ..................................................... 46, 50
změnit............................................................ 50
SMTP ................................................................. 111
software
closed source........................................... 146, 155
ImageMagick................................................. 102
malware ......................................................... 49
zdroj ............................................................ 152
souborový systém .............................................. 55, 89
formátovat ...................................................... 91
chyby............................................................. 91
kontrola integrity............................................. 91
odpojit ........................................................... 90
otestovat ........................................................ 91
pojmenovat..................................................... 91
přehled........................................................... 89
přehled zařízení ............................................... 90
připojit........................................................... 89
přípojný bod ................................................... 90
zobrazit připojené ............................................ 90
žurnál ............................................................ 89
soubory ........................................................... 29, 33
běžné ............................................................. 29
cesta .............................................................. 30
hledat ............................................................ 86
kategorie uživatelů ........................................... 55
kopírovat ........................................................ 86
logy .......................................................... 82, 94
nulová velikost ................................................ 19
odstranit......................................................... 27
oprávnění ....................................................... 54
ostatní uživatelé............................................... 55
pojmenování ................................................... 26
pro zařízení..................................................... 29
přístupová práva .............................................. 55
SGID.............................................................. 55
skryté ....................................................... 26, 27
smazat obsah................................................... 19
smazat všechny uživatelské soubory ................... 87
speciální ......................................................... 29
správa ............................................................ 26
sticky bit ........................................................ 55
SUID.............................................................. 55
textové
filtrování ..................................................... 94
rozdělit do polí ............................................. 97
rozdělit do sloupců........................................ 97
řadit ........................................................... 95
spočítat slova ............................................... 97
výběr řádků ................................................. 95
zaměnit znaky.............................................. 97
zobrazit....................................................... 94
zobrazit konec.............................................. 94
zobrazit kontinuálně ..................................... 94
zobrazit očíslovaně ....................................... 94
zobrazit začátek............................................ 94
uživatelé skupiny ............................................. 55
TERMÍNY A VÝRAZY
vlastnictví....................................................... 54
vlastník .......................................................... 55
zástupné znaky ........................................... 70, 86
změnit vlastníka .............................................. 56
zvláštní .......................................................... 29
Space Travel .......................................................... 12
správa
přístupu ......................................................... 54
skupin............................................................ 49
uživatelů ........................................................ 46
SSH .................................................................... 111
svobodný software
licence ......................................................... 155
T
tablet .................................................................... 15
tabulkové výpočty ................................................ 152
tar...................................................................... 127
tarball ................................................................. 127
TCP.................................................................... 110
telefon
chytrý ............................................................ 15
terminál ................................................................ 17
text
regulární výrazy .............................................. 95
textový editor ........................................................ 37
Nano ............................................................. 37
Pico ............................................................... 37
vi .................................................................. 37
vim................................................................ 37
The Document Foundation ....................................... 15
Thunderbird........................................................... 16
TIFF ..................................................................... 92
TTY ..................................................................... 24
Tux ...................................................................... 12
U
Ubuntu ................................................................. 13
udev ..................................................................... 82
UDP ................................................................... 110
UID ...................................................................... 47
Unicast ............................................................... 112
UNICS .................................................................. 12
Uniform Resource Locator...................................... 113
Unity ........................................................... 13, 14, 17
Unix ..................................................................... 12
historie .......................................................... 12
URL.................................................................... 113
uživatel
$USER............................................................ 64
administrátor .................................................. 46
běžný ............................................................. 46
databáze ......................................................... 47
domovský adresář ............................................ 46
jiný................................................................ 49
kategorie ........................................................ 55
přepnout ........................................................ 49
přiřazení ke skupině ......................................... 51
root ............................................................... 77
skupiny .......................................................... 50
smazat ........................................................... 46
správa ............................................................ 46
správce systému .............................................. 46
su .................................................................. 49
sudo ......................................................... 49, 77
superuživatel................................................... 77
systémový ...................................................... 46
účet ............................................................... 46
UID ............................................................... 47
vytvořit .......................................................... 46
změnit............................................................ 46
V
vi ......................................................................... 37
video on demand .................................................. 112
VPN ................................................................... 112
vstup
do proměnné ................................................... 73
přesměrování .................................................. 67
roura ............................................................. 67
standardní ................................................. 66, 73
výstup
chybový ......................................................... 66
přesměrování .................................................. 66
roura ............................................................. 67
standardní ...................................................... 66
W
wildcards .............................................................. 26
X
X Window System .................................................. 18
Xfce ..................................................................... 14
Xterm ................................................................... 18
Z
zálohy ................................................................ 131
generační princip ........................................... 131
GFS ............................................................. 131
inkrementální................................................ 131
kompletní ..................................................... 131
přírůstková ................................................... 131
rozdílová ...................................................... 131
úplná ........................................................... 131
zrcadlová ...................................................... 131
zařízení
DVD .............................................................. 82
embedded ....................................................... 15
připojit........................................................... 82
připojit automaticky ......................................... 82
USB ............................................................... 82
vestavěná ....................................................... 15
zástupné znaky ...................................19, 26, 70, 95, 127
zip ..................................................................... 125
zpracování textů ................................................... 152
175

Podobné dokumenty

Sborník příspěvků

Sborník příspěvků které s tímto povoláním souvisí. Mezi hlavní časovou náplň fotografa patří hlavně získání fotografií, katalogizace, různé retušovací a adjustační práce a nakonec i příprava pro tisk nebo jiné použit...

Více

4. Časné jaro

4. Časné jaro Najděte a vyfoťte kvetoucí rostliny a sestavte časový žebříček, kdy která vykvetla. Zaznamenejte biotop, ve kterém se nejčastěji vyskytují časně jarní rostliny. Proč si myslíte, že je to tento biot...

Více

Mé přípravy na cvičení z UPS

Mé přípravy na cvičení z UPS Základní příkazy pro práci se souborovým systémem o Práce se soubory: pwd, cd, mkdir, rmdir, ls, cp, mv, rm o Práce s daty souborů: cat, more, less, head, tail o Vyhledávání souborů: which (program...

Více

ulm–53l modbus

ulm–53l modbus Nastavení měření bit 0 =1 vyřazují se extrémní hodnoty MIN a MAX z posledních N měření – viz AVERAGE bit 1 =1 bude prováděna další teplotní korekce s ohledem na zadanou teplotu média – viz MEDIUM T...

Více