Slezská univerzita v Opavě. Ústav informatiky

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

Download "Slezská univerzita v Opavě. Ústav informatiky"

Transkript

1 Šárka Vavrečková Operační systémy cvičení Část II: Linux Slezská univerzita v Opavě Filozoficko-přírodovědecká fakulta Ústav informatiky Opava, poslední aktualizace 21. června 2010

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

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

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

5 Na stránkách předmětu je k dispozici orientační seznam otázek a úkolů, které se mohou objevit na testu, ovšem v testu se mohou objevit mírné odlišnosti (například v názvech zpracovávaných souborů či adresářů, jiné přepínače příkazů, apod.). Tato skripta plně pokrývají odpovědi na otázky, které se mohou objevit v zápočtovém testu č. 2 (Linux) v předmětu Operační systémy. v

6 Obsah 1 Textový režim v Linuxu Textové shelly a příkazy Kdy, kde a jak používat textový shell Skripty Struktura příkazů Zástupné znaky Nápověda Jak volat o pomoc Manuálové stránky Znám příkaz, chci vědět, k čemu slouží Neznám příkaz Práce s adresáři a soubory Adresáře Soubory Pevné a symbolické odkazy Přesměrování a filtry Směrování a deskriptory Filtry Prohledávání Automatické zpracování Možnosti vytvoření nového souboru Další příkazy Speciální znaky pro uvozování Proměnné Základy práce s proměnnými Výpočty vi

7 vii 2 Skripty a programování Konfigurační a další systémové soubory Skripty Co je to skript Parametry a návratové hodnoty Další možnosti použití skriptů Programování v shellu Jednoduché propojení příkazů Příkazy pro podmínky a cykly Jednoduché testování Pole Překlad programů Další nástroje Aliasy Konverze textových souborů Úlohy při správě Uživatelé a skupiny Informace o uživatelích Vlastnosti účtů a skupin Přístupová oprávnění Navyšování přístupových oprávnění Procesy a úlohy Příkazy pro práci s procesy Skupiny a relace procesů Úlohy a multitasking Komunikace procesů Plánování spouštění procesů Správa zařízení Pamět ová média Připojování a odpojování pamětí Program fdisk Hlavní a vedlejší číslo zařízení, udev Moduly jádra Operační pamět Sít

8 viii 4 Nasazení systému Pokročilé mechanismy řízení přístupu POSIX ACL Atributy PAM Capabilities (kvalifikace) Chráněné prostředí pro běh procesu Běh systému Inicializace systému a proces init Úrovně běhu Logování provozu Vstup syslogu Filtrování vstupu Výstup syslogu Firewall Instalace aplikací Binární a zdrojové balíčky Instalace ze zdrojových kódů Bezpečnost systému Další nástroje pro správu Literatura 107

9 Kapitola 1 Textový režim v Linuxu Tato kapitola je úvodem do správy operačních systémů s jádrem GNU/Linux (dále Linux), většina postupů s mírnou modifikací platí i pro jiné unixové (unix-like) systémy. Podíváme se především na práci se shellem. V unixových systémech včetně Linuxu je možné používat několik různých shellů. My se zde budeme věnovat pouze shellu bash Bourne Again Shell. 1.1 Textové shelly a příkazy Kdy, kde a jak používat textový shell V unixových systémech včetně Linuxu máme vždy mimo grafické prostředí možnost provádět různé operace také v textovém režimu pomocí příkazů. Tento způsob práce se systémem se může zdát nepohodlný (a proto ho spousta uživatelů ani moc nepoužívá), ale je užitečný, pokud chceme operace provádět efektivně (nemusíme se dostávat do určitého okna s nastavením přes různá menu a jiná okna, máme všechno pohromadě, různá nastavení provádíme na jednom místě, v okně terminálu nebo konzoly), chceme automatizovat a zrychlit určité operace (pro často používané sledy příkazů napíšeme skript, ten vždy jen spustíme), hodí se také tehdy, když tatáž nastavení provádíme na více zařízeních, chceme, aby určité příkazy a programy spolupracovaly formou předávání vstupů a výstupů, nemůžeme najít v grafickém prostředí místo, kde se určitá věc nastavuje (v mnoha distribucích je grafické prostředí poněkud upraveno, navíc jsou výrazné rozdíly mezi KDE/GNOME/XFce/atd.), 1

10 1.1 TEXTOVÉ SHELLY A PŘÍKAZY 2 určitý program nepracuje v grafickém prostředí podle našich představ, máme alergii na grafická prostředí, atd. Když zadáváme příkazy, pracujeme vždy s určitým shellem. Shell je příkazový interpret, je to především program (rozhraní), který slouží ke spouštění jiných programů, a to především v textovém režimu. Pokud máme spuštěno grafické prostředí, dostaneme se do shellu spuštěním konzoly (obvykle je v menu tlačítka obdobného tlačítku Start ve Windows, závisí na používaném desktopovém prostředí) nebo spuštěním určitých programů (například xterm). Původní shell v Unixu byl Bourne Shell (vznikl roku 1978 a označoval se jednoduše sh), jehož autor je Stephen Bourne. O něco později (v době přepisu Unixu do jazyka C) vznikl jako alternativa C Shell (označoval se csh). Zatímco Bourne Shell byl určen spíše pro psaní skriptů a umožňoval lepší spolupráci programů (včetně směrování), C Shell hodně inspirovaný jazykem C se orientoval hlavně na interaktivní práci přímo v příkazovém řádku (například používání historie pomocí speciálních příkazů) a také přinesl pokročilejší správu úloh. V současné době se už nesetkáme přímo s Bourne Shellem a C Shellem, ale spíše s jejich potomky: 1 Toronto C Shell (tcsh) je rozšíření csh o další možnosti, například používání šipek při práci s historií příkazů, tcsh také odstranil některé chyby související s činností ve skriptu, které se vyskytovaly v csh, je obvykle nainstalován v adresáři /bin/tcsh nebo /usr/bin/tcsh nebo /usr/local/bin/tcsh (záleží na distribuci), Korn Shell (ksh) syntaxe příkazů odpovídá Bourne Shellu, ale jinak většinu vlastností přejal z tcsh, jde vlastně o hybrid shellů sh a tcsh, je nainstalován v adresáři /bin/ksh nebo /usr/bin/ksh, Bourne Again Shell (bash) je nejobvyklejším shellem v Linuxu a je velmi podobný ksh (je jednodušší, například oproti ksh neobsahuje podporu racionálních čísel a vícedimenzionálních polí), je nainstalován v /bin/bash nebo /usr/bin/bash nebo /usr/local/bin/bash, Debian Almquist Shell (dash) je potomkem shellu ash (Almquist Shell) ze systému FreeBSD, jak název napovídá, můžeme se s ním setkat u Debianu a jeho potomků (včetně Ubuntu); je podobný shellu bash, ale mírně osekaný (některé vlastnosti shellu bash nepodporuje) a rychlejší, Z Shell (zsh) je naopak vybavenější než bash, a to směrem k vědeckým výpočtům (je srovnatelný spíše s shellem ksh). V Linuxu je vždy (nebo téměř vždy) nainstalován shell bash, a kromě něho i několik dalších. Seznam použitelných shellů (těch, které máme k dispozici) je v souboru /etc/shells. Mezi shelly se přepínáme příkazem chsh (je to zkratka z CHange SHell). P 1 Pěkné porovnání shellů (dokonce včetně Příkazového řádku ve Windows) najdeme například na stránce of command shells.

11 1.1 TEXTOVÉ SHELLY A PŘÍKAZY 3 Příklad 1.1 Ukážeme si použití příkazu chsh. man chsh spustíme prohlížeč nápovědy pro příkaz chsh, zjistíme si syntaxi příkazu, tedy jaké parametry podporuje, program man ukončíme stiskem klávesy Q, chsh -l ( l jako list ) vypíše seznam shellů, které je možné si nastavit, tedy vypíše obsah souboru /etc/shells, chsh -s /bin/zsh právě jsme svůj login shell (tj. shell spouštěný při našem přihlašování) nastavili na Z Shell, změna se projeví bud po restartu konzoly nebo po odhlášení/přihlášení. Pokud je shell, který chceme takto zapnout, nainstalován, ale přitom není uveden v souboru /etc/shells, nebude to fungovat a zobrazí se chybové hlášení. Úpravou tohoto souboru může totiž administrátor zakázat používání těch shellů, které nepovažuje za bezpečné (prostě jejich řádky vymaže), resp. povolit pouze konkrétní shelly, které sám určí. Další možnou příčinou selhání příkazu je zadání nesprávné cesty k souboru shellu (jde přece o program), zde stačí zjistit, kde konkrétně je shell nainstalován. P Z grafického režimu (obvykle to bývá některé z desktopových prostředí KDE nebo GNOME) spustíme některý terminál nebo konzolu (například konsole nebo xterm program představující rozhraní pro zadávání příkazů, obvykle můžeme mít najednou spuštěno více shellů relací a přepínat se mezi nimi pomocí záložek). V KDE bývají terminály a konzole dosažitelné přes nabídku K, menu Terminály (případně K Spustit napíšeme konsole nebo jiný název terminálu či konzole). V moderních unixových systémech včetně Linuxu máme souborové manažery, kteří nám usnadňují práci především při operacích s adresáři a soubory. Jsou to například Midnight Commander (spouští se příkazem mc) pracující v konzoli (a tedy ve kterékoliv distribuci s jakýmkoliv grafickým prostředím), Konqueror v desktopovém prostředí KDE, Nautilus v desktopovém prostředí GNOME, atd Skripty Skripty (skriptové soubory) jsou textové spustitelné soubory, které pro své spuštění potřebují interpret (třeba některý shell). Soubory se skripty obvykle mívají bud příponu SH, a nebo jsou bez přípony (ale můžeme se setkat i s příponou TXT, je to celkem jedno). Každý skript je psán vždy pro určitý shell nebo programovací jazyk (například bash nebo perl) a v jiném nemusí fungovat. Proto často bývá na prvním řádku skriptu identifikace shellu. Tento řádek vždy začíná dvojicí znaků #!, pokud ovšem se ve skriptu nachází. Příklad 1.2 První řádek skriptu může vypadat třeba takto:

12 1.2 ZÁSTUPNÉ ZNAKY 4 #!/usr/bin/tcsh znamená, že skript má být interpretován shellem Toronto C Shell, #!/usr/bin/bash určuje skript s příkazy shellu Bourne Again Shell, #!/usr/bin/perl (adresa může být jiná, záleží na umístění spustitelného programu perl) je skript psaný v programovacím jazyce Perl. Aby bylo možné skript spouštět v textovém režimu napsáním jeho názvu, musí být označen jako spustitelný, tj. je třeba nastavit příznak x v přístupových oprávněních. V opačném případě musíme skript spouštět jako parametr interpretačního programu (například bash soubor.sh), ale i tak je vhodné tento soubor označit jako spustitelný nastavením příslušného příznaku Struktura příkazů Příkazy se skládají z těchto částí: název příkazu nebo případně název spustitelného souboru, který tady používáme jako příkaz, může obsahovat i cestu, v opačném případě je hledán v adresářích uvedených v příslušné proměnné prostředí (nehledá se v pracovním adresáři, proto když se právě tam nachází, píšeme./název příkazu), volby (přepínače) začínající obvykle znakem pomlčka, ve většině Unixových systémů je můžeme shrnout za jedinou pomlčku (bez mezer samozřejmě), pokud jsou jednopísmenné (volby delší než jedno písmeno musíme psát každou zvlášt, každá z nich bude mít vlastní pomlčku), volby obvykle řídí a upřesňují příkaz; existují i vícepísmenné volby (například velmi užitečná je volba --help), aby se odlišily od jednopísmenných, u některých příkazů začínají dvěma pomlčkami, argumenty nezačínají pomlčkou, obvykle příkazu říkají, se kterými daty má pracovat, například názvy souborů. Například u příkazu ls -la nejaky_adr je názvem řetězec ls, volby jsou l, a (jednopísmenné, proto je můžeme napsat za jedinou pomlčku), argument je adresář nejaky_adr. Interaktivní příkazy (komunikující s uživatelem, například filtry pro stránkování v textu) často pro své ukončení vyžadují stisknutí klávesy q. Terminál nebo konzolu lze ukončit příkazem exit nebo případně zavřením okna konzoly. Poznámka: Unixové systémy jsou case-sensitive, tedy rozlišují malá a velká písmenka, na což je třeba dbát nejen u zadávání názvů příkazů, ale i u názvů souborů a adresářů. P L

13 1.3 NÁPOVĚDA Zástupné znaky Také v Unixu používáme při práci se soubory a adresáři zástupné znaky, máme jich dokonce více než ve Windows. Jsou to: * jakýkoliv počet kterýchkoliv znaků, zde navíc bereme v úvahu, že přípona souboru a tečka před ní jsou součástí názvu souboru, a tedy * může reprezentovat i tečku,? kterýkoliv znak, a to právě jeden, včetně tečky v názvu, [znaky] jeden ze znaků uvedených v seznamu znaky, například [ABa] znamená, že na to místo lze dosadit jeden ze znaků A, B, a; pokud chceme reprezentovat delší sled znaků, můžeme to udělat takto: [A-Z] znamená všechna velká písmena,lze to kombinovat: [A-Za-z0-9] znamená písmeno nebo číslici, [ˆznaky] odpovídá jednomu znaku, který se liší od všech uvedených v závorce, například [ˆa-kA-K] znamená kterýkoliv znak kromě malých a velkých písmen v rozmezí od A do K, například písmeno M nebo některá číslice podmínku splňují, ~ domovský adresář, navíc sekvence ~uzivatel (bez mezery) je odkaz na domovský adresář uživatele s přihlašovacím jménem uzivatel, at se nachází kdekoliv. P 1.3 Nápověda Jak volat o pomoc Nápovědu k příkazům můžeme získat více způsoby: zobrazením manuálové stránky příkazu, a to příkazem man, takto lze bud zobrazit nápovědu ke konkrétnímu příkazu nebo pomocí klíčového slova zjistit, jak se hledaný příkaz nazývá, někdy je implementován příkaz apropos, který použijeme, když nevíme, jak se příkaz nazývá, příkaz whatis 2 naopak použijeme, když jsme narazili na příkaz (spustitelný soubor), ale nevíme, co provádí (vypíše se krátká informace o příkazu), příkaz info vypíše krátkou informaci o příkazu, v grafickém režimu v menu programů včetně terminálu případně přes tlačítko K (grafická nápověda je také spustitelná příkazem khelpcenter), existuje také příkaz xman, v Linuxu existují dokumenty HOWTO ( jak na to ), a to bud přímo v jednotlivých distribucích nebo na internetu, obsahují přímo rady, jak postupovat v určitých situacích, 2 Příkaz whatis používá vlastní databázi o příkazech. Tuto databázi je dobré občas aktualizovat, například po větší aktualizaci systému, což se provede příkazem makewhatis.

14 1.3 NÁPOVĚDA 6 obdobně jsou k nalezení dokumenty FAQ (Frequently Asked Questions) pro často pokládané otázky, ve Firefoxu jsme automaticky přesměrováni na manuálové stránky, například při zadání man chsh do adresního řádku (tam, kde bychom jinak zadali se nám automaticky zobrazí manuálová stránka příkazu chsh na některém serveru přímo určeném pro manuálové stránky. Na internetu je hodně stránek věnovaných shellu bash, například: (skripty) Manuálové stránky Nápověda k příkazům, konfiguračním souborům, skriptům a funkcím je v unixových systémech standardně k nalezení především v manuálových stránkách. Příkaz man je zkratkou z anglického slova manual a je obdobou windowsovského příkazu help, i když je mnohem komplexnější. Základní tvar příkazu je následující: man příkaz vypíše manuál (nápovědu) k zadanému příkazu Nápovědu k příkazu man můžeme zobrazit příkazem man man. Manuály k jednotlivým příkazům (ve skutečnosti existují i pro některé konfigurační soubory a další věci) jsou členěny do částí, každá část má určitý význam. Manuálová stránka obvykle obsahuje části uvedené v tabulce 1.1 (některé se nemusí vyskytovat, naopak jiné mohou být navíc). Příklad 1.3 Podíváme se na strukturu jedné z manuálových stránek. Otevře se automaticky pomocí stránkovače včetně zobrazení formátování (to zde neuvidíme). Po zadání příkazu man chsh se nám zobrazí tato manuálová stránka (vidíme ji také na obrázku 1.1): chsh(1) NAME chsh - change login shell SYNOPSIS chsh [-D binddn] [-P path] [-s shell] [-l] [-q] [-u] [-v] [user] DESCRIPTION chsh is used to change the user login shell. A normal user may only change the login shell for their own account, the super user may change the loggin shell for any account. M If a shell is not given on the command line, chsh operates in an

15 1.3 NÁPOVĚDA 7 Část NAME SYNOPSIS DESCRIPTION FILES OPTIONS EXAMPLES SEE ALSO DIAGNOSTICS BUGS COPYRIGHT SEE ALSO Význam Jméno příkazu Syntaxe příkazu, nepovinné parametry jsou uzavřeny do hranatých závorek, položky, mezi kterými si můžeme vybrat, jsou odděleny symbolem, položky, které se mohou opakovat, jsou ukončeny třemi tečkami Detailní popis příkazu Seznam systémových souborů, ke kterým má příkaz nějaký vztah (například je nějakým způsobem upravuje) Význam jednotlivých parametrů Příklady použití příkazu Odkazy na další manuálové stránky, ke kterým má tento příkaz nějaký vztah Význam chybových hlášení a návratové kódy příkazu Popis neočekávaného chování příkazu nebo kontakt, na který lze zaslat informaci o chybném chování programu licence, pod kterou je příkaz šířen odkazy na manuálové stránky souvisejících příkazů nebo souborů Tabulka 1.1: Části manuálových stránek interactive fashion, prompting the user with the current login shell. Enter the new value to change the field, or leave the line blank to use the current value. Enter none to remove the current value. The current value is displayed between a pair of [ ] marks. The only restrictions placed on the login shell is that toe command name must be listed in /etc/shells, unless the invoker is the superuser, and then any value may be added. An account with a restricted login shell may not change their login shell. This version of chsh is able to change the shell of local, NIS, NIS+ and LDAP accounts, if the permissions allow it. OPTIONS -D, --binddn binddn Use the Distinguished Name binddn to bind to the LDAP directory. The user will be prompted for a password for simple authentication. -s, --shell Specify your login shell.... FILES /etc/passwd - user account information /etc/shells - list of valid login shells SEE ALSO

16 1.3 NÁPOVĚDA 8 Obrázek 1.1: Výstup příkazu man chsh chfn(1), passwd(5), shells(5) AUTHOR Thorsten Kukuk <kukuk@suse.de> pwdutils February 2004 chsh(1) Část obsahující volby (options, přepínače) byla zkrácena. Manuálové stránky jsou sdružovány do sekcí, sekce obvyklé v Linuxu jsou v tabulce 1.2. Každá sekce sdružuje příkazy (ale také nápovědu ke konfiguračním souborům a funkcím), které mají něco společného, například sekce 1 obsahuje příkazy, které může používat i běžný uživatel, naproti tomu sekce 8 obsahuje příkazy určené pro administrátora (například roota). Užitečná (i pro běžného uživatele) je také sekce 5 obsahující formát konfiguračních

17 1.3 NÁPOVĚDA 9 souborů. Číslo sekce Obsah 0 Hlavičkové soubory (jazyka C), obvykle jsou k v adresáři /usr/include 1 Příkazy a systémové programy, které může používat i běžný uživatel 2 Služby jádra (volání jádra, systémová volání) a chybové (návratové) kódy 3 Dokumentace k systémovým knihovnám (dostupné funkce obsažené v knihovnách) 4 Speciální soubory v /dev 5 Formát konfiguračních souborů (včetně /etc/fstab) 6 Hry 7 Balíky maker, popis souborového systému, manuálů atd., nástroje pro práci s textem 8 Správa systému příkazy a nástroje používané rootem 9 Dokumentace k jádru n Nezařazené stránky Tabulka 1.2: Sekce manuálových stránek Příkaz man -s n příkaz vypíše manuálovou stránku příkazu v sekci číslo n (tentýž příkaz může být ve více sekcích, v každé je trochu jiný obsah manuálové stránky), bez tohoto parametru vypíše první nalezenou manuálovou stránku. Příkaz man -a příkaz vypíše všechny manuálové stránky příkazu (ze všech sekcí) Znám příkaz, chci vědět, k čemu slouží Pokud známe název příkazu a chceme zjistit, k čemu slouží a případně také jak se používá (parametry apod.), použijeme jeden z následujících příkazů: man příkaz zobrazí se manuálová stránka příkazu v programu man, info příkaz jedná se o dokumentaci GNU Info, což je hypertextový systém, whatis příkaz takto zjistíme, ve kterých manuálových stránkách jsou k nalezení podrobnější informace o příkazu, zobrazí se také krátký popis příkazu. Příklad 1.4 Po zadání příkazu man chsh získáme výstup podobný tomu, který vidíme na obrázku 1.1 na straně 8, zobrazila se manuálová stránka příkazu chsh. Pokud zadáme info chsh, ve skutečnosti získáme něco velmi podobného (naprosto stejný obsah, jen trochu jinak formátovaný), protože pro příkaz chsh neexistuje samostatná info stránka a bere se manuálová stránka.

18 1.3 NÁPOVĚDA 10 Jiná situace je však u používanějších příkazů, jako je například příkaz ls (to je obdoba příkazu dir ve Windows): jestliže zadáme man ls, získáme běžnou manuálovou stránku, která se především soustředí na vysvětlení funkce jednotlivých parametrů, po zadání info ls se zobrazí něco jiného info stránka soustřed ující se především na vysvětlení funkce samotného programu, oproti manuálové stránce je poněkud upovídanější, když zadáme whatis ls, získáme pouze krátkou informaci o určení příkazu, jde naopak o velmi stručnou informaci. Manuálová stránka příkazu ls (man ls) začíná takto (ve skutečnosti je mnohem delší): LS(1) User commands NAME ls - list directory contents SYNOPSIS ls [OPTION]... [FILE]... DESCRIPTION List information about the FILEs (the current directory by default). Sort entries alphabetically if none of -cftuvsux nor --sort. Mandatory arguments to long options are mandatory for short options too. OPTIONS -a, --all do not ignore entries starting with. -A, --almost-all do not list implied. and.. Zjistili jsme, že jde o příkaz, který vypisuje obsah adresáře, dále že v syntaxi jsou hned za názvem příkazu volby (options, přepínače) a pak následují názvy souborů. Souborů? No ano, přece víme, že v unixových systémech platí všechno je soubor, včetně adresářů. Ze stručného popisu (description) se dále dovíme, že pokud neuvedeme žádný soubor, vypíše se obsah pracovního adresáře, položky jsou řazeny abecedně (pokud neurčíme jinak přepínači). Následuje popis voleb (options). Je jich poměrně hodně, proto jsme výpis usekli. Zde na první pohled vidíme rozdíl mezi použitím malého a velkého písmene pokud napíšeme -a, budou vypisovány také položky začínající tečkou (z předchozího semestru již víme, že jde o skryté soubory), pokud však napíšeme -A, chování bude zdánlivě podobné (také budou vypisovány skryté soubory), ale nevypíšou se dva adresáře, které jsou také skryté (odkaz na nadřízený adresář a odkaz na sebe sama). Info stránka příkazu ls (info ls) začíná takto: File> coreutils.info, Node: ls invocation, Next: dir invocation, Up: Directory listing M M

19 1.3 NÁPOVĚDA ls : List directory contents ================================== The ls program lists information about files (of any type, including directories). Options and file arguments can be intermixed arbitrarily, as usual. For non-option command-line arguments that are directories, by default ls lists the contents of directories, not recursively, and ommitting files with names beginning with.. Fot other non-option arguments, by default ls lists just the file name. If no non-option argument is specified, ls operates on the current directory, acting as if it had been invoked with a single argument of..... V záhlaví info stránky se především dozvíme název info souboru, který právě čteme a jeho pozici ve struktuře (info stránky tvoří stromovou strukturu). Následujícím uzlem ve stromě je příkaz dir (platí pro OpenSUSE, obecně tento příkaz není v Linuxu ani jiných unixových systémech podporován), nadřízeným uzlem je skupina příkazů pro výpis adresářů. Dále zjistíme něco podobného jako v manuálové stránce, tedy že příkaz vypisuje informace o nejrůznějších souborech a je upřesněno, o jaké informace se vlastně jedná. Výchozím chováním je výpis obsahu adresářů, a to ne rekurzívně a bez skrytých souborů, standardně pouze jména souborů. Pro doplnění výstupem příkazu whatis ls je ls(1) - list directory contents Tento výpis je velmi krátký a jeho účelem je usnadnit orientaci narazíme na příkaz (nebo si na některý příkaz matně vzpomeneme) a chceme vědět, o co se vlastně jedná. Zjistili jsme, že tento příkaz je v sekci 1 (v manuálových stránkách) a slouží k výpisu obsahu adresáře. M Neznám příkaz Pokud neznáme název příkazu, ale napadají nás klíčová slova související s příkazem (slova, která by se mohla vyskytovat na manuálové stránce, nejlépe někde na jejím začátku ve stručném popisu příkazu), můžeme použít některý z následujících postupů, podle toho, který příkaz je nainstalován. man -k řetězec apropos řetězec výpis všech dostupných témat, ve kterých se nachází zadaný řetězec totéž apropos -s číslo řetězec určili jsme, že mají být prohledány pouze manuálové stránky v sekci zadané číslem

20 1.3 NÁPOVĚDA 12 Příklad 1.5 Nemůžeme si vzpomenout na název příkazu, který vypisuje obsah adresáře. Vyzkoušíme několik možností: man -k directory získáme seznam příkazů, které nějak souvisejí s adresáři, ale je jich opravdu hodně (několik stránek), takže vyzkoušíme něco jiného, man -k directory contents tak to je lepší, vypsalo se už jen pár příkazů, mezi kterými si určitě vybereme, apropos directory contents totéž, apropos -s 1 directory contents ještě lepší vypsaly se pouze příkazy patřící do sekce 1 Výsledný výpis: dir (1) - list directory contents ls (1) - list directory contents vdir (1) - list directory contents M (v různých distribucích Linuxu se výpis bude lišit). Užitečná může být také klávesa Tab. Pokud víme, jak příkaz začíná, ale nevíme jistě, jak dále pokračuje (angličtina :-), napíšeme začátek příkazu (nebo třeba názvu souboru, pro ty to taky funguje) a stiskneme klávesu Tab. Příklad 1.6 Vyzkoušíme automatické doplňování příkazů pomocí klávesy Tab. Víme, že příkaz začíná pravděpodobně písmeny wh, ale nevíme, jak dál. Napíšeme wh Tab Zobrazí se: whatis whereis which while who whoami whois M Úkoly 1. Zobrazte manuálovou stránku příkazu ls. Zjistěte, k čemu se tento příkaz používá, jaké lze zadat přepínače, co znamená přepínač -d a podívejte se, pod jakou licencí je příkaz šířen. Všimněte si, že za názvem příkazu v záhlaví stránky je řetězec (1), což znamená, že pracujete se stránkou ze sekce V předchozím úkolu jste zjistili, k čemu slouží přepínač -d. Vyzkoušejte tento přepínač na příkazu ls -dl /boot (tj. s přidáním parametru pro dlouhý výpis všech parametrů). C

21 1.4 PRÁCE S ADRESÁŘI A SOUBORY 13 Dále vyzkoušejte příkaz ls -dl ~ /boot (jsou zadány dva adresáře, z nichž první je váš domovský adresář). Jak tento příkaz s přepínačem -d použijete k vypsání informací o pracovním adresáři? 3. Zobrazte manuálovou stránku příkazu mount. Všimněte si čísla sekce, už to není 1, ale 8. Jaké typy příkazů patří do sekce 8? Tento příkaz slouží k připojování pamět ových médií. Jak vidíme, manuálová stránka je velmi dlouhá (všimněte si, že jsou odlišné parametry pro různé typy souborových systémů). Na konci stránky se také podívejte, na které další stránky s podobnými tématy je odkazováno. 4. Zjistěte, ve kterých manuálových stránkách se píše o souboru fstab (pozor, nezajímají nás pouze stránky s tímto názvem, ale obecněji stránky, na kterých se tento řetězec vyskytuje). 1.4 Práce s adresáři a soubory Adresáře Zde předpokládáme znalosti o adresářové struktuře z minulého semestru (předmět Praktikum z operačních systémů). Používané příkazy jsou pwd výpis názvu pracovního adresáře (zkratka z print working directory ) cd adresář změna aktivního adresáře (bez argumentu: přesun do domovského adresáře) cd podrizeny přesun do podřízeného adresáře podrizeny cd.. přesun do nadřízeného adresáře (pozor, před tečkami by měla být mezera) cd../.. přesun o dva adresáře nahoru, všimněte si, že pro oddělení adresářů na cestě (zde na cestě nahoru) používáme obyčejné lomítko, nikoliv opačné cd ~ přesun do našeho domovského adresáře (například pokud jsme přihlášeni jako uživatel hanicka, takto se přesuneme do adresáře /home/hanicka) cd /home/novak přesun do domovského adresáře uživatele novak cd ~novak totéž co předchozí, také se přesuneme do domovského adresáře uživatele novak mkdir adresář vytvoření nového adresáře rmdir adresář zrušení prázdného adresáře (před použitím příkazu musíme z adresáře odstranit všechny položky

22 1.4 PRÁCE S ADRESÁŘI A SOUBORY 14 ls [volby] [soubor] výpis obsahu adresáře (adresářů), některé volby: -l provádí dlouhý výpis (i s atributy včetně práv a vlastníka), -a vypíše také skryté soubory (které začínají tečkou, včetně. a..), --sort=size seřadí položky podle velikosti místo podle názvu, také lze seřadit například podle času (time), přípony (extension) apod. -r seřadí v opačném pořadí (reverse), -R provede příkaz rekurzívně (recursively), atd. (parametrů je velmi mnoho) Argumentem příkazu může být také název souboru (resp. adresáře), který chceme vypsat. Příklad 1.7 Pro ls -l může být výstup -rwxr-x--- 2 novakj elita Oct sezn.txt -rwxr-x--- 1 novakj elita Jan moje poznamky drwxr-xr-- 1 novakj users 150 Feb adr/ nebo drwxr-xr-x 4 uzivatel users 4096 úno 9 00:10 Desktop/ drwxr-xr-x 4 uzivatel users 4096 lis 28 22:31 Documents/ -rw-r--r-- 1 uzivatel users 150 lis 29 14:23 Pevný disk C -rw-rw-r-- 1 uzivatel users úno 2 00:23 pvysl.pdf Výchozí chování tohoto příkazu (stejně jako jiných) se dá nastavit (budeme se učit později). Můžeme určit nejen to, které položky budou vypisovány a způsob řazení, ale také například styl výpisu času a další parametry. Význam jednotlivých sloupců známe na začátku řádku je typ souboru, přístupová oprávnění, následuje počet pevných odkazů na soubor, vlastník, skupina, velikost, čas poslední změny a konečně název souboru. Úkoly 1. Pokud nejste ve svém pracovním adresáři, přejděte do něj. Vytvořte podadresář test. 2. Přejděte do adresáře test a pro jistotu vypište název pracovního adresáře, abyste si ověřili, kde konkrétně v adresářové struktuře jste. Vytvořte podadresář vnoreny. 3. Přesuňte se do svého domovského adresáře a vypište jeho obsah tak, aby se vypsaly i skryté soubory a aby byl použit dlouhý (široký) výpis (včetně vlastností položek). Vyzkoušejte také rekurzi, porovnejte výpis těchto příkazů: ls -lr C

23 1.4 PRÁCE S ADRESÁŘI A SOUBORY 15 ls -ar ls * ls -l * ls -a * 4. Smažte adresáře, které jste vytvořili v předchozích úkolech test a vnoreny. Nezapomeňte, že zatím umíme smazat pouze prázdný adresář Soubory Protože v unixových souborech platí, že vše je soubor, téměř všechny dále uvedené příkazy lze použít také na adresáře. file soubor(-y) pokusí se zjistit vnitřní formát souboru (jestli se jedná o adersář, textový soubor pro určitou znakovou sadu, PNG nebo jiný obrázek, PDF,..., příkaz je samozřejmě použitelný i na soubory bez přípony nebo s nic neříkající příponou, pracuje především s obsahem souboru (to je velmi důležité, proto na to znovu upozorníme: v Linuxu není ani tak důležitá přípona, jako spíše skutečný obsah souboru, což je rozhodně bezpečnější) cp soubor1 soubor2 kopírování prvního souboru do druhého cp -a /Documents /zaloha provede archivaci zvoleného adresáře, tedy kopíruje rekurzívně se zachováním atributů souborů (například vlastník nebo časové údaje) cp -ur /Documents /zaloha provede rekurzivní update (jen soubory, které se od poslední zálohy změnily) cp -sr *.png./obrazkypng v podadresáři obrazkypng pracovního adresáře vytvoří symbolické odkazy na všechny soubory s příponou PNG mv s1 s2 přejmenování nebo přesun souboru s1 na s2 (takto můžeme přejmenovávat či přesouvat i adresáře, nejen běžné soubory) rm soubor odstranění souboru rm soubor odstraní zadaný soubor rm -fr adresář rekurzívně odstraní vše v zadaném adresáři, a to bez upozorňování (force) cat soubor vypsání obsahu textového souboru

24 1.4 PRÁCE S ADRESÁŘI A SOUBORY 16 cat s1 s2 s3 > s4 soubory s1, s2 a s3 přečte a zapíše do souboru s4 jejich obsah (něco podobného jsme měli ve Windows u kopírování z konzoly) head -n soubor vypíše prvních n řádků souboru, tedy jakési záhlaví, podle začátku můžeme orientačně odhadnout zbývající obsah souboru head /etc/sensors.conf zajímá nás, k čemu je asi tento soubor; některé konfigurační soubory mají na svém začátku v poznámce stručný popis, ten takto zobrazíme ls -la head -1 zobrazíme pouze první řádek výpisu předchozího příkazu (trochu předbíháme, ale princip roury už známe z Windows); na prvním řádku je totiž zobrazen celkový počet zobrazených položek, tedy zjistíme počet souborů včetně adresářů v pracovním adresáři tail -n soubor vypíše posledních n řádků souboru, používá se při procházení log souborů, kde jsou nové záznamy přidávány právě na konec: tail -8 /var/vysledky.log zobrazí posledních 8 řádků zadaného souboru cmp s1 s2 porovnání souborů s1 a s2, po nalezení rozdílu se běh ukončí diff s1 s2 porovnání souborů, oproti předchozímu příkazu tento prochází celé soubory a pokouší se najít odlišnosti diff -iebw soubor1 soubor2 díky všem čtyřem použitým parametrům jsou ignorovány odlišnosti ve velkých/malých písmenech, tabulátorech, prázdných řádcích a mezerách touch soubor soubor neotevře, ale změní datum a čas posledního přístupu na aktuální údaje ( dotkne se souboru), pokud soubor neexistuje, vytvoří ho tar program pro archivaci souborů gzip ZIP a gz soubory, používá se také kombinace tohoto a předchozího s příponou.tar.gz compress, uncompress komprese a dekomprese souboru, soubory s příponou.z Ve většině příkazů můžeme zadat i více souborů, a to třeba pomocí masky. Pak se provedou požadované operace pro všechny tyto soubory.

25 1.5 PŘESMĚROVÁNÍ A FILTRY Pevné a symbolické odkazy Z předchozího semestru víme, jaký je rozdíl mezi pevnými a symbolickými odkazy na soubor. Ted si ukážeme, jak se s těmito odkazy pracuje v textovém režimu. ln zdroj [cíl cílový_adresář] vytvoření pevného odkazu cíl na zdroj (nebo v cílovém adresáři), ve výpisu pomocí ls se vytvořený odkaz projeví zvýšením čísla počtu pevných odkazů za přístupovými právy souboru ln /adr1/adr2/soub.pdf. vytvoří pevný odkaz na zadaný soubor v pracovním adresáři (to je ta tečka na konci) ln prvni.txt druhy.txt treti.txt /home/uzivatel vytvoří pevné odkazy na všechny zadané soubory v domovském adresáři uživatele s přihlašovacím jménem uzivatel, vytvořené pevné odkazy jsou v pracovním adresáři ln prvni.txt druhy.txt treti.txt provede totéž (je to jiný způsob adresace domovského adresáře tohoto uživatele) ln -s puvodni [cil] vytvoření symbolického odkazu, ve výpisu pomocí ls se vytvořený odkaz projeví typem souboru l (v prvním sloupci výpisu) Úkoly ln -s /etc/x11/xinit/xinitrc.xfce /.xinitrc změní desktopové prostředí, které je spouštěné automaticky po startu X Window na XFce (soubor skript.xinitrc v domovském adresáři uživatele určuje, který soubor spouští desktopové prostředí nebo správce oken pro tohoto uživatele, soubor xinitrc.xfce je spouštěcí soubor pro XFce, případně to může být textový soubor, ve kterém je spouštěcí příkaz pro toto prostředí či správce oken) 1. Vytvořte ve svém domovském adresáři, v podadresáři documents (nebo dokumenty) symbolický odkaz na soubor /etc/fstab (pod původním názvem), dále symbolický odkaz na tentýž soubor s názvem fst. 2. Pak zde vytvořte pevný odkaz na soubor.bashrc ze svého domovského adresáře (~/.bashrc) pod názvem bashrc (bez tečky). 3. Vypište obsah svého adresáře documents v rozšířené formě, abyste viděli označení jednotlivých položek. C 1.5 Přesměrování a filtry Směrování a deskriptory Také v Unixu existuje standardní vstup, výstup a chybový výstup. Symboly <, >, >>,, & pro přesměrování fungují jako ve Windows. Programy, které přes roury přijímají vstupy

26 1.5 PŘESMĚROVÁNÍ A FILTRY 18 a dokážou svůj výstup také poslat do roury, se nazývají filtry. Pomocí přesměrování je možné také oklikou vytvořit nový soubor, například zadáme příkaz cat > vysl.txt, dále píšeme řádky textu (obsah souboru) a ukončíme klávesovou kombinací Ctrl+D (v unixových systémech je to znak konce souboru). Přesměrování chybového výstupu je trochu složitější. Používáme při něm popisovač souboru, který se píše vždy nalevo od symbolu přesměrování. Některá zařízení mají pro tento popisovač přiřazeno číslo (jako ve Windows), nás zajímá 0... STDIN 1... STDOUT 2... STDERR Deskriptor (popisovač) vstupu a výstupu je vlastně ukazatel na místo, odkud se má brát vstup nebo kam se má posílat výstup. Deskriptorem může být soubor nebo zařízení, používáme také číselné označení pro momentální vstup (0), momentální výstup (1) a momentální chybový výstup (2). S číselným označením se pracuje podle tabulky 1.3. P Směrování Význam i> soubor přesměrování výstupu původně směrovaného na deskriptor i do souboru i>> soubor připojení výstupu místo na deskriptor i do souboru <&i vstup je přesměrován z deskriptoru i i<&j vstup je směrován místo z deskriptoru i z deskriptoru j >&i výstup je přesměrován do deskriptoru i i>&j do výstupního deskriptoru i je přiřazen deskriptor j Tabulka 1.3: Práce s deskriptory Příklad 1.8 Následující dvojice příkazů jsou ekvivalentní: ls -la > soubor ls -la 1> soubor sort < soubor sort 0< soubor (je důležité, aby mezi deskriptorem a směrovacím symbolem nebyla mezera) Přesměrujeme chybový výstup prohledávání adresáře /var na zařízení null, tedy do koše : find /var -name * -print 2> /dev/null V příkladu jsme viděli využití zařízení /dev/null. Jedná se o odpatkový koš ve stejném významu, v jakém známe zařízení NUL ve Windows (pozor dvě písmena L oproti jed-

27 1.5 PŘESMĚROVÁNÍ A FILTRY 19 nomu, navíc v unixových systémech se zařízení píšou obvykle malými písmeny). Můžeme používat například tato zařízení: /dev/null výstupní zařízení pro odstranění výpisů (odpadkový koš) /dev/random vstupní zařízení pro náhodná čísla /dev/urandom totéž /dev/zero vstupní zařízení generující nuly /dev/tty vstupní zařízení, které znamená terminál (z pohledu uživatele prostě klávesnice) /dev/lp0 výstupní zařízení představující tiskárnu Pokud obvykle výstupní zařízení /dev/null použijeme jako vstupní soubor (například v příkazu cat /dev/null > soubor výsledný soubor je prázdný (nebo pokud neexistoval, vytvoří se prázdný soubor). Příklad 1.9 Ukázky přesměrování deskriptorů: ls -la >& cely_vystup.log přesměrujeme chybový výstup na stejné místo jako standardní výstup, tj. do zadaného souboru (jinými slovy, standardní i chybový výstup budou v tomto souboru) ls /adr 1>soubor 2>&1 přesměruje standardní výstup do souboru a standardní chybový výstup do deskriptoru, který je momentálně pod &1, tedy také do souboru ls /adr 2>&1 1>soubor přesměruje chybový výstup na původní výstup a potom výstup na zadaný soubor (všimněte si změny pořadí směrovacích parametrů) Některé kombinace se mohou zdát nesmyslné, ale mějme na paměti, že přesměrování deskriptorů platí pro celou úlohu (pod tím si zatím můžeme představit posloupnost příkazů propojených rourami) a tedy hodnoty deskriptorů putují postupně celou rourou doprava Filtry Co je to filtr, už víme. Podíváme se na několik nejdůležitějších programů, které mohou pracovat jako filtry. sort [options soubor(-y)] setřídí řádky textového souboru sort -u soubor pokud narazí na dva stejné řádky, v setříděném výstupu bude pouze jeden z nich (vynechává duplicitní řádky)

28 1.5 PŘESMĚROVÁNÍ A FILTRY 20 sort -r soubor reverzní třídění (setřídí v opačném pořadí) sort < souborzdroj > souborcil program získal svůj vstup ze souboru směrováním, podobně výstup je směrován do dalšího souboru cat soubor sort získání vstupu přes rouru, příkaz používáme jako filtr wc [přepínače] soubory příkaz počítající počet řádků, slov a bytů souboru, používáme přepínače -c (vypíše počet bytů souboru včetně formátovacích jako je konec řádku), -m (počet znaků v souboru), -w (počet slov řetězců oddelených bílými znaky), -l (počet řádků, ve skutečnosti počet symbolů konec řádku), -L (počet znaků v nejdelším řádku). wc -m soubor vypíše počet znaků souboru wc -c soubor vypíše počet B (oktetů) souboru, což není úplně totéž jako počet znaků (některé znakové sady kódují znaky do více než jednoho B) wc -l soubor vypíše počet řádků (lines) souboru wc -w soubor vypíše počet slov (tj. řetězců oddělených netisknutými znaky, třeba mezerami, tabulátory, konci řádků) wc -L soubor (pozor, velké písmeno) vypíše délku nejdelšího řádku, tedy šířku souboru wc -mclwl soubor vypíše všechny výše uvedené údaje; ale pozor, údaje nejsou nijak označeny (vypíše se prostě řada čísel), pořadí není dáno pořadím parametrů v příkazu, ale je to řádků slov oktetů znaků délka_řádku wc -c soubor1 soubor2 soubor3 vypíše požadovaný údaj postupně pro všechny zadané soubory ls -la wc -l zjistíme počet položek včetně skrytých v pracovním adresáři (vypíše se pouze číslo) Tento příkaz dokáže také načíst názvy souborů, které má zpracovávat, ze zadaného souboru. pg soubor stránkování souboru, jde o jeden z nejstarších a nejjednodušších stránkovacích filtrů more soubor stránkování souboru more -číslo soubor můžeme zadat počet řádků na obrazovce, po kterých se budeme pohybovat při stránkování (při přechodu na další stránku se vždy posuneme o toto číslo) more -s soubor více prázdných řádků za sebou zobrazí jako jediný prázdný řádek (squeeze multiple blank lines into one) more +číslo soubor zobrazování začne až od řádku s tímto číslem less soubor další stránkovací filtr, který je funkčně podobný filtru more, ale nabízí mnohem rozsáhlejší možnosti ovládání včetně používání kurzorových kláves.

29 1.5 PŘESMĚROVÁNÍ A FILTRY 21 Ve většině linuxových distribucí se v programu man interně používá právě stránkovací filtr less. Dalším stránkovacím filtrem je pg, ten je pro změnu značně jednodušší. Některé z dříve probíraných příkazů se také dají použít jako filtry, například příkaz ls -la head -10 zobrazí pouze prvních 10 řádků výpisu prvního příkazu. Na další typ filtrů, vyhledávací, se podíváme v samostatné sekci. Nejpoužívanějším vyhledávacím filtrem je grep. Příklad 1.10 Stránkovací filtry vypisují svůj vstup po stránkách. Například ls -l pg, ls -l more, ls -l less Ovládání filtru pg: Enter další stránka +, další stránka, předchozí stránka n přechod na stránku n (číslo) $ přechod na poslední stránku q ukončení Ovládání filtru more: Mezerník Enter další stránka další řádek? vypíše se nápověda k ovládání interaktivního filtru q ukončení Kromě toho má tento filtr další možnosti ovládání, které vycházejí z používání textového editoru vi. Podporuje například odskoky v textu, vyhledávání, přeskoky mezi soubory, má také vlastní příkazový prompt. Úkoly 1. Vytvořte soubor prvni s jakýmkoliv obsahem. Pak tento soubor setřid te, setříděný výstup přesměrujte do souboru druhy. 2. Vypište obsah adresáře /dev včetně skrytých souborů, a to i s vlastnostmi položek (tj. široký výpis), použijte některý stránkovací filtr. 3. Spočítejte řádky předchozího výpisu (tj. zjistěte, kolik položek je v adresáři /dev). 4. Zjistěte délku souboru.bashrc ve vašem domovském adresáři. 5. Zjistěte počet všech uživatelů definovaných v systému (nápověda: jsou uloženi v souboru /etc/passwd, každý záznam na samostatném řádku). C R

30 1.5 PŘESMĚROVÁNÍ A FILTRY Prohledávání K prohledávání adresářové struktury (hledání souborů) používáme příkaz find, k prohledávání obsahu souborů zase grep. Program grep lze použít také k nalezení názvu souboru v zadaném adresáři stačí na vstup programu poslat výpis adresáře. find prohledávání adresářové struktury, hledáme soubory (a adresáře) se zadaným názvem nebo jinými parametry, také poskytuje možnost omezeného zpracování souborů nebo ovlivňování formátu vlastního výstupu find *.txt -print vypíše všechny soubory se zadanou příponou v pracovním adresáři find -name *.txt -print vypíše všechny soubory se zadanou příponou rekurzívně (apostrofy jsou nutné!) find /usr -name soubor -print hledá soubor v adresáři (lze použít i jednoduché regulární výrazy), přepínač -print způsobí výpis úplného jména (prohledáváme adresář /usr), pokud místo -name napíšeme -iname, nerozlišují se malá a velká písmena find -user uzivatel -print hledá soubor vlastníka uzivatel (prohledáváme pracovní adresář) find -uid name prac* -print hledáme soubor (rekurzívně), jehož název začíná zadaným řetězcem a jeho vlastník je uživatel se zadaným UID (lze také zadat GID, parametr -gid) find -iname desk* -print vypíše vše v pracovním adresáři a jeho podadresářích, co začíná řetězcem desk bez rozlišování malých a velkých písmen find -print find -mtime 2 -print hledáme soubor, který byl modifikován (modified) naposledy před právě 2 dny (přesněji před 2*24 hodinami) find -mtime +2 -print hledáme soubor, který byl modifikován (modified) naposledy před více než 2 dny find -mtime -2 -print hledáme soubor, který byl modifikován (modified) naposledy před méně než 2 dny find -atime 3 -print k souboru bylo přistupováno (accessed) naposledy před 3 dny; obecně: můžeme vyhledávat vše, co bylo modifikováno (m), přistupováno (a) nebo měněno (c, change) v zadané době, zde jde o dny, ale existují volby i pro minuty find -type d -size +10k -print vypíšou se soubory typu adresář (d), jejichž velikost je více než 10 kb find -type f -size -2M -print vypíšou se běžné soubory (f), jejichž velikost je méně než 2 MB (jako typ souboru je možné použít d pro adresář, f pro běžný soubor, c pro znakové zařízení, b pro blokové zařízení, p pro pojmenovanou rouru, l pro symbolický odkaz a s pro socket)

31 1.5 PŘESMĚROVÁNÍ A FILTRY 23 find -perm /u+w,g+w -print chceme vypsat celé názvy souborů, v jejichž přístupových oprávněních je právo zápisu pro uživatele A/NEBO právo zápisu pro skupinu find -perm /u+w,g+w -print chceme vypsat celé názvy souborů, v jejichž přístupových oprávněních je právo zápisu pro uživatele A/NEBO právo zápisu pro skupinu find -perm -u+w,g+w -print chceme vypsat celé názvy souborů, v jejichž přístupových oprávněních je právo zápisu pro uživatele A ZÁROVEŇ právo zápisu pro skupinu find / -perm print vypíše celé názvy souborů (rekurzívně v kořenovém adresáři), které mají nastaven SUID bit (vzpomeňte si z předchozího semestru, co to znamená), SUID, SGID a Sticky bity se dají zadat pouze zadáním číselného módu souboru find / \( -perm o -perm \) -type f -exec ls -la{} \; ted je příkaz o něco složitější; všímáme si všech souborů s nastaveným SUID nebo SGID bitem (takto zapisujeme disjunkci, závorky jsou nutné), má jít o běžné soubory (včetně spustitelných, ne adresáře), na konci je místo obyčejného výpisu volba na spuštění příkazu, v jehož výstupu zjistíme informace o souboru grep [přepínače] reg_výraz [soubor...] pro změnu prohledává textové soubory; vypíše řádky textového souboru, které obsahují zadaný řetězec, řetězec je zadáván jako regulární výraz, někt. přepínače: -i nerozlišuje malá a velká písmena -l pouze vypíše názvy souborů, ve kterých nalezl shodu -n vypíše také číslo řádku -r rekurzívně zpracovává i podadresáře -o vypíše jen nalezený řetězec, ne celý řádek -c v souborech pouze spočítá výskyty nalezeného řetězce V regulárním výrazu můžeme používat symboly shrnuté v tabulce 1.4. Posix sekvence jsou jakési zkratky pro konkrétní typy znaků. Například místo 0-9, můžeme napsat posix sekvenci [:digit:]. Další možnosti najdeme v tabulce 1.5. Protože jsou posix sekvence uzavřeny do hranatých závorek, pak při použití v regulárním výrazu jsou tyto závorky zdvojeny vnitřní patří posix sekvenci, vnější uzavírají množinu, ze které se vybírá prvek. Příklad 1.11 Ukážeme si použití příkazu grep. grep -i vypis *.txt hledáme v souborech s příponou.txt slovo vypis bez rozlišování malých a velkých písmen

32 1.5 PŘESMĚROVÁNÍ A FILTRY 24 Prvek Význam. Libovolný znak? Nula nebo jeden výskyt předcházejícího řetězce * Nula nebo více výskytů předcházejícího řetězce + Jeden nebo více výskytů předcházejícího řetězce {m} m opakování předcházejícího řetězce {m,n} m až n opakování předcházejícího řetězce {m,} m nebo více opakování předcházejícího řetězce ˆ Začátek řádku $ Konec řádku [třída] Jakýkoli (jeden) znak z množiny v závorkách [ˆtřída] Jakýkoli znak mimo prvky množiny [x-y] Jakékoli znaky v daném rozsahu (jeden) r1 r2 logické nebo bud řetězec r1, nebo řetězec r2 Tabulka 1.4: Regulární výrazy v příkazu grep grep -il vypis *.txt hledáme v souborech s příponou.txt slovo vypis bez rozlišování malých a velkých písmen, pouze vypíše názvy souborů, ve kterých se toto slovo nachází grep -cr #include.*\.[hc] *.c u každého souboru s příponou.c vypíše počet vkládaných souborů s příponou.h nebo.c, a protože tečka je významový znak (určuje jeden jakýkoliv symbol), musíme před ni dát zpětné lomítko, aby byla brána jako součást řetězce grep -cr Dear \(Mr. Ms. Miss\) *.txt chceme počet anglických oslovení přes všechny soubory se zadanou příponou rekurzívně v podadresářích pracovního adresáře grep [0-9]\{6\}/[0-9]\{3,4\} soubor.txt v zadaném souboru hledáme rodná čísla ve tvaru /1234 nejdřív 6 číslic, pak lomítko a tři nebo čtyři číslice; jinak: grep [[:digit:]]\{6\}/[[:digit:]]\{3,4\} soubor.txt grep \([[:digit:]]\{1,3\}\)\{4\} soubor.log v zadaném souboru hledáme IP adresy ve tvaru čtyři skupiny číslic, v každé skupině 1 až 3 číslice; jinak: grep \([0-9]\{1,3\}\)\{4\} soubor.log V příkazech si můžeme povšimnout, že je nutno rozlišit vyhledávané znaky a metaznaky, které v regulárním výrazu slouží k upřesnění vyhledávacího řetězce (například v posledním příkazu kulaté závorky).

33 1.5 PŘESMĚROVÁNÍ A FILTRY 25 Sekvence Význam [:digit:] číslice [:xdigit:] hexadecimální číslice [:alpha:] písmena [:alnum:] písmena a číslice [:lower:] malá písmena [:upper:] velká písmena [:blank:] mezera a tabulátor [:space:] prázdné znaky (mezera, tabulátor, konec řádku,... ) [:graph:] viditelné znaky [:print:] viditelné znaky a mezera Tabulka 1.5: Posix sekvence při vyhledávání Program grep je pružnější než find (už pro rozsáhlé možnosti regulárních výrazů), proto je často používán nejen k prohledávání textových souborů, ale také k prohledávání struktury adresářů v kombinaci s příkazem ls. Příklad 1.12 Ukážeme si možnosti prohledávání adresářové struktury příkazem grep: ls -la grep -ic ˆ- vypíše počet běžných souborů v pracovním adresáři ls -la grep ˆ-..x vypíše všechny běžné soubory (řádek začíná pomlčkou), které jsou spustitelné (vlastník má právo spouštění) Příklad 1.13 Ukážeme si, jakým způsobem vypíšeme login shell některého uživatele. Předpokládejme, že chceme znát shell uživatele novak. Pak zadáme: cat /etc/passwd grep ˆnovak: cut -d : -f 7 Vypadá to trochu zvláštně. V koloně (rouře) je první příkaz cat, který na svůj výstup pošle obsah souboru /etc/passwd, což je soubor se seznamem uživatelů a jejich parametrů. Další na řadě je příkaz grep, který vybere pouze řádek obsahující na svém začátku jméno hledaného uživatele. Třetím příkazem v koloně je cut (pozor, neplést si s cat), který usekne řádek a zobrazí pouze jeho konec. Jeho první volba, -d, stanoví dvojtečku na oddělovač sloupců. Druhý parametr stanoví, že chceme pouze sedmé pole v pořadí (pole jsou oddělena oddělovačem zadaným v předchozí volbě).

34 1.5 PŘESMĚROVÁNÍ A FILTRY 26 Může se stát, že sice víme, jak se příkaz nazývá a jaké má parametry, a taky je jasné, že je nainstalován, ale přesto ho nelze spustit. Může to být tím, že cesta k tomuto příkazu není zahrnuta v proměnné obsahující cesty ke spustitelným souborům. Pak je možné spustit příkaz s absolutní cestou, ale tu musíme předem zjistit. K tomu slouží příkaz whereis. Příklad 1.14 Zjistíme cesty k některým příkazům. whereis ls zobrazí cestu k příkazu ls whereis passwd zobrazí celkem hodně cest k různým souborům, které se takto nazývají; hned první vypsaný řetězec je správný, tedy zjistíme, že příkaz lze spustit s absolutní cestou /usr/bin/passwd (nebo jinak, může se lišit v různých unixových systémech), vypsal se také stejnojmenný konfigurační soubor v adresáři /etc whereis shutdown příkaz na vypnutí (restart apod.) systému najdeme zjevně v adresáři /sbin, protože na serverech ho typicky může používat pouze root Úkoly 1. Ve výpisu obsahu svého domovského adresáře najděte všechny položky, jejichž název obsahuje řetězec rc. 2. Najděte ve svém domovském adresáři všechny soubory, které obsahují řetězec (dvojznak) #!. 3. Vypište počet podadresářů ve svém domovském adresáři. 4. Vypište počet všech běžných souborů ze svého domovského adresáře, které jsou skryté (začínají tečkou). 5. Vypište seznam všech symbolických odkazů ve svém domovském adresáři. 6. Sestavte příkaz, který prohledá systém a najde všechny soubory větší než 1024 MB, nechte zobrazit vlastnosti souboru (abyste zjistili vlastníky těchto souborů), případně můžete z řádků vyfiltrovat pouze údaje o vlastníkovi a názvu souboru. C Automatické zpracování Hromadné změny v obsahu souboru lze provádět více různými programy. Z nejznámějších jsou sed (Stream Editor) a awk, kde sed má jednodušší syntaxi, která dovoluje například vymazávání vzorů odpovídajících regulárnímu výrazu nebo jejich nahrazování jinými vzory, program awk je již mnohem komplexnější a jde vlastně o programovací jazyk hodně podobný jazyku C. Zde si ukážeme pouze program sed. Základní syntaxe:

35 1.5 PŘESMĚROVÁNÍ A FILTRY 27 sed [přepínače] [skript] [vstupní_soubor] zpracování výrazů v textovém souboru, některé přepínače: -e řetězec skript k provedení (ne soubor, ale řetězec!) -f soubor soubor se skriptem k provedení Skript má formu ap, kde a je adresa ve zpracovávaném souboru a p je příkaz, který se na daném místě má provést. Pro zadání adresy a příkazu platí dále nastíněná pravidla. Adresy mohou být: (bez adresy) příkaz se použije na všechny řádky číslo číslo řádku, který se má zpracovat číslo~krok všechny řádky od řádku s daným číslem s násobkem daným krokem (tj. číslo + i*krok), například 1~2 budou všechny liché řádky $ poslední řádek vstupu /regulární_výraz/ řádky odpovídající regulárnímu výrazu, lomítka jsou nutná, uvnitř používáme vše, co u grep, ale před některé významové znaky dáváme \ (\+, \?, \{...}, \ ) Pokud následuje I, nerozlišují se malá a velká písmena adresa1,adresa2 adresa,+n Příkazy mají tuto formu: d vymaž nalezený vzor všechny řádky v rozmezí adres všech n řádků od zadané adresy p vypiš (vytiskni) nalezený vzor na výstup s/co/čím/přepínače určeným přepínači: (lomítka jsou součástí výrazu) nahrad co čím, a to způsobem g nahrad všechny výskyty číslo nahrad jen výskyt s pořadím číslo i nerozlišuj malá a velká písmena Příklad 1.15 Na několika příkladech si ukážeme použití programu sed: sed -e 1,5d soubor.txt odstraní ze zadaného souboru první až pátý řádek sed -e s/<[ˆ>]*>//g *.html ze všech html souborů v daném adresáři odstraní všechny tagy <...> (vnitřní část zajišt uje, že pokud je na řádku více tagů, bude text mezi nimi zachován), dvě lomítka za sebou jsou nutná, protože mezi nimi se vlastně nachází prázdný řetězec čím g znamená nahradit všechny výskyty

36 1.6 MOŽNOSTI VYTVOŘENÍ NOVÉHO SOUBORU 28 cat soubor.txt sed -e s/\&/\&/g sed -e s/</\</g sed -e s/>/\>/g > soubor.html usnadní převod textového souboru do html formy tím, že všechny symboly & nahradí patřičným ekvivalentem v HTML kódu, totéž udělá také se znaménky < a > Příklad 1.16 Nalezené části výrazu jsou zapamatovány a přístupny pod \1, \2, atd., ukážeme si na příkladu dávkové změny přípony HTM na HTML: ls *.htm sed -e s/\(.*\)\.htm/mv \1.htm \1.html/ příkaz ls vypíše obsah adresáře (jako dir ve Windows) podle zadaného vzoru všechny soubory s příponou htm, ve skriptu použijeme příkaz s/co/čím/přepínače, reg. výraz pro co znamená nějaké znaky (tj. \(.*\)) následované tečkou (\.) a původní příponou, provede se volání příkazu mv, který přejmenuje soubory s příponou HTM na tytéž soubory, ale s příponou HTML (část před příponou je zapamatována v \1). Úkoly 1. Odhadněte, co bude výstupem těchto příkazů (domovský adresář je ): ls -la sed -e s/r--/---/g ls -la sed -e /ˆd/d ls -la sed -e s/ˆ[rwxdl-]*/t prava/g 2. Napište příkaz podobný příkazům v předchozím úkolu, který by v uvedeném výpisu smazal vše, co se nachází za poslední tečkou na řádku (v sekci o regulárních výrazech pro vyhledávání si najděte způsob reprezentace konce řádku). C 1.6 Možnosti vytvoření nového souboru V předchozím textu jsme se setkali s několika možnostmi vytvoření nového souboru, některé z nich dovolují zároveň do souboru něco uložit. Takže postupně: kopírováním a směrováním do souboru touch soubor O

37 1.7 DALŠÍ PŘÍKAZY 29 cat /dev/null > soubor cat > soubor, napíšeme pár řádků, pak stiskneme Ctrl+D S posledním uvedeným způsobem jsme se setkali i u Windows (použití příkazu type v kombinaci se vstupem CON). V Linuxu můžeme vytvořit zcela ekvivalentní příkaz: cat /dev/tty > soubor nebo cat < /dev/tty > soubor ale proč bychom to dělali, když příkaz cat dokáže pracovat i interaktivně (proto můžeme vynechat zadání vstupu jako konzoly). Nicméně, je to možné. Pokud si nemůžeme zapamatovat ukončující sekvenci Ctrl+D, která představuje P konec souboru, máme možnost použít tzv. vložené soubory (here documents). Je to (téměř) totéž, jen navíc stanovíme ukončující sekvenci. Příklad 1.17 Vytvoříme nový soubor pomocí vloženého souboru, tedy stanovíme ukončující sekvenci, po jejímž zadání bude soubor uzavřen, příkaz ukončen, a tato sekvence se nestane součástí vytvořeného souboru. Zadáme: cat > novysoubor.txt << KONEC Dále píšeme na klávesnici to, co chceme, aby bylo v souboru: Toto je první řádek, a ted píšeme další řádek. Tento řádek bude poslední. KONEC M Po napsání ukončující sekvence (kterou jsme určili na řetězec KONEC ) se příkaz ukončí a soubor je vytvořen. 1.7 Další příkazy Podíváme se na některé další jednoduché příkazy: date výpis data a času, parametry můžeme stanovit, co a v jaké formě bude vypsáno date +%d.%b vypíše datum ve tvaru den.měsíc (měsíc bude vypsán slovně, podle jazykového nastavení systému) date +%x vypíše datum ve tvaru měsíc/den/rok date +%T vypíše čas ve tvaru hodiny:minuty:sekundy date >> log.dat tento příkaz umístěný do.login, případně.profile, způsobí, že při každém přihlášení se do souboru log.dat přidá datum tohoto přihlášení, máme tedy přehled o tom, kdy se uživatel tohoto jména přihlašoval

38 1.8 SPECIÁLNÍ ZNAKY PRO UVOZOVÁNÍ 30 clear smazání obrazovky exec příkaz provede příkaz, ale těsně před tím ukončí rodičovský proces (pokud tento příkaz napíšeme v shellu, pak je ukončen shell a pak proveden příkaz); hlavním důvodem používání tohoto příkazu bylo dříve omezené množství operační paměti, ukončení rodičovského procesu způsobilo uvolnění paměti jím používané, dnes se používá spíše jako poslední spouštěcí příkaz ve skriptech echo [-e] [-n] řetězec tento příkaz byl již dříve používán. Jeho základní účel je stejný jako ve Windows, tedy vypíše svůj parametr (vše včetně mezer). Přepínač -n zamezí přechodu na nový řádek po vyhodnocení příkazu. Pokud parametr nebo jeho část uzavřeme do uvozovek, můžeme používat speciální znaky (escape sekvence) (například \n způsobí přesun na nový řádek zařádkování ve výstupu, \t je tabulátor), ale navíc musí být použit přepínač -e. Můžeme použít i apostrofy, pak obsah nebude interpretován (vypíše se tak jak je). Příklad 1.18 Tento příkaz vytvoří následující tabulku: echo -e Nadpis1\tNadpis2\nObsah1\tObsah2 Nadpis1 Obsah1 Úkoly Nadpis2 Obsah2 1. Vyzkoušejte různé možnosti zobrazení data a času. 2. Zobrazte manuálovou stránku příkazu echo (v sekci 1). Zjistěte, jaké přepínače má tento příkaz a jaké formátovací řetězce lze používat mimo výše uvedených. M C 1.8 Speciální znaky pro uvozování Různé typy uvozovek a dalších symbolů mohou měnit způsob zacházení s řetězcem. Apostrofy určují, že vše, co je mezi nimi, tvoří jednolitý celek, i kdybychom mezitím klepli na klávesu Enter, znaky mezi apostrofy jsou obvykle brány jako obyčejný text. Jsou běžně používány například v těchto případech: v příkazu echo (nebo jiném) chceme text umístit do více řádků, pak na prvním řádku (který začíná příslušným příkazem) je jen levý apostrof, pravý je na posledním řádku, který chceme do vstupu zahrnout, P

39 1.8 SPECIÁLNÍ ZNAKY PRO UVOZOVÁNÍ 31 názvy souborů obsahující mezery uzavíráme do apostrofů, find / -name * -print (zde zabraňujeme interpretaci hvězdičky; vyzkoušejte i variantu bez apostrofů, obdržíte chybové hlášení) atd., setkali jsme se s nimi u regulárních výrazů, kde určovaly hranice výrazu a zamezovaly předčasné interpretaci, setkáme se s nimi také například u proměnných. Obrácené apostrofy naopak způsobují okamžitou interpretaci svého obsahu. Tedy obsah P mezi obrácenými apostrofy je nahrazen svým výstupem. Takto lze vložit výstup jednoho příkazu do parametru jiného příkazu. Příklad 1.19 Srovnejme (pozor, mezery kolem operátoru jsou povinné!!!): expr echo Výpočet: expr echo Výpočet: expr Výstup prvního příkazu je číslo 2 (tento příkaz vyhodnotí svůj argument jako aritmetický výraz). V druhém případě se pouze vypíše celý řetězec, nic nebude vypočteno. V třetím případě jsme do parametru příkazu echo vložili příkaz pro výpočet, a to v obrácených apostrofech, tedy nejdřív je proveden vnitřní příkaz, pak je jeho výsledek (číslo 2) vložen na místo tohoto příkazu a teprve potom je vypsán celý řetězec. Zpětné lomítko se narozdíl od ostatních uvozovacích symbolů píše pouze před symbol, P nikoliv za něj. Zpětná lomítka používáme k přepnutí významu následujícího prvku (tj. bud vypnutí nebo zapnutí, opačně vzhledem k původnímu nastavení). S některými způsoby použití jsme se už setkali, například u regulárních výrazů nebo u escape sekvencí v příkazu echo. Zde je to například \n, tedy výsledek není chápán jako písmeno n, ale escape sekvence přechodu na nový řádek. Zpětné lomítko také umístíme na konec řádku, pokud má příkaz (jeho parametry) pokračovat na následujícím řádku. Příklad 1.20 echo první řádek\ > druhý řádek \ > třetí řádek vypíše první řádekdruhý řádek třetí řádek (všimněte si chybějící mezery; chybí, protože jsme ji do původního příkazu před konec řádku nenapsali).

40 1.9 PROMĚNNÉ 32 Uvozovky vypínají nahrazování jmen, ale přitom zachovávají význam obrácených apo- P strofů, proměnných a znaků uvozených zpětným lomítkem. Uvozovky využijeme také jako náhradu běžných apostrofů, pokud je chceme vnořit (běžné apostrofy nelze vnořovat, proto místo vnějších apostrofů použijeme uvozovky). Úkoly Využijte obrácené apostrofy k výpisu informací o povolených shellech, vyzkoušejte: cat /etc/shells ls -la cat /etc/shells Ve výpisu také zjistíte případné symbolické odkazy, které jedním názvem shellu odkazují na jiný shell. C 1.9 Proměnné Základy práce s proměnnými Proměnné se definují v souboru.bashrc nebo jsou předdefinovány systémem či v jiném konfiguračním souboru. Nejdůležitější jsou: HOME domovský adresář uživatele TERM typ terminálu SHELL cesta k používanému shellu USER přihlašovací jméno uživatele PATH seznam adresářů, ve kterých se hledá spouštěný soubor, jednotlivé cesty jsou odděleny dvojtečkou PS1 prompt, výzva příkazového řádku konzoly nebo terminálu PWD pracovní adresář V proměnné PATH není ve výchozím nastavení cesta k pracovnímu adresáři a při spuštění programu také narozdíl od Windows není spouštěný program hledán v pracovním adresáři! Proto pokud chceme spustit například program mujprogram umístěný v adresáři, který je právě naším pracovním adresářem, provedeme to takto:./mujprogram Teoreticky by se tento problém dal vyřešit přidáním adresáře. do proměnné PATH, ale toto řešení se z bezpečnostních důvodů nedoporučuje. 3 P 3 Představte si, že ve vašem domovském adresáři (který velmi často bývá pracovním adresářem) bude podstrčen škodlivý software pojmenovaný stejně jako některý z běžně používaných příkazů, nejlépe příkazu obvykle se nacházejícího v adresáři /sbin, který často nebývá zahrnut v proměnné PATH. Pokud zařadíme

41 1.9 PROMĚNNÉ 33 Existuje také obdoba rozdělení proměnných na běžné a dynamické, s čímž jsme se setkali už ve Windows. Například proměnná PS1 je dynamická. Proměnné jsou bud lokální (platné pouze v rámci skriptu, příkazového shellu nebo bloku uvnitř skriptu), a nebo proměnné prostředí, které jsou viditelné i mimo oblast, ve které byly deklarovány (pozor, pojem prostředí má v Linuxu opačný význam než ve Windows). Příkazy pro práci s proměnnými: echo $proměnná vypíše obsah proměnné (vyhodnotí ji), pracuje s běžnými i dynamickými proměnnými proměnná=výraz změní obsah proměnné export proměnná exportuje proměnnou do prostředí (aby ji mohly využívat všechny skripty i příkazový režim), dá se spojit s přiřazením hodnoty do proměnné env set vypíše proměnné s jejich obsahem (proměnné prostředí) vypíše veškeré proměnné a funkce, které jsou definovány v dané oblasti, ve které pracujeme (výstup je poměrně rozsáhlý) unset odstraní proměnnou read proměnná načte ze standardního vstupu řetězec do proměnné P Znak $ vyhodnotí vše, co se za ním nachází (vše až po první mezeru nebo konec řádku považuje za název zpracovávané proměnné), proto když zadáváme za názvem proměnné ještě něco dalšího, uzavřeme tuto proměnnou do lomených závorek: export PATH=${PATH}:/usr/TeX/bin Když chceme, aby se takováto vnitřní proměnná vyhodnocovala při každém volání vnější proměnné, uzavřeme výraz do jednoduchých uvozovek (apostrofů). Příklad 1.21 Předpokládejme, že někde třeba ve skriptu používáme proměnnou. Nejdřív ji vytvoříme a inicializujeme, pak vypíšeme její obsah. do proměnné PATH tečku, můžeme tento škodlivý software omylem spustit (a pokud je jeho programátor dost chytrý na to, aby po dokončení své vlastní činnosti spustil původní program na správném umístění, tak to ani nezjistíme). Mohlo by se zdát, že stačí tečku přidat až na konec proměnné PATH, aby všechny dříve uvedené adresáře měly přednost, ale toto nefunguje, pokud některé jinak důležité cesty nejsou v této proměnné zahrnuty.

42 1.9 PROMĚNNÉ 34 prom= A B C echo $prom echo $prom echo \$prom Druhý, třetí a čtvrtý příkaz nám postupně dají tyto výstupy (všimněte si důsledku použití uvozovek): A B C A B $prom C Příklad 1.22 Do proměnné nemusíme ukládat jen řetězec nebo číslo. Jak víme, obrácené apostrofy jsou prostředkem, jak vynutit vyhodnocení výrazu. Například: prom= Výstup: ; ls -la echo $prom echo $prom V prvním příkazu jsme do proměnné uložili příkaz (vlastně dva příkazy oddělené středníkem, aby mohly být na jednom řádku) k interpretaci. Obrácené apostrofy uvnitř uvozovek jsou zde nutné. V dalších příkazech vypisujeme obsah proměnné, čímž vyvoláme interpretaci příkazů v ní uložených. Vyzkoušením si můžeme ověřit význam uvozovek u posledního příkazu. Příklad 1.23 Další ukázky s proměnnými: do proměnné PS1, tj. do momentálního promptu, si uložíme pra- export PS1= $PWD covní adresář PS1= \W pracovní adresář bez cesty, s cestou je \w (a také zobrazuje domovský adresář jako vlnovku) PS1= \d promptem bude aktuální datum PS1= \A promptem je aktuální čas jen hodiny a minuty, jiné možnosti pro čas jsou \t nebo \T PS1= \u\h\$ PS1= \u\h:\w> prompt je ve formě uživatel počítač$ (plus mezera) PS1= pracuji tak dlouho: $SECONDS dynamická prompt je ve formě uživatel počítač: pracovní adresář (plus mezera) opět změníme prompt, proměnná SECONDS je

43 1.9 PROMĚNNÉ 35 mkdir $HOME/novy využili jsme proměnnou uvnitř parametru příkazu; všimněte si složených závorek kolem názvu proměnné, zde jsou nutné Kromě proměnné PS1 existují obvykle ještě další proměnné určující prompt. Většinou se setkáme alespoň se sekundárním promptem PS2, který je zobrazován například při psaní víceřádkových příkazů, případně při vytváření here documents. Pokud chceme, aby námi vytvořená proměnná byla viditelná i mimo pracovní prostředí, ve kterém je vytvořena (například i mimo skript, nejrůznějším dalším programům apod., musíme ji exportovat: export prom Příkaz set je ve skutečnosti mnohem silnější, nejde jen o vypisování seznamu proměnných a funkcí. Můžeme například do proměnné přiřadit výsledek funkce (podrobnosti najdeme v manuálové stránce příkazu set). Úkoly 1. Vyzkoušejte příkazy vypisující proměnné. Vyberte si kteroukoliv proměnnou a vypište její obsah. 2. Vyzkoušejte příkazy z příkladu Dále podle příkladu 1.22 vyzkoušejte přiřazení příkazu do proměnné. Také se pokuste změnit si prompt podle dalšího příkladu. C Výpočty Používání proměnných úzce souvisí s prováděním výpočtů. Pro tyto účely existují především dva základní příkazy: let výraz změna hodnot proměnných s vyhodnocením výrazu, v některých případech jsou uvozovky nutné let vypočte a vypíše výsledek let prom=3+4 do proměnné je uložen výsledek výrazu let prom+=4 je podporována céčkovská notace přiřazování let prom+=$prom na pravé straně může být také proměnná, ale samozřejmě příslušně označená symbolem dolaru, aby byla interpretována expr výraz další způsob, jak vyhodnotit výraz a případně v něm použít proměnnou, či do proměnné uložit výsledek, kolem operátorů jsou povinně mezery prom= expr nejdřív vypočte výraz, pak výsledek přiřadí do proměnné (kolem rovnítka nesmí být mezery)

44 1.9 PROMĚNNÉ 36 expr $prom + 1 vypíše číslo o 1 větší než je hodnota proměnné $prom (tj. dosadí za proměnnou, vypočte výraz a vypíše) Výsledek si můžeme vždy ověřit vypsáním echo $prom. Příklad 1.24 Hodnotu proměnné lze načíst i od uživatele (proměnná, do které načteme vstup od uživatele, nemusí předem existovat, lze ji vytvořit i voláním funkce read): echo -n Zadej číslo: read prom1 echo -n Byla načtena hodnota ${prom1} prom2=$prom1 Všimněte si závorek kolem názvu proměnné. Zde nejsou přímo nutné, ale je dobré si na ně zvyknout, protože v určitých případech jsou naopak nevyhnutelné. Celý vypisovaný řetězec také nemusí být v uvozovkách, v tomto případě. prom1+=80 let prom2+=80 echo prom1=${prom1}, prom2=${prom2}. Úkoly 1. Proved te příkazy z příkladu Zjistěte, jaký je rozdíl ve výstupech příkazů, kde se k proměnné přičítá číslo 80. Ve kterém případě se s proměnnou zachází vždy jako s řetězcovou? 2. Zobrazte manuálovou stránku příkazu expr a zjistěte, jaké výrazy jím lze interpretovat. 3. Vyzkoušejte výpočty, kde je na pravé straně výrazu proměnná. Načtěte od uživatele hodnotu proměnné a vypište její dvojnásobek. C

45 Kapitola 2 Skripty a programování V této kapitole jsou zahrnuta pokročilejší témata, je vlastně rozšířením předchozí kapitoly. Podíváme se na konfigurační soubory, potom na další úlohy týkající se práce v shellu bash (skripty, podmínky, cykly, pole, apod.). 2.1 Konfigurační a další systémové soubory Většina konfiguračních souborů není psána pro určitý shell, ale má speciální formát (samozřejmě textový) srozumitelný především tomu programu, který má konfigurovat. Některé z nich jsou skryté (začínají tečkou). Příklady konfiguračních souborů: /etc/fstab seznam souborových systémů, které se připojují při startu systému nebo mohou být připojeny /etc/mtab seznam momentálně připojených (mounted) souborových systémů, je dynamicky generován systémem podle obsahu jednoho ze souborů v adresáři /proc /etc/inittab konfigurace programu init /etc/securetty seznam terminálů, ze kterých je dovoleno přihlásit se na účet root /etc/passwd seznam uživatelů /etc/group seznam skupin P 37

46 2.2 SKRIPTY 38 Do souboru /var/log/messages se (ve výchozím nastavení, které může být změněno) ukládají zprávy o běhu systému (co se děje, co se spouští apod.), včetně samotného startu systému. Pokud chceme zjistit, zda došlo k nějaké chybě (a případně i nějaké další informace), můžeme nahlédnout do tohoto souboru. Přímý přístup k němu má však pouze root, a navíc tento soubor je hodně rozsáhlý (dokonce už jen při startu se toho děje strašně hodně), takže musíme zvolit vhodný způsob přístupu k tomuto souboru a navíc použít vhodný filtr. Root použije následující příkaz: cat /var/log/messages grep klíčové slovo, běžný uživatel napíše příkaz dmesg grep klíčové_slovo (program dmesg slouží k získání informací o startu systému, také čte ze souboru /var/log/messages). Běžný uživatel může takto získat pouze informace uložené do /var/log/messages během startu systému, root kterékoliv informace přidané kdykoliv při běhu systému. Když se přihlašujeme, postupně se načítají tyto konfigurační soubory: /etc/profile toto je obecný skript platný pro všechny profily /.bash_profile, /.bash_login, /.profile bere v úvahu vždy jen jeden z těchto tří souborů (vždy ten první podle tohoto pořadí, na který narazí), obsahuje konkrétní profil platný pro daného uživatele /.bashrc tento skript se spustí, pokud jsme se nepřihlašovali v textovém režimu, ale chceme pracovat třeba v konzole P P Při odhlašování se pak provádí kód v souboru /.bash_logout. 2.2 Skripty Co je to skript Skripty (skriptové soubory) jsou textové spustitelné soubory, které pro své spuštění potřebují interpret (to je některý shell). Soubory se skripty obvykle mívají bud příponu.sh, a nebo jsou bez přípony. Každý skript je psán vždy pro určitý shell nebo programovací jazyk (například bash nebo perl) a v jiném nemusí fungovat. Proto často bývá na prvním řádku skriptu identifikace shellu. Tento řádek vždy začíná dvojicí znaků #!, pokud ovšem se ve skriptu nachází. Například: #!/usr/bin/tcsh znamená, že skript má být interpretován shellem Toronto C Shell, #!/usr/bin/bash určuje skript s příkazy shellu Bourne Again Shell, #!/usr/bin/perl (adresa může být jiná, záleží na umístění spustitelného programu perl) je skript psaný v programovacím jazyce Perl. P

47 2.2 SKRIPTY 39 Aby bylo možné skript spouštět v textovém režimu napsáním jeho názvu, musí být označen jako spustitelný, tj. je třeba nastavit příznak x v přístupových oprávněních. V opačném případě musíme skript spouštět jako parametr interpretačního programu (například bash soubor.sh). Skript pro shell bash vypadá například takto: #!/bin/bash echo Hello World echo znamena Ahoj svete M Skripty můžeme použít pro automatické zálohování, shromažd ování informací, přidávání nových uživatelů a obecně jakoukoliv automatizaci posloupnosti operací Parametry a návratové hodnoty Parametry skriptu jsou přístupné přes proměnné $0 (název skriptu), $1 (první parametr), $2 (druhý parametr),..., $9 (i vyšší), jejich obsahy lze posouvat a tak se dostat i k dalším parametrům pomocí příkazu shift (jako nepovinný parametr můžeme použít číslo označující počet přesunů, implicitně je to 1). Skript může také vracet návratový kód, a to příkazem exit. Můžeme jako nepovinný argument zadat číslo návratového kódu, výchozí je číslo 0. Návratová hodnota nemusí být konstantní číslo, můžeme takto předat třeba i obsah proměnné. exit konec skriptu, vracíme hodnotu 0 exit 8 konec skriptu, vracíme hodnotu 8 exit $prom konec skriptu, vracíme hodnotu obsaženou v zadané proměnné Obdobou proměnné errorlevel z Windows je v Unixu proměnná $?. Obsahuje status (stav) posledního spouštěného příkazu, což samozřejmě může být i skript. Běžně používané návratové hodnoty (chybové kódy) jsou 0 (proces proběhl úspěšně), 1 (proces se spustil, ale proběhl neúspěšně nastaly chyby při běhu), 2 (proces se nespustil), 127 (proces nebylo možno spustit, protože program nebyl nalezen). P Příklad 2.1 Trochu předběhneme a použijeme cyklus until pro procházení všemi parametry, které uživatel při spuštění našeho skriptu použil. Soubor se skriptem obsahuje tento kód: until [ -z $1 ] do # z jako zero - provádí se tak dlouho, dokud # nebude splněna podmínka první parametr je prázdný echo -n $1 # vypíšeme první parametr shift # posun, do prvního parametru se dostane obsah druhého apod. done # konec cyklu echo # zařádkování na konec (prázdný řádek) M

48 2.3 PROGRAMOVÁNÍ V SHELLU 40 Předpokládejme, že tento náš skript je uložen v souboru s názvem pokus.sh a uživatel ho spustil s těmito parametry:./pokus.sh kalendar auto 54 posledni Pak výstupem bude následující: kalendar auto 54 posledni V cyklu sice vypisujeme pořád první parametr ($1), ale díky příkazu posunu se do tohoto parametru postupně přesouvají všechny následující. Cyklus končí tehdy, když je v prvním parametru prázdný řetězec, tj. další parametr již není zadán. Mohli bychom použít také cyklus for (viz dále) počet použitých (plných) parametrů je totiž uložen v proměnné $#. M Další možnosti použití skriptů Na prvním řádku skriptu bývá uveden příkaz spouštějící shell, který má provést interpretaci následujících řádků. Ve skutečnosti tam může být téměř kterýkoliv příkaz, kterému je pak přesměrován zbývající obsah souboru jako vstup. Nahrazení shellu následujícím skriptem způsobí, že pokud se uživatel, pro kterého byla změna provedena, pokusí přihlásit do systému, vypíše se mu uvedená hláška a uživateli bude odmítnut přístup. #!/usr/bin/tail +2 Pozor, tvůj účet byl zablokován z důvodu... Pokud chceš vše napravit,... M Samotné nahrazení shellu se provede příkazem chsh -s /.../soubor_skriptu uživatel 2.3 Programování v shellu Jednoduché propojení příkazů V Unixu se setkáváme s podobnými možnostmi propojení příkazů, jaké známe z Windows (ostatně, odkud se to všechno ve Windows asi vzalo). Možnosti: příkaz1 ; příkaz2 ; příkaz3 sekvenční provádění příkazů, totéž, jako kdyby byly zvlášt na samostatných řádcích

49 2.3 PROGRAMOVÁNÍ V SHELLU 41 příkaz1 příkaz2 příkaz3 řetězení vstupů/výstupů, tedy roury (kolony) (pozor, to není plně sekvenční provádění, následující příkaz může začít zpracovávat vstup ještě před ukončením předchozího příkazu, typicky stránkovací filtry) příkaz1 příkaz2 příkaz3 logické OR, následující příkaz se provede pouze tehdy, když předchozí skončil neúspěchem (tj. vrátil nenulový návratový kód) příkaz1 && příkaz2 && příkaz3 logické AND, následující příkaz se provede pouze tehdy, když předchozí skončil úspěchem Výše uvedené možnosti lze také kombinovat a pracuje se s nimi stejně jako ve Windows, proto je dále nebudeme rozvádět. Příklad 2.2 pgrep nejaky_proces >/dev/null && echo proces běží echo proces neběží Pro sdružování několika příkazů spojených těmito symboly můžeme použít složené závorky. Navíc se takto dá řešit problém poslání na pozadí celé sekvence příkazů. Příklad 2.3 sleep 30; echo Konec prace! 30 sekund se nic neděje (ani prompt), pak se vypíše hláška sleep 30; echo Konec prace! & 30 sekund se nic neděje, pak se na pozadí provede příkaz { sleep 30; echo Konec prace! }& 30 sekund můžeme pracovat (je zobrazen prompt), pak se objeví hláška Symbol & samotný na konci názvu příkazu je něco trochu jiného. Znamená asynchronní provádění příkazu, tedy příkaz následovaný tímto symbolem je spuštěn na pozadí a můžeme v shellu dále běžně pracovat. S touto možností se blíže seznámíme ve správě procesů a úloh Příkazy pro podmínky a cykly Podmínka if: Příkaz if má tuto syntaxi: if [ podmínka ]; then příkazy jakýkoliv počet příkazů fi nebo if [ podmínka ]; then příkazy else příkazy fi M

50 2.3 PROGRAMOVÁNÍ V SHELLU 42 Poznámka: Mezery uvnitř hranatých závorek jsou naprosto nutné, protože ve skutečnosti je závorka [ příkazem a vše za ní až po středník za symbolem ] jsou parametry tohoto příkazu. Místo tohoto příkazu můžeme ve skutečnosti použít jakýkoliv jiný příkaz nebo kolonu (rouru) příkazů, vyhodnocována bude návratová hodnota. Formu podmínky probereme po ukázce syntaxe cyklů. Příkazy cyklů: Cykly můžeme provádět pomocí tří druhů příkazů: for, while a until. Příkaz for má syntaxi: for i in $( seznam řetězců ); do příkazy echo přístup k proměnné i je $i echo stejně jako u systémových proměnných done Můžeme také používat syntaxi převzatou z csh: for i in seznam řetězců ; do příkazy done Příkazy while a until mají tuto syntaxi: while [ podmínka ]; do příkazy done until [ podmínka ]; do příkazy done E M M M Opět je nutné přidávat mezery u hranatých závorek. Podmínky v příkazech if, while a until: V podmínce se používají řetězce obvykle představující proměnné a dále operátory reprezentované těmito přepínači: Pro řetězce: řetězec -z řetězec řetězec1 = řetězec2 řetězec1!= řetězec2 = true, pokud je řetězec neprázdný = true, pokud je řetězec prázdný = true, pokud jsou řetězce stejné = true, pokud jsou řetězce různé Pro názvy souborů: -f soubor -d soubor -r soubor -w soubor -x soubor -s soubor = true, pokud soubor existuje a je běžný soubor = true, pokud soubor existuje a je to adresář = true, pokud soubor existuje a je nastaveno právo čtení = true, pokud soubor existuje a je nastaveno právo zápisu = true, pokud soubor existuje a je nastaveno právo spouštění = true, pokud soubor existuje a má nenulovou délku

51 2.3 PROGRAMOVÁNÍ V SHELLU 43 Pro čísla a proměnné s čísly: číslo1 -eq číslo2 číslo1 -ne číslo2 číslo1 -gt číslo2 číslo1 -lt číslo2 číslo1 -ge číslo2 číslo1 -le číslo2 = true, pokud číslo1 = číslo2 = true, pokud číslo1 <> číslo2 = true, pokud číslo1 > číslo2 = true, pokud číslo1 < číslo2 = true, pokud číslo1 číslo2 = true, pokud číslo1 číslo2 Skládání výrazů:! výraz výraz1 -a výraz2 výraz1 -o výraz2 \( výraz \). negace výrazu logické AND logické OR uzávorkování výrazu Pokud existuje třeba jen malá pravděpodobnost, že v proměnné použité ve výrazu by mohl být prázdný řetězec, musí být název proměnné (i se znakem $) uzavřen do uvozovek. Pokud v příkazu if chceme nechat první větev prázdnou a psát příkazy až do větve else, do první větve dáme alespoň prázdný příkaz (to je :, dvojtečka). V sekvencích příkazů (včetně podmínek příkazů) můžeme používat také symboly pro spojování příkazů, tj. ;, &&,. V příkazech cyklů můžeme pro přerušení cyklu použít příkaz break nebo continue. Příklad 2.4 Podíváme se na několik jednoduchých skriptů využívajících bud rozhodování (příkaz if) nebo některou formu cyklu. 1. #!/bin/bash if [ $PWD = / ]; then echo Pracovní adresář je root, tam mě nikdo nedostane! exit 1 fi 2. #!/bin/bash #přepneme se do adresáře docasny v domovském adresáři cd ~/docasny M M #vytvoříme proměnnou (neexportujeme, použijeme ji jen zde) souhlas= N pwd for i in $( ls -a ); do echo Smazat $i... (A/N)? read souhlas if [ $souhlas = A $souhlas = a ]; then #rekurzívní mazání souborů a adresářů:

52 2.3 PROGRAMOVÁNÍ V SHELLU 44 rm -fr $i if [ $? -eq 0 ]; then echo OK, soubor smazán else echo CHYBA při mazání souboru! fi else echo OK, soubor zůstane fi done 3. #!/bin/bash for c in $( ); do echo c = $c done for i in $( $HOME $SHELL $PS1 ); do echo $i je $i done 4. #!/bin/bash klavesa= N until [ $klavesa!= N ]; do echo Tak už stiskni nějakou klávesu! echo (krome klavesy N) done 5. #!/bin/bash CITAC=1 POSLEDNI=5 vysledek=1 while [ $CITAC -lt $POSLEDNI ]; do let vysledek*=2 citac+=1 done echo 2ˆ$POSLEDNI = $vysledek M M M Jednoduché testování Příkaz test provádí vyhodnocení svého argumentu, obvykle vrací hodnotu true nebo false. Umožňuje zjistit, zda jsou dva řetězce (třeba obsahy proměnných) stejné nebo jeden menší (větší apod.) než druhý (především pro proměnné obsahující čísla), zda zadaný soubor existuje, zda je proveditelný (tj. program), atd. Názvy proměnných se dávají do uvozovek. Syntaxe používaná v podmínkách podmíněného příkazu a smyček je vlastně alias pro příkaz test, tedy [ řetězce ]; je totéž jako test řetězce. Příkaz test samozřejmě

53 2.3 PROGRAMOVÁNÍ V SHELLU 45 nemusíme používat jen ve skriptech, můžeme využívat možnost provádět jednoduché výpočty a testování přímo v příkazovém režimu. Příklad 2.5 Ukážeme si použití jednoduchého testování na zjištění existence adresáře. Před přesunem do zadaného adresáře si můžeme takto otestovat, zda existuje: if test -d adresar > then > cd adresar > else > ztratil(-a) jsem se!!! > fi M Parametr -d slouží k testování existence adresáře, jiné parametry zase slouží k testování existence jakéhokoliv souboru, blokového či znakového speciálního souboru, souboru s nastaveným SUID bitem, je možné testovat také přístupová oprávnění, zda je adresář prázdný, atd Pole Proměnné nemusí být jen řetězce nebo celá čísla, mohou to být také pole položek. S poli pracujeme podobně jako s jinými proměnnými a syntaxe částečně vychází z jazyka C, jen narozdíl od C nemusíme brát ohled na omezení daná datovými typy a pevnou či dynamickou alokací. Indexace je od 0. Příklad 2.6 Několik ukázek práce s poli: 1. #!/bin/bash #deklarace pole: nazvyznamek=( Jednicky Dvojky Trojky Ctyrky Petky ) znamky=( ) M #pozor na slozene zavorky: echo Pocet jednicek: $znamky[0] echo Vsechny znamky: $znamky[*] echo Tabulka znamek: echo Znamka /tpocet #parametr prikazu for je vlastne taky pole:

54 2.4 PŘEKLAD PROGRAMŮ 46 for z in $( ); do echo $nazvyznamek[$z]: /t$znamky[$z] done #predefinovani pole: znamky=( ) #paty prvek (znamky[4]) se prepsal na prazdny retezec! 2. #!/bin/bash kapacitaletadel=( ) #prikoupime letadlo, jehoz kapacita je 52: kapacitaletadel=( $kapacitaletadel[*] 52 ) M #do prvniho letadla jsme prikoupili jedno sedadlo: kapacitaletadel[0]= 22 Některé systémové proměnné jsou také typu pole, například BASH_VERSINFO je pole údajů o používané verzi shellu bash. 2.4 Překlad programů V shellu můžeme spouštět i aplikace grafického režimu, existují zde i textové programy pro úpravu textů (např. nano, pico, vi, vim, emacs, kwrite, kedit), kompilátory jazyka C (gcc, c++, cc,... ) apod. Pro překlad programů v jazyce C (nebo také C++) se obvykle používá překladač gcc (GNU C Compiler). Jedná se opravdu o překladač, nikoliv editor (jako editor můžeme použít některý z běžných textových editorů, ale existují i speciálně určené pro programování, například Kate nebo prostředí KDevelop). Program gcc se v jednodušším případě používá takto: přeloží zadaný zdrojový soubor, také je stano- gcc -o vystupni_soubor zdrojovy.c ven výstupní soubor Program má velmi mnoho nejrůznějších voleb, často určených pro překlad konkrétního jazyka, některé volby jsou hardwarově závislé (pro konkrétní hardwarovou platformu). Existují také například volby pro překlad vícevláknových aplikací.

55 2.5 DALŠÍ NÁSTROJE 47 Úkoly Vytvořte textový soubor zdroj.c s následujícím obsahem (například v editoru kwrite nebo gedit, nebo přímo v shellu příkazem cat > soubor.c << KONEC): #include<stdio.h> int main(void){ printf( Hello World\n ); } C M Uložte do vašeho domovského adresáře a pak přeložte: gcc -o vystupnisoubor zdroj.c Program spust te. Nezapomeňte, že váš domovský adresář zřejmě není v proměnné obsahující cesty ke spustitelným souborům, tedy je nutné zadat cestu do pracovního adresáře:./vystupnisoubor 2.5 Další nástroje Aliasy Alias je zástupný název pro nějaký řetězec, obvykle příkaz nebo část příkazu. Pro práci s aliasy existuje příkaz alias [zastupny= retezec ], při použití bez parametrů vypíše všechny existující aliasy. alias vypíše nadefinované aliasy alias md= mkdir vytvoří zkratku pro příkaz mkdir alias ls= ls -a od této chvíle se při zadání příkazu ls (případně i s dalšími parametry) budou vypisovat všechny položky včetně skrytých alias seznam= cat -n vytvoříme vlastní příkaz (vlastně ani ne tak příkaz jako obdobu makra), který vypíše zadaný soubor a zároveň očísluje řádky. Používá se takto: seznam soubor.txt alias odstrel= kill -9 vytvoříme příkaz, který ukončí zadaný proces, i kdyby byl například zamrzlý, použití pro proces s PID 2510: odstrel 2510 alias textove= ls -la grep.txt tento příkaz vypisuje všechny textové soubory v pracovním adresáři, včetně skrytých alias c+= mount /mnt/sda1 vytvořený příkaz c+ připojí první oddíl prvního pevného disku

56 2.5 DALŠÍ NÁSTROJE 48 Aliasy platí vždy jen do ukončení systému, takže pokud chceme některý zástupný řetězec používat trvale, musíme ho zapsat do některého skriptu, který se spouští hned po startu počítače, přihlášení nebo startu shellu (např. ~/.bashrc) Konverze textových souborů iconv je program pro konverzi textových souborů mezi různými kódováními (filtr), například iconv -f cp1250 -t iso < souborwin.txt > souboriso.txt zkonvertuje soubor s Windows kódováním cp1250 na ISO8859-2, iconv -f iso t utf-8 < souboriso.txt > souborutf.txt zkonvertuje soubor v kódování ISO na unicode UTF-8. Seznam všech podporovaných kódování se zobrazí iconv -list. Programem s rozsáhlejšími funkcemi je například recode (dokáže kromě jiného také odstranit diakritiku ze souboru), dále enca (dokáže také detekovat znakovou sadu). Program cstocs je zase konvertor specializovaný na češtinu a slovenštinu: cstocs cp1250 utf-8 < soubor.txt > vysledek.txt Program convmv dokáže opravit názvy souborů, které nezodpovědný uživatel Windows pojmenoval s použitím háčků a čárek a odeslal jinému uživateli: convmv -f cp1250 -t utf8 soubor

57 Kapitola 3 Úlohy při správě V této kapitole se setkáme s úlohami při správě operačního systému, především ve správě uživatelů, procesů, zařízení, sítě a dalších. Podíváme se také na práci s moduly jádra. 3.1 Uživatelé a skupiny Informace o uživatelích Uživatelé mohou v souvislosti se svými účty používat tyto příkazy: users vypíše seznam přihlášených uživatelů (v seznamu bude alespoň jeden název účet, pod kterým jsme přihlášeni) who w výpis aktivních uživatelů (právě přihlášených podobně jako u předchozího příkazu), a to včetně různých dalších informací who (bez parametrů) vypíše momentálně přihlášené uživatele a základní informace o nich (například kdy se uživatel přihlašoval) who -ah zobrazí se seznam všech logování od startu systému (když použijeme parametr -a nebo --all), nad sloupci se zobrazí záhlaví takto zjistíme, kdo je přihlášen a co dělá, pracuje se souborem /var/run/utmp (dočasný soubor s přihlášenými uživateli), jako parametr můžeme (nemusíme) zadat přihlašovací jméno uživatele, jehož činnost nás zajímá whoami informace o přihlášeném uživateli (přihlašovací jméno) 49

58 3.1 UŽIVATELÉ A SKUPINY 50 id vypíše identitu uživatele id z výpisu zjistíme své UID, GID, název uživatele a skupiny, a dále seznam skupin, do kterých patříme; výstup může vypadat takto: uid=1002(uzivatel) gid=100(users) groups=16(dialout),100(users),182(pskupina) id novak vypíšeme podobné informace o zadaném uživateli id -u novak vypíše se pouze UID uživatele novak (pomocí parametrů omezujeme množství vypsaných informací) finger výpis aktivních uživatelů včetně plného jména, kde a kdy se přihlásil apod. finger vypíše požadované informace ve sloupcích finger -l vypíše informace v long dlouhém formátu, jako seznam finger novak vypíše informace o zadaném uživateli finger novak@uctarna příkaz lze používat i vzdáleně (zadáváme uživatele a počítač, na kterém má být přihlášen) V souvislosti s uživateli a skupinami nás zajímají některé soubory. O domovských adresářích víme (domovské adresáře běžných uživatelů jsou v adresáři /home, domovský adresář roota je /root, systémoví uživatelé (většinou procesy jako je například ftp nebo apache) žádný domovský adresář nemají. Dále jsou důležité soubory: /etc/passwd seznam uživatelů, kteří se mohou do systému přihlásit, formát řádku (záznamu) je login:heslo:uid:gid:plné jméno:homedir:shell pokud na místě hesla (druhá položka na řádku) je symbol x, znamená to, že heslo je v souboru /etc/shadow, pokud je zde uveden řetězec na místě hesla, je šifrovaný /etc/group seznam definovaných skupin, formát řádku (záznamu) je login:heslo:gid:vlastník pokud je místo hesla symbol!, znamená to, že heslo není definováno (což je u většiny skupin), pokud je tam x, je heslo v souboru /etc/shadow /etc/shadow šifrovaný soubor obsahující hesla uživatelů a skupin /etc/skel adresář používaný jako vzor ( kostra ) při vytváření domovských adresářů pro nové uživatele /etc/login.defs soubor s výchozími nastaveními bezpečnostního charakteru, například je zde možné nastavit metodu šifrování hesel (DES, MD5, SHA256, SHA5120), jak často si uživatel musí měnit heslo, logování souvisejících informací, minimální hodnota UID pro nově vytvářené běžné uživatele, chování systému při neúspěšném pokusu o přihlášení, hodnota proměnné PATH pro běžné uživatele a pro roota, atd. P

59 3.1 UŽIVATELÉ A SKUPINY 51 V příkazu pro vytvoření nového uživatelského účtu můžeme specifikovat vlastní náhradu souboru /etc/shadow nebo adresáře /etc/skel, to se může hodit z důvodu větší bezpečnosti (například útočník neví předem, kde šifrovaná hesla hledat). Příklad 3.1 Předpokládejme, že pracujeme v grafickém prostředí (KDE) se spuštěnou konzolou, což celkem ani nemá vliv, dále na prvním terminálu (tty1, Ctrl+Alt+F1 ) jsme přihlášeni, ale právě nemáme spuštěn žádný interaktivní příkaz, na druhém terminálu jsme přihlášeni a máme spuštěn přikaz cat a na třetím terminálu jsme také přihlášeni a máme spuštěn příkaz top (interaktivní příkaz vypisující stav spuštěných procesů). Po zadání příkazu w získáme tento výstup: 21:24:57 up 1:11, 4 users, load average: 0.14, 0.09, 0.19 USER TTY LOGIN@ IDLE JCPU PCPU WHAT sarka :0 20:14?xdm? 40.17s 0.12s /bin/sh /usr/bin/startkde sarka tty1 21:20 4: s 0.08s -bash sarka tty2 21:21 3: s 0.00s cat sarka tty3 21: s 0.22s 0.14s top M V záhlaví najdeme momentální čas, dále jak dlouho běží systém, kolik uživatelů je právě přihlášeno a průměrné doby načítání programů v posledních 1, 5 a 15 minutách (tyto údaje jsou pro každé spuštění tohoto příkazu mírně odlišné). Další záznamy se vztahují k přihlášeným uživatelům. Protože k tomuto systému se přihlašuji pouze já (sít ová karta je zneaktivněna), jiné přihlašovací jméno v seznamu není. Ale zato pro jedno jsou zde čtyři řádky, tedy uživatel je přihlášen 4. Na řádku najdeme přihlašovací jméno, na kterém terminálu je uživatel přihlášen, kdy se přihlásil, celkovou dobu nečinnosti uživatele na terminálu, hodnota JCPU představuje souhrn času stráveného procesy z tohoto terminálu na procesoru (nezapočítávají se procesy běžící na pozadí), hodnota PCPU představuje dobu činnosti procesu, který je uveden v následujícím sloupci WHAT. Podle sloupce WHAT poznáme, který proces je hlavním běžícím procesem na daném terminálu (při práci v prostředí KDE je to vždy startkde se základním shellem, at máme spuštěn jakýkoliv další program). Úkoly 1. Srovnejte výpis příkazů w, who, whoami, id a finger, také s některými uvedenými parametry. Ve výstupu kterého příkazu zjistíte, kdy se uživatel přihlásil, jaké má UID a GID, jaký je jeho shell, jaký má domovský adresář? 2. Projděte si obsah všech konfiguračních souborů a adresářů zde zmíněných, pokud to dovolují vaše přístupová oprávnění. C

60 3.1 UŽIVATELÉ A SKUPINY Procvičte si práci s terminály (konzolami) zkratkou Ctrl+Alt+F1 se přesuňte na tty1, přihlaste se (pokud to jde) a příkazem tty zjistěte název terminálu (resp. speciálního souboru pro tento terminál), dále zkratkou Alt+F2 na druhý terminál (proč zde nepoužíváme klávesu Ctrl?), přihlaste se a podobně i na třetím terminálu. Na každém z terminálů spust te některý interaktivní příkaz (například man pro některou manuálovou stránku, samotný cat, yes, top a nebo stránkovací příkaz na některý dlouhý soubor). Pak vyzkoušejte příkaz w. Odhlásíte se příkazem logout Vlastnosti účtů a skupin Program passwd je jedním z nejdůležitějších příkazů pro nastavení vlastností uživatelských účtů a skupin. Nejčastěji je používán ke změně hesla, ale také dalších informací souvisejících s účtem (například lze zadat dobu platnosti hesla, plné jméno uživatele apod.), příkaz může být používán bud majitelem účtu (ne vždy) a rootem. Možnosti: passwd novak chceme změnit heslo zadaného uživatele, budeme dotázáni na původní a nové heslo (pak pro kontrolu ještě jednou) passwd -g skupina tímto příkazem lze měnit heslo skupiny (ano, i skupiny mohou mít heslo), změnu může provést bud root nebo hlavní člen skupiny passwd -f takto změníme veřejné údaje, které jsou volně k zobrazení v souboru /etc/passwd nebo například programem finger (například plné jméno, telefonní číslo, apod.) passwd -s změna login shellu (podobně jako chsh) passwd -S uzivatel vypíše nastavení účtu uživatele (zda je účet zamknutý, je bez hesla nebo s heslem, datum poslední změny hesla, jak často musí být heslo měněno apod.) passwd -x 90 uzivatel nastavíme maximální stáří hesla na 90 dnů (po uplynutí této doby musí uživatel změnit heslo během prvního přihlašování po uplynutí) passwd -w 85 uzivatel po uplynutí této doby se uživateli začne objevovat upozornění, že by měl změnit heslo passwd -l uzivatel passwd -u uzivatel zamknutí (lock) účtu uživatele odemknutí (unlock) účtu uživatele passwd -e uzivatel uživatel je přinucen změnit heslo při příštím spuštění (používá se u nově vytvořených účtů, aby si uživatel vytvořil heslo) Pro práci s hesly skupin existuje také příkaz gpasswd. Uživatele a skupiny lze přidávat nebo naopak odstraňovat. Při vytváření nového uživatelského účtu lze bud zadat všechny parametry přímo do příkazu, a nebo můžeme pro implicitní parametry použít soubor /etc/default/useradd.

61 3.1 UŽIVATELÉ A SKUPINY 53 Tento soubor může vypadat třeba takto: GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel GROUPS=video,novaskup CREATE_MAIL_SPOOL=no SKEL (zkratka ze skeleton, kostra) je něco na způsob adresáře s implicitním profilem. V tomto adresáři můžeme vytvořit vše, co chceme, by se zkopírovalo do profilu přiřazeného k nově vytvořenému účtu. Protože čísla UID bývají do 500 vyhrazená systémovým uživatelům (root, ale také některé speciální procesy, démony, mají své UID z důvodu vyšších přístupových práv), volíme UID vždy větší než 500 (a samozřejmě takové číslo, které ještě není vyhrazeno pro jiného uživatele), obvykle dokonce nad Každý uživatel má svou hlavní skupinu, její GID je uvedeno na řádku uživatele v souboru /etc/passwd. Může však patřit do více skupin (to jsme viděli ve výstupech příkazů z předchozího textu) a příkaz newgrp umožňuje uživateli pracovat pod jinou skupinou než je jeho hlavní. Práce s uživatelskými účty: useradd přidání nového uživatele useradd -m novak vytvoříme nový účet s využitím implicitních parametrů, volba -m znamená, že se má automaticky vytvořit domovský adresář uživatele useradd -m -d /home/novak -gid 180 -s /bin/bash -c komentář novak některé volby zadáváme ručně (domovský adresář, GID, shell a komentář), zbylé budou brány ze souboru SKEL useradd -m -f novak účet je hned po vytvoření neaktivní userdel odstranění uživatelského účtu userdel novak odstraní zadaný uživatelský účet userdel -rf novak navíc odstraní také domovský adresář uživatele (volba -f znamená force, tedy nedbá se na varování v případě souborů nevlastněných daným uživatelem) usermod změna vlastností uživatelského účtu (obvykle už existujícího) usermod --inactive 3 novak tento příkaz zneaktivní zadaný účet na 3 dny M

62 3.1 UŽIVATELÉ A SKUPINY 54 usermod -L novak uzamkne účet (nebo --lock) usermod -U novak odemkne účet (nebo --unlock) usermod -c Nové Jméno novakova změna komentářového řetězce účtu newusers soubor v souboru jsou sepsáni uživatelé, které je třeba přidat do systému, v podobném formátu jako je v souboru /etc/passwd, příkaz přidá všechny uživatele ze souboru do systému groupadd vytvoření skupiny groupadd -gid 814 skupina groupdel skupina odstranění skupiny vytvoření skupiny, můžeme (nemusíme) zadat GID newgrp skupina změna skupiny během práce uživatele (uživatel patří do více skupin) Při vytváření uživatelských účtů a skupin můžeme také použít volby pro LDAP (tj. koexistenci s Active Directory v heterogenní síti). Hromadné přidání nových uživatelů: Vytvoříme textový soubor, kde každý řádek bude patřit jednomu uživateli. Formát je stejný jako u řádků v souboru /etc/passwd. Na řádku napíšeme postupně přihlašovací jméno, heslo v nezakódovaném tvaru (k tomuto souboru se proto nikdo nepovolaný nesmí dostat!!!), UID nového uživatele (toto pole se doporučuje nechat prázdné, pak bude vhodné UID vybráno automaticky), číslo výchozí skupiny, do které je uživatel zařazen, pokud je zde číslo GID, které ještě není přiřazeno žádné skupině, bude vytvořena nová skupina s tímto GID a s názvem stejným jako je login uživatele, jehož záznam je na tomto řádku obsažen, poznámka (obvykle se zde napíše skutečné jméno uživatele), domovský adresář (/home/...), výchozí shell uživatele. Pokud uvedená skupina nebo adresář ještě neexistuje, automaticky jsou vytvořeny. Jednotlivé položky na řádku jsou odděleny dvojtečkou (pro zapamatování: v proměnné PATH a v souborech /etc/passwd, /etc/group a dalších jsou položky také odděleny dvojtečkou), například komarek:px214ej:1206:506:jan Komarek:/home/komarek:/bin/bash Tento soubor použijeme jako atribut příkazu newusers, např: pokud je pojmenovan uzivatele.t, příkaz vypadá newusers uzivatele.t

63 3.1 UŽIVATELÉ A SKUPINY 55 Úkoly 1. Zjistěte údaje o svém účtu, které se vztahují k heslu. V manuálové stránce zjistěte, co který vypsaný údaj znamená. 2. Zjistěte, jaké jsou výchozí údaje pro vytvoření nového účtu (vypište obsah příslušného souboru). C Přístupová oprávnění Pro změnu parametrů souvisejících s oprávněním (vlastník, skupina, řetězec oprávnění) používáme tyto příkazy: chown uživatel soubor změna majitele souboru, může použít pouze původní majitel nebo správce chgrp skupina soubor totéž pro skupinu chmod práva soubor změna přístupových práv souboru, obecně módu souboru, používá se ve dvou tvarech. 1. tvar (absolutní): práva jsou tři číslice (vlastník, skupina, ostatní), každá z intervalu 0..7, každá z těchto číslic je součtem čísel 4 čtení 2 zápis 1 spouštění 0 nic Například rw-r-xr , , použijeme chmod 654 soubor rwxr-x , , použijeme chmod 750 soubor 2. tvar: použijeme, když chceme pozměnit jen některá práva, Například chmod u+rw,g-w,o-rwx soubor takto jsme nastavili vlastníkovi souboru čtení a zápis, skupině jsme odebrali právo zápisu a ostatním jsme odebrali všechna práva, chmod g+r-w soubor skupině jsme nastavili právo čtení a odebrali právo zápisu.

64 3.1 UŽIVATELÉ A SKUPINY 56 umask xyz vypíše masku práv, která se implicitně strhávají při vytvoření nového souboru (standardně 022, tedy se použijí práva 755). Nastavení příznaků módu souboru: V předchozím semestru jsme si vysvětlili, co znamenají příznaky setuid, setgid a sticky. Nyní se podíváme na možnost nastavení těchto příznaků. chmod u+s soubor nastavení příznaku setuid pro soubor chmod g+s soubor nastavení příznaku setgid pro soubor chmod +t soubor nastavení příznaku sticky pro soubor Příznaky rušíme podobně, jen místo znaku + dáme -. Skupina uživatelů pracujících na projektu: 1. Přihlásíme se jako root 2. groupadd nova_skupina Postupujeme takto: 3. uživatelé u1, u2, u3,... jsou členy skupiny users a nové skupiny (nastavíme členství ve skupinách pro dané účty): usermod -G users, nova_skupina u1 usermod -G users, nova_skupina u mkdir /vol/novy_adresar 5. nastavíme pro tento adresář skupinu a vlastníka (vedoucího skupiny uživatele u1), dále přístupová práva: chgrp nova_skupina /vol/novy_adresar chown u1 /vol/novy_adresar chmod o-rwx /vol/novy_adresar Navyšování přístupových oprávnění Když potřebujeme navýšit přístupová oprávnění v textovém režimu, je k dispozici alespoň jeden z těchto příkazů: su [uživatel] získání práv jiného uživatele (SubstituteUser), když není uveden žádný uživatel, doplní se automaticky root, další zadávané příkazy již spouštíme jako nový uživatel

65 3.1 UŽIVATELÉ A SKUPINY 57 sudo [příkaz] SUperuser DO, proved příkaz (obvykle) jako superuživatel, tedy root, pokud neuvedeme příkaz, ve výchozím nastavení platí zvýšená oprávnění po určitou omezenou dobu (5 minut) U obou příkazů existují také upřesňující volby, které zde nebudeme uvádět. Příkaz su je starší a prakticky nekonfigurovatelný, v mnoha linuxových distribucích není používán. Naproti tomu chování příkazu sudo lze poměrně dobře konfigurovat a související mechanismus se také nazývá sudo mechanismus. Sudo mechanismus tedy znamená (výhradní) využívání příkazu sudo k získávání vyšších přístupových oprávnění, uživatel root se obvykle ani nesmí přihlašovat klasickým způsobem. Konfigurace mechanismu je uložena v souboru /etc/sudoers, který je sice textový, ale lze jej editovat pouze speciálním programem /usr/sbin/visudo. Pro roota je v /etc/sudoers obvykle záznam root ALL=(ALL) ALL Tuto konfiguraci lze použít i pro jiné uživatele, ale jen pokud jim plně důvěřujeme a sdělíme jim heslo roota. Typicky se dá využít pro alternativní administrátory. Obecná syntaxe je uživatel počítač=(efektivní uživatel) příkaz První položka znamená uživatele, pro kterého řádek platí. Pokud chceme místo uživatele zadat celou skupinu, pak před její název napíšeme symbol %, abychom odlišili uživatele od skupiny, před název sít ové skupiny oproti tomu dáváme symbol +. Následuje počítač, na kterém je toto nastavení platné (tj. pokud je záznam v souboru jiného počítače, neplatí). Může to být přímo název počítače, IP adresa, adresa (pod)sítě apod. V závorkách je název uživatelského účtu, ke kterému se takto dočasně přihlašujeme, a posledním parametrem je seznam příkazů, které takto uživatel může spouštět. P Příklad 3.2 Ukážeme si několik řádků, které mohou být v souboru /etc/sudoers. novak novakuvstroj.firma.cz = (ALL) /bin/kill,/bin/killall zadaný uživatel může na svém počítači (i vzdáleně) spouštět příkazy pro ukončování jiných příkazů novak novakuvpc.firma.cz = (ALL) NOPASSWD: /bin/kill,/usr/bin/killall totéž, navíc nebude vyžadováno heslo roota %wwwadmin = (www) /usr/local/apache/bin/apachectl členové zadané skupiny mohou na zadaném web serveru spouštět zadaný příkaz jako uživatel www

66 3.1 UŽIVATELÉ A SKUPINY 58 pepa mailserver = /bin,!/bin/su zadanému uživateli na mailserveru dovolíme spouštět cokoliv z adresáře /bin kromě příkazu su (zde vidíme zápis negace), musejí autentizovat sami sebe (pracují pod svým účtem, není zde nic v závorkách) fileadmin ALL,!mailserver = ALL zadaný uživatel může spouštět vše na všech strojích kromě mailserveru ALL = (ALL) NOPASSWD: /sbin/shutdown všichni mohou všude spustit příkaz, který vypíná počítač, nebude vyžadováno heslo Abychom nemuseli pokaždé zadávat dlouhé sekvence příkazů, je možné definovat tzv. aliasy sekvencí (to není totéž co alias příkazu). Rozlišují se aliasy pro uživatele (User_Alias), pro počítač (Host_Alias), pro efektivního uživatele (Runas_Alias) a pro spouštěný příkaz (Cmnd_Alias). Vestavěným aliasem je například ALL (je vytvořen pro všechny typy aliasů), znamená vše. Příklad 3.3 Ukážeme si práci s aliasy sekvencí pro sudo mechanismus. User_Alias ADMINS=webadmin,mailadmin,honza nadefinovali jsme alias pro uživatele (zde administrátory různých serverů) User_Alias SEKRETARKY=hanka,jana,pepa podobně, pro sekretářky (pokud nastoupí nová sekretářka, přidáme ji do tohoto seznamu) Host_Alias SERVERS=master,mailserver,wwwserver nadefinovali jsme alias pro umístění (zde různé servery) Runas_Alias OPERATORS=root,operator,zalohovac tento alias je použitelný v závorce Cmnd_Alias KILL=/bin/kill,/usr/bin/killall alias pro programy, jejichž spouštění chceme řídit, zde programy pro ukončování procesů Cmnd_Alias KONEC=/sbin/shutdown,/sbin/reboot alias pro programy ukončující systém (vypnutí a restart) SEKRETARKY LOCAL = NOPASSWD: KONEC sekretářky mají právo bez zadávání hesla ukončit nebo restartovat lokální počítač (LOCAL je implicitní alias pro místní počítač, na kterém je uživatel přihlášen) novak ALL,!SERVERS = (ALL) KONEC, KILL uživatel může na všech počítačích kromě serverů v roli všech ukončovat procesy a běh systému

67 3.2 PROCESY A ÚLOHY 59 ADMINS SERVERS = ALL administrátoři mohou na serverech všechno (to není zrovna bezpečné) 3.2 Procesy a úlohy Příkazy pro práci s procesy S procesy můžeme pracovat například pomocí těchto příkazů: top ps Příkaz interaktivně vypisuje seznam procesů, které momentálně běží, a to v pravidelných intervalech. Ukončí se stiskem klávesy q (nebo jiným druhem ukončení). Příkaz top obvykle zobrazuje pouze ty procesy, které zabírají větší než zanedbatelné množství systémových zdrojů (především CPU). Pro řízení výpisu můžeme používat některé klávesové zkratky, například Shift+P setřídí procesy podle zatížení CPU (Processor, může odhalit procesy, které se zasekly), Shift+M podle množství zabrané paměti (Memory), M zapneme nebo vypneme zobrazování informací o paměti zabrané procesy, K umožní bez nutnosti opuštění programu poslat některý signál vybranému procesu (zadáme PID procesu a signál), H nápověda. Vypíše všechny momentálně běžící (running) procesy na určitém terminálu (PID, speciální soubor terminálu, čas CPU, který proces již využil, název procesu). Můžeme použít například tyto přepínače: ps -f přidá ještě některé informace, například UID, PPID procesu, čas spuštění ps -ef totéž co předchozí, ale pro všechny procesy v systému, nejen z mého terminálu (tato forma je zřejmě nejpoužívanější) ps -u uzivatel vypíše procesy určitého uživatele a další informace (zátěž CPU a RAM). ps -eh takto zobrazíme také stromovou strukturu procesů ps -eo uid,gid,sid,nice,nlwp,cmd parametr -o umožní vybrat sloupce, které chceme vypsat ps -ef --sort uid,pid můžeme zadat kritéria třídění (ne všechny sloupce lze takto zadat) ps aux tato syntaxe (přepínače bez pomlček, trochu jiná písmena pro přepínače) se používá na systémech z řady BSD (například FreeBSD), ale je použitelná i v Linuxu (někteří lidé si aux lépe pamatují)

68 3.2 PROCESY A ÚLOHY 60 pstree vykreslí hierarchii procesů (strom vztahů rodič potomek). Můžeme také používat některé přepínače, například -c zobrazí všechny procesy bez shlukování stejně nazvaných, -p zobrazí u každého procesu PID, -a zobrazí také parametry, se kterými byly procesy spuštěny. Program pracuje v pseudografickém prostředí. Podobně fungující program, ale v grafickém prostředí (KDE), jde kpm pgrep proces tento příkaz je vlastně kombinace příkazů ps a grep, vrátí PID zadaného procesu pmap PID podrobný rozpis paměti využívané procesem (nejen vlastněné), také zjistíme, jestli proces využívá sdílenou pamět některé knihovny nebo jiného procesu. PID získáme například pomocí pgrep whereis příkaz takto zjistíme, kde konkrétně se příkaz nachází whereis top zjistíme, kde konkrétně se nachází příkaz top, vypíše se top: /usr/bin/top /usr/bin/x11/top /usr/share/man/man1/top.1.gz To, co hledáme, je obvykle hned první cesta, tj. s celou cestou bychom příkaz spouštěli takto: /usr/bin/top whereis sudo vypíše, kde konkrétně se nachází příkaz sudo (a taky jestli je nainstalován, takto rychle zjistíme, jestli je podporován sudo mechanismus: sudo: /usr/bin/sudo /usr/lib/sudo /usr/bin/x11/sudo /usr/share/man/man8/sudo.8.gz (všimněte si rozdílu v cestě u poslední položky takto poznáme také číslo sekce, ve které je manuálová stránka příkazu, zde 8) Úkoly 1. Spust te interaktivní příkaz, který v pravidelných intervalech zobrazuje seznam běžících procesů. Projděte si manuálovou stránku tohoto příkazu a zjistěte, jak lze ovlivnit délku intervalu, ve kterém jsou informace obnovovány. 2. Zjistěte údaje o procesu s PID 20 kdo je vlastníkem procesu, kdo je jeho rodičovským procesem, jak se proces nazývá. 3. Vypište údaje o procesu s názvem acpid (zajímá nás především jeho PID, PPID, cesta, se kterou byl spuštěn, vlastník, případně další údaje). Pro zkrácení výpisu můžete použít vyhledávací filtr. 4. Zjistěte, jak využívá pamět proces sshd (tj. je třeba nejdřív zjistit jeho PID). 5. Zjistěte, kde jsou nainstalovány programy man, mount, gcc a ls. C

69 3.2 PROCESY A ÚLOHY Skupiny a relace procesů Jak víme, v unixových systémech jsou procesy uspořádány ve stromové struktuře na základě vztahu rodič potomek, potomci byli spuštěni rodičovským procesem. Skupina procesů je seskupení takových procesů, mezi kterými existují blízké rodinné vztahy. Je to vlastně podstrom ve stromové struktuře procesů. Proces, který je v kořeni tohoto podstromu, je hlavním procesem skupiny. Skupina procesů má také své identifikační číslo PGID (Process Group ID). Číslem PGID je PID hlavního procesu skupiny. Typicky tvoří skupinu procesy spuštěné v rámci jediného terminálu. Příklad 3.4 Máme spuštěn program konsole a v něm (v jedné ze záložek) manuálovou stránku některého příkazu. V tom případě je v rámci konsole spuštěna instance shellu, v ní program man, který využívá stránkovač less. Ve výpisu příkazu ps -eho pid,pgid,comm budou kromě jiného i tyto řádky: PID PGID COMMAND konsole bash man less bash ps P M To znamená, že program less patří do skupiny, jejímž hlavním procesem je proces man. Většina systémových procesů má PGID nastaveno na 0. Proces s PID 0 neexistuje, tedy nejsou zařazeny do žádné skupiny. To však neplatí pro všechny systémové procesy. Například proces hald (démon zajišt ující nízkoúrovňový přístup k hardwaru, vrstva HAL) je hlavním procesem své vlastní skupiny procesů (svých potomků). Další skupiny procesů (ale už spíše v uživatelském prostoru) jsou tvořeny inicializačními procesy grafických prostředí (například v KDE jde o kdeinit). Relace (session, sezení) je obdoba skupiny procesů na trochu vyšší úrovni. Relace je také podstrom stromu procesů, může souviset například s procesy jednoho přihlášeného uživatele (typicky souvisí s terminálem, ze kterého jsou procesy spouštěny). Podobně jako skupina procesů je jednoznačně určena svým PGID (což je PID hlavního procesu skupiny), relace je jednoznačně určena svým SID (Session ID), což je PID hlavního procesu relace. P

70 3.2 PROCESY A ÚLOHY 62 V mnoha případech se číslo SID shoduje s číslem PGID, u systémových procesů je to prakticky pravidlo. Odlišnosti najdeme u uživatelských procesů spouštěných ze společného (virtuálního) terminálu. Příklad 3.5 Podíváme se na podobný výpis jako v předchozím příkladu. Ve výpisu příkazu ps -eho pid,sid,pgid,comm budou kromě jiného i tyto řádky: PID SID PGID COMMAND konsole bash man less bash ps M Vidíme, že na některých řádcích se SID a PGID liší. Jednotlivé záložky konzoly (zde jsou zobrazeny dvě, jde o procesy bash) tvoří samostatné virtuální konzoly, v každé konzole je jedna relace sdílející společné SID (což je PID procesu bash, který je v kořeni relace). Skupiny procesů se využívají především z důvodu usnadnění komunikace mezi procesy. Procesy v rámci jedné skupiny jednodušeji komunikují, mohou si posílat tzv. signály. Účelem relací je především zjednodušená správa úloh. S úlohami pracujeme vždy v rámci jedné relace, a uvnitř relace jsou jednotlivé procesy identifikovány kromě svého PID také tzv. číslem úlohy. Kromě toho se také využívají výhody snadnější komunikace mezi procesy v rámci relace, například pokud je ukončován hlavní proces relace, odešle všem svým potomkům signál k ukončení, a tedy se rekurzívně ukončí celý podstrom procesů. Úkoly 1. Spust te příkaz, který slouží k vypsání identifikačních čísel procesu (včetně PGID a SID), jak jste viděli na příkladech. V seznamu najděte skupiny procesů a relace. 2. Do výpisu z předchozího úkolu můžete přidat také další sloupce, například user pro zobrazení vlastníka procesu. C Úlohy a multitasking V shellu bash můžeme s procesy pracovat na vyšší úrovni pracujeme s úlohami. Tento styl práce souvisí s multitaskingem a práce s úlohami vlastně znamená práci v multitaskovém režimu i v textovém shellu.

71 3.2 PROCESY A ÚLOHY 63 Úloha může běžet na popředí, pak pracujeme přímo s ní a nezobrazuje se prompt, taková je nejvýše jedna, běžet na pozadí (třeba nějaký delší výpočet), pak nezabírá prompt a umožňuje nám spustit na popředí jinou úlohu, být pozastavená na pozadí, tedy na popředí může běžet jiná úloha, ale tato úloha zrovna neběží (pozastavené jsou také ty úlohy, které by jinak běžely na pozadí, ale nemají zrovna co dělat). Klávesové zkratky pro práci s úlohami: Ctrl+C Ctrl+Z ukončení úlohy běžící na popředí (některé programy tuto zkratku nereagují) pozastavení úlohy na popředí (platí totéž) Ctrl+L překreslení obrazovky terminálu nebo konzoly (hodí se například tehdy, když úloha na pozadí nečekaně pošle něco na výstup) Když chceme úlohu hned spustit na pozadí, na konec připíšeme jako argument symbol & (za mezeru), například dlouhý_výpočet & Symbol & musí být posledním symbolem na řádku. Některé úlohy mohou běžet na pozadí a nezdržují na terminálu uživatele, který může spouštět jakýkoliv počet jiných úloh. Každá úloha má přiřazeno identifikační číslo úlohy, které není totéž jako PID procesu, ale číslování je jen v rámci terminálu (konzoly) reálně v rámci relace, kde uživatel pracuje (tedy mnohem nižší čísla). Pokud chceme toto identifikační číslo použít jako parametr některého z následujících příkazů, musíme před ním napsat znak %, abychom odlišili číslo úlohy od čísla procesu. Každá úloha, která běží na našem terminálu, má tedy své číslo úlohy, číslo procesu a pak ještě další čísla (PID, SID, atd.). V příkazech je nutné rozlišit číslo úlohy od čísla procesu, tedy, jak bylo výše uvedeno, před číslo úlohy dáváme %. jobs Dále můžeme používat tyto příkazy: Vypíše všechny úlohy na terminálu a jejich stav (běžící, pozastavena apod.), poslední z úloh, které jsme poslali na pozadí, je označena symbolem +, předposlední symbolem - fg [%uloha] Příkazem fg pošleme úlohu, která je na pozadí, zpět na popředí a začnou se vypisovat také její výstupy. Pokud je takových úloh více a příkaz je použit bez parametru, je poslána na popředí ta, která byla jako poslední odsunuta (tj. ve výpisu úloh je označena symbolem + ). Jako parametr můžeme zadat číslo úlohy, která má být přenesena na popředí (nesmíme zapomenout znak %).

72 3.2 PROCESY A ÚLOHY 64 bg [%uloha] Spustí pozastavenou úlohu na pozadí. Opět můžeme v parametru zadat číslo úlohy. Pokud úloha právě nemá co provádět, zůstane pozastavená. Příklad 3.6 Ukážeme si práci s úlohami. Nejdřív spustíme několik interaktivních úloh. yes > /dev/null & spustíme program yes, který nedělá nic jiného, než že vypisuje řádky s písmenem y, tento výstup přesměrujeme do souboru /dev/null, aby se nezobrazoval, symbol na konci zajistí, že proces bude přímo směrován na pozadí; objeví se řádek (číslo může být jiné, zobrazuje se PID procesu): [1] 5783 cat & tento příkaz známe, ted jsme ho spustili na pozadí (nemá co dělat, tak byl pozastaven), vypsalo se [2] 5787 [2]+ Stopped cat rev & tento příkaz narozdíl od předchozího vše, co dostane na svůj vstup, obrací (reverze), vypsalo se jobs fg Ctrl+Z fg %1 Ctrl+Z [3] 5793 [3]+ Stopped rev chceme seznam úloh na tomto terminálu, výpis: [1] Running yes > /dev/null & [2]- Stopped cat [3]+ Stopped rev Symboly + a - nám říkají, která úloha byla na pozadí poslána jako poslední, resp. předposlední. ted jsme na popředí poslali tu úlohu, která byla na pozadí poslána jako poslední tuto úlohu jsme poslali zpět na pozadí, zobrazí se [3]+ Stopped rev kill %1 %2 %3 na popředí pošleme úlohu s číslem 1, tj. yes úlohu jsme poslali zpět na pozadí ukončíme všechny tři úlohy, zobrazí se [1]+ Terminated yes > /dev/null & [2] Terminated cat [3]- Terminated rev M M M M M M

73 3.2 PROCESY A ÚLOHY 65 Úkoly Vyzkoušejte postup ukázaný v příkladu 3.6. Můžete pracovat s interaktivními úlohami v příkladu uvedenými, případně i s dalšími, například ispell (kontrola anglického pravopisu), nslookup (interaktivní překlad DNS názvů na IP adresy), apod. Procvičte si spouštění úloh na pozadí, vypisování úloh, přenášení na popředí, pozastavování a ukončování. C Komunikace procesů Procesy mohou vzájemně komunikovat několika způsoby: posíláním signálů, posíláním zpráv (IPC, InterProcess Communication), zpráva narozdíl od signálu může obsahovat i data, používá se například při synchronizaci procesů, přes sdílenou pamět, do které má přístup více procesů, přes soubory, případně dočasné soubory, používá se i v mechanismu zřetězování příkazů pomocí pipes (rour) nebo socketů, s rourami lze zacházet jako se soubory. Nás zajímají především signály. Běžícím procesům a úlohám tedy můžeme posílat signály (čísla znamenající jednoduché příkazy), například: 1 (SIGHUP) tento signál posílá jádro procesům ve skupině, jejíž hlavní (rodičovský) proces byl zavěšen například terminál či komunikační program ukončen; typickou reakcí procesu na tento signál (především u démonů) je znovunačtení konfiguračních souborů, což je vlastně restart procesu, některé procesy se při obdržení tohoto signálu ukončují. Pokud chceme, aby proces spouštěný určitým příkazem v takovém případě nereagoval na signál SIGHUP (tj. aby démon nenačítal znovu konfiguraci, resp. běžný proces se neukončoval při ukončení rodičovského terminálu či nepřesouval se místo ukončení pod proces init), použijeme pro jeho spuštění příkaz nohup příkaz & 2 (SIGINT) přerušení procesu nebo úlohy z klávesnice (ekvivalent Ctrl+C ) 9 (SIGKILL) bezpodmínečné ukončení (proces po sobě neuklidí prostředky (např. pamět ), zůstanou zabrány, dokud není ukončen rodičovský proces 15 (SIGTERM) implicitní volba (když není uveden žádný signál, vybere se tento), zdvořile požádá proces, aby se ukončil a dá mu možnost po sobě uklidit prostředky, proces může tento signál ignorovat, pokud chceme ukončit strom procesů (v rámci jedné skupiny nebo alespoň se stejným naším UID), použijeme právě tento signál, 19 (SIGSTOP) pozastavení úlohy, ekvivalentní použití klávesové zkratky Ctrl+Z 18 (SIGCONT) pozastavená úloha může pokračovat v činnosti (continue) P

74 3.2 PROCESY A ÚLOHY 66 Signály můžeme posílat pouze svým vlastním úlohám a procesům, kromě roota ten může signál odeslat komukoliv. K posílání signálů slouží příkazy kill, pkill a killall, některé terminálové (konzolové) programy mají tuto volbu také v menu. kill zaslání signálu č. 9 (SIGKILL) procesu s PID 6223 kill -KILL 6223 totéž kill -9 %2 zaslání téhož signálu úloze č. 2 kill %2 pokud nezadáme signál, je poslán signál 15 (SIGTERM) pro standardní ukončení procesu kill -l výpis seznamu signálů (list) pkill -P 5421 pošle signál SIGTERM všem procesům, jejichž PPID (rodičovský proces) odpovídá zadanému pkill -u 1002 ukončí procesy zadaného uživatele (zadáváme UID) killall -g 3981 ukončí procesy ve skupině procesů se zadaným PGID (ukončí celý podstrom, není nutné zvlášt ukončovat jednotlivé procesy ve skupině) Příklad 3.7 Chceme pozastavit úlohu, jejíž PID je 3189 a číslo úlohy je 3. Máme tyto možnosti: kill kill -19 %3 kill -STOP 3189 kill -STOP %3 Je jedno, kterou možnost zvolíme, fungují všechny. Signály se mohou lišit na různých distribucích Linuxu a samozřejmě na různých dalších unixových systémech. Seznam nadefinovaných signálů vypíšeme příkazem kill -l. Příklad 3.8 Došlo k nějaké závadě, která znemožní odhlásit se, potom: přihlásíme se znovu zjistíme číslo starého (běžícího) shellu, který se nám předtím nepodařilo ukončit odhlášením, a to pomocí příkazu ps ukončíme tento shell příkazem kill -9 PID, kde za PID dosadíme zjištěné číslo procesu.

75 3.2 PROCESY A ÚLOHY 67 Úkoly 1. Spust te příkaz cat bez parametrů a pozastavte ho ( Ctrl+Z ). 2. Spust te na pozadí příkaz yes, jeho výstup přesměrujte tak, aby se nevypisoval: yes > /dev/null & 3. Stejně (na pozadí) spust te příkaz rev bez parametrů. 4. Příkazem jobs zobrazte seznam úloh, zjistěte čísla těchto úloh. 5. Obnovte proces yes na pozadí, proces cat zastavte příkazem kill. Vypište seznam úloh a porovnejte s předchozím. 6. Příkaz cat spust te na pozadí, přesuňte ho na popředí a pomocí klávesové kombinace ho ukončete. Ukončete také proces rev a yes. C Plánování spouštění procesů Plánovat spouštění procesů lze dvěma různými mechanismy at a cron. První z nich je jednodušší a slouží spíše k jednoduchému jednorázovému naplánování spuštění úlohy (například za hodinu nebo stanovený den v určitou hodinu), druhý má mnohem širší možnosti. Nejdřív se podíváme na jednodušší mechanismus: at naplánování spouštění programů nebo skriptů v zadaném čase, aby plánování fungovalo, musí být spuštěn démon atd at -l vypíše seznam naplánovaných úloh at now + 2 minutes takto naplánujeme úlohu (jako posloupnost spuštění příkazů a programů), po zadání se objeví prompt PS2 (obvykle symbol >) a můžeme zadávat jednotlivé příkazy, které se v zadané době mají spustit, konec zadávání: klávesová zkratka Ctrl+D stejně jako při vytváření souboru (ale můžeme využít také podobný postup, jaký známe z here documents strana 29) at Mon 18:00 v pondělí 18 hodin at May 15 07: další způsob zadání času (15. května, atd.) at -r 7 ze seznamu naplánovaných úloh odebereme úlohu číslo 7 (číslo úlohy zjistíme s výpisu seznamu úloh) Příklad 3.9 Ukážeme si práci s programem at. Nejdřív ověříme, zda je spuštěn démon atd, když zjistíme, že ne, tak ho spustíme (musíme mít vyšší přístupová oprávnění) a následně naplánujeme jednoduchou úlohu. ps -e grep atd výstup je prázdný (není vybrán žádný řádek)

76 3.2 PROCESY A ÚLOHY 68 sudo /usr/sbin/atd jsme požádáni o heslo a pak je démon atd spuštěn (toto funguje v takové linuxové distribuci, která používá sudo mechanismus; jinak bychom museli zadat příkaz su a pak spustit plánovacího démona) ps -e grep atd 5140? 00:00:00 atd na výstupu bude řádek To znamená, že tento démon už běží (zřejmě bude zobrazeno jiné PID) at now + 2 minutes začneme plánovat, zobrazí se prompt > > touch /novysoubor.txt chceme, aby se v zadané době vytvořil nový soubor v domovském adresáři, klepneme na Enter a pak stiskneme Ctrl+D, prompt PS2 zmizí, jsme informováni o ukončení plánování objevením řádku job 1 at :47 a objeví se běžný prompt PS1, můžeme zadávat další příkazy at -l vypíše seznam naplánovaných úloh, ta naše by tam měla být (pokud ještě neuplynuly ty dvě minuty) ls po dvou minutách si vypíšeme obsah pracovního adresáře, měl by tam být nově vytvořený soubor at 05:01 << KONEC zase budeme plánovat, ale využijeme mechanismus here document, abychom nemuseli lovit v paměti zkratku Ctrl+D, zadáme: > echo Naplánováno > KONEC hotovo, naplánovali jsme, že v zadané době dostaneme zprávu, v této době se zobrazí tato informace: You have new mail in /var/spool/mail/sarka cat /var/spool/mail/sarka zobrazíme obsah zprávy: From sarka@linux-2vp6.site Sat May 15 04:39: Return-Path: <sarka@linux-2vp6.site> X-Original-To: sarka Delivered-To: sarka@linux-2vp6.site Received: by linux-2vp6.site (Postfix, from userid 1002) id 3F471485BA; Sat, 15 May :39: (CEST) Subject: Output from your job 2 To: sarka@linux-2vp6.site Message-Id: < F471485BA@linux-2vp6.site> Date: Sat, 15 May :39: (CEST) From: sarka@linux-2vp.site (Sarka Vavreckova) M Naplánováno Tímto způsobem je tedy uživatel informován o události v systému, která se ho týká, a neplatí to pouze o plánování.

77 3.3 SPRÁVA ZAŘÍZENÍ 69 Nástroj cron je mnohem sofistikovanější. Démon, který sleduje čas a spouští naplánované úlohy, se nazývá crond (aby mechanismus byl použitelný, tento démon musí být spuštěn). V KDE je standardně přítomno grafické rozhraní pro používání tohoto nástroje, kcron. Podíváme se na základní syntaxi: cron nástroj (je spouštěn jako démon), který dokáže plánovat také pravidelné akce, například pravidelné zálohování. man crontab, man 5 crontab, man cron získání nápovědy pro cron crontab -l zobrazí se aktuální seznam naplánovaných úloh (to, co daný uživatel má právo vidět) crontab -e editace záznamů cronu, soubor se otevře v editoru specifikovaném v proměnné VISUAL nebo EDITOR (pokud je to editor vi, měli bychom vědět alespoň to, jak ho ukončit příkazem :q (nebo :wq, pokud chceme před ukončením uložit svou práci), význam je především v tom, že nemusíme zjišt ovat, do kterého souboru vlastně máme záznam ukládat Naplánované úlohy jsou uloženy v souborech /etc/crontab, nebo v některém souboru adresáře /etc/cron.d, a dále především v souborech /etc/crontab základní soubor s naplánovanými úlohami /etc/cron.d/ adresář se soubory v podobném formátu, pro různé uživatele /etc/cron.daily zde jsou úlohy, které mají být spouštěny denně pod účtem root /etc/cron.weekly úlohy spouštěné rootem každý týden /etc/cron.monthly úlohy spouštěné rootem každý měsíc /var/spool/cron/ adresář, ve kterém si cron udržuje informace o konkrétních plánováních, do tohoto adresáře má přístup pouze root, ale ani ten do souborů nezasahuje Každá úloha je na samostatném řádku a má tuto formu: minut hodin den měsíc rok příkaz Pokud údaj nemá být zadán, napíšeme znak *. Příklad 3.10 Pro naplánování spuštění příkazu pro smazání dočasných souborů v zadaném adresáři, a to denně v 14:05, bude v souboru /etc/crontab nebo /etc/cron.daily řádek 5 14 * * * rm -rf /home/uzivatel/*.tmp

78 3.3 SPRÁVA ZAŘÍZENÍ Správa zařízení Pamět ová média Protože jsou všechny adresáře v jediném stromě, odpadá problém s přepínáním mezi disky (oddíly na disku). Přesto však existují příkazy související s disky, které nás mohou zajímat. df du lsof vypíše volné místo na jednotlivých discích (disk free) df ke každému oddílu na disku se vypíšou údaje o velikosti oddílu, kolik je využito (i procenta) a do kterého adresáře je připojen (přípojný bod) df -T ke každému oddílu se vypíše také typ souborového systému (pokud ovladač souborového systému využívá modul FUSE, vypíše se, například místo ntfs, údaj fuseblk ) df -Th kromě výše uvedených údajů se údaje o množství místa zobrazí v lidském formátu včetně jednotek (místo počtu bloků údaje v KB, MB, GB) df -i údaje o dostupném, volném apod. místě se zapisují v počtech i-uzlů (inodes) místo v počtu bloků (tj. máme představu o počtu souborů a adresářů na oddílu) df -a vypíšou se informace o všech připojených souborových systémech včetně mnoha virtuálních (ne všech), tento výpis má smysl například tehdy, když chceme přehled připojených souborových systémů vypíše obsazené místo na disku (disk usage) zabrané konkrétním souborem nebo adresářem (včetně jeho podadresářů, rekurzívně) du vypíše rekurzívně všechny adresáře v pracovním adresáři a ke každému množství místa, které zabírá (v blocích) du -a podobně, ale kromě adresářů vypisuje i ostatní soubory a místo jimi zabrané du -h soubor.pdf pro zadaný soubor vypíše množství místa, které zabírá, použitý přepínač způsobí výpis v lidských jednotkách du -h ls *.txt vypíše místo zabrané soubory s příponou TXT nacházejícími se v pracovním adresáři; příkaz nepracuje jako filtr za jiným příkazem, proto mu dáme výstup příkazu ls jako parametr (obrácené apostrofy jsou nutné, aby se vnořený příkaz vyhodnotil dříve než vnější) vypíše seznam otevřených souborů (vychází ze seznamu procesů, ke každému zjišt uje, které soubory má tento proces otevřené) list open files; zjistíme především název procesu, PID, uživatele, FD (bud číselný deskriptor běžného souboru nebo identifikace typu pracovní adresář, mem soubor mapovaný do paměti, apod., k deskriptoru bývá připojen symbol pro typ otevření r, w, apod.), typ (např. DIR pro adresář, LINK pro symbolický odkaz, IPv4 pro IPv4 socket, atd.), čísla zařízení, offset souboru, číslo i-uzlu a samozřejmě název souboru

79 3.3 SPRÁVA ZAŘÍZENÍ 71 lsof vypíše všechny otevřené soubory, jde o velmi dlouhý výpis (na desktopu obvykle několik tisíc položek) lsof > /seznamlsof.txt to už je lepší, výstup si můžeme prohlédnout v souboru lsof grep \.so[0-9\.]$ > /pouziteknihovny.txt podobně jako v předchozím příkazu, ale na výstup se dostanou pouze používané soubory, které jsou knihovnami (mají příponu.so, za příponou může být ještě číslo verze knihovny) lsof získáme seznam procesů, které pracují s naším domovským adresářem lsof -u uživatel vypíše pouze seznam souborů používaných procesy se zadaným uživatelem (můžeme zadat UID nebo název uživatele, když je jich více, tak je oddělíme čárkami, kolem čárek nesmí být mezery) lsof grep pipe zjistíme, které procesy právě komunikují přes nepojmenovanou (anonymní) rouru lsof grep socket zjistíme, které procesy právě komunikují přes socket sync synchronizace diskových oddílů a cache pamětí fsck mkfs kontrola vadných sektorů na disku (parametry najdeme v nápovědě), ve skutečnosti se používají varianty pro konkrétní souborový systém fsck.ext2, fsck.ext3, raiserfsck, fsck.vfat, fsck.ntfs, apod. apropos fsck takto zjistíme konkrétní příkazy pro různé souborové systémy fsck.ext3 /dev/sd9 provede kontrolu zadaného oddílu se souborovým systémem ext3 (oddíl by měl být odpojen) vytvoření souborového systému (v terminologii Windows zformátování, parametry najdeme v nápovědě), opět existují varianty pro různé souborové systémy mkfs.ext2fs, mkfs.ext3fs, mkfs.vfat, apod. Příklad 3.11 Po zadání příkazu df -ah získáme tento výstup (notebook dualboot Windows 7 a SUSE Linux): Filesystem Size Used Avail Use% Mounded on /dev/sda7 20G 3.8G 16G 20% / /proc /proc sysfs /sys debugfs /sys/kernel/debug udev 2.0G 192K 2.0G 1% /dev devpts /dev/pts /dev/sda8 40G 188M 38G 1% /home /dev/sda9 60G 5.1G 51G 10% /usr M

80 3.3 SPRÁVA ZAŘÍZENÍ 72 /dev/sda2 117G 30G 87G 26% /mnt/winc /dev/sda5 168G 256M 168G 1% /mnt/wind fusectl /sys/fs/fuse/connections securityfs /sys/kernel/security none /proc/sys/fs/binfmt_misc Úkoly 1. Zjistěte, kolik volného místa je na jednotlivých oddílech pevného disku (vyzkoušejte, jestli funguje i na připojená výměnná média, jako například USB flash disky). 2. Zjistěte, kolik místa na disku zabírá adresář s dokumenty ve vašem domovském adresáři. Dále zjistěte, kolik místa na disku zabírá adresář /var/log. 3. Zjistěte, které procesy pracují s vaším domovským adresářem. 4. Zjistěte, které soubory jsou právě používány procesy, jejichž vlastníkem jste vy. 5. Zjistěte, kdo právě používá soubor /dev/null. C Připojování a odpojování pamětí Pro připojení a odpojení diskového oddílu nebo výměnného pamět ového média (na kterém je obvykle jediný oddíl) používáme tyto příkazy: mount připojí disk do systému (resp. jeho souborový systém) umount odpojí disk Soubor fstab. Při správě disků pracujeme opět bud s nástroji dostupnými v grafickém P prostředí, nebo používáme příkazy shellu a soubor fstab a příkaz mount. Soubor /etc/fstab slouží k evidenci připojitelných logických disků. Každý řádek odpovídá jednomu disku nebo oddílu se souborovým systémem. Řádek se skládá z těchto částí: 1. Určení zařízení, které se bude připojovat (speciální soubor), pro různé disky například /dev/sda1, /dev/cdrom, /dev/fd0. V některých distribucích (jmenovitě novější verze SUSE) se můžeme setkat s poněkud chaotickým označením místo /dev/sdax můžeme najít například /dev/disk/by-id/ata-výrobní-kód-disku-partx. 2. Název přípojného bodu (mounting point), přes který bude zařízení přístupné (/mnt/c, /mnt/cdrom, případně /windows/c, /media/cdrecorder). Zde uvedený adresář můžeme určit také sami, jenom ho musíme předem vytvořit.

81 3.3 SPRÁVA ZAŘÍZENÍ Typ souborového systému na zařízení. Může zde být ext2, ext3, reiserfs nebo jiný linuxový souborový systém, vfat, ntfs, msdos pro disky, se kterými pracujeme ve Windows, nfs je pro disky vzdálených počítačů, pro CD je iso9660, pro DVD je to udf (Universal Disk Format), pro swap partition je to hodnota swap. Můžeme se setkat s s volbou auto, to znamená automatické rozpoznání souborového systému při připojování. Je to vhodné například pro diskety, USB disky nebo CD/DVD. 4. Seznam parametrů pro mount. Nejdůležitější jsou ro (pouze pro čtení), rw (i pro zápis), user (připojit může i běžný uživatel, odpojit tentýž uživatel), users (připojit běžný uživatel, odpojit kdokoliv, i někdo jiný), noauto (po startu systému není připojen automaticky, musí se ručně, typické pro výměnná média), iocharset=iso a code=852 (slouží ke správnému nastavení češtiny, může být i jiná znaková stránka), locale=cs_cz.utf-8 podobně, ale pro (Windowsovské) disky s názvy souborů v Unicode, dnes běžné na NTFS, exec (povolení spouštět na tomto oddílu programy), noexec (zakázáno spouštět na tomto oddílu programy, velmi doporučováno pro datové disky), noatime (při přístupu k souboru access nebude aktualizován čas posledního přístupu k souboru, může zrychlit práci s oddílem), nodev (i kdyby byl některý soubor z tohoto oddílu označen jako speciální soubor zařízení, nebude s ním takto zacházeno, bude brán jako obyčejný soubor; z hlediska bezpečnosti se doporučuje pro všechny oddíly, kde se nepočítá s existencí speciálních souborů, například /home, /usr, datové disky), nosuid (nastavené SUID a SGID bity budou ignorovány), sync (zařízení bude při každém zápisu okamžitě synchronizováno, cache pamět se bude využívat jen minimálně; pro SSD disky a USB flash disky je tato volba nevhodná, zkracuje životnost disku), atd. Některé volby jsou použitelné pouze pro některé souborové systémy. Podrobnosti o volbách najdeme v manuálech man fstab, man mount). Pokud jsou uplatňovány ACL a rozšířené atributy přístupu (o nich v následující kapitole), setkáme se u některých oddílů s údajem acl,user_xattr. 5. Pokud je zde znak 1, bude program dump tento oddíl zálohovat. 6. Pokud je zde znak 1 nebo 2, bude program fsck tento oddíl kontrolovat při startu. Hodnota 1 určuje větší prioritu (zkontroluje se nejdřív), používá se pro hlavní oddíl, 2 je pro ostatní. Hodnota 0 se zadává pro ty oddíly, které se nemají kontrolovat (například windows oddíly nebo výměnná média).

82 3.3 SPRÁVA ZAŘÍZENÍ 74 Kořenový oddíl by měl obsahovat v posledních dvou částech znak 1. S jeho řádkem bychom neměli nic dělat, hrozí riziko kolapsu (resp. nespuštění) Linuxu. Příklad 3.12 Soubor /etc/fstab může vypadat například takto (zarovnání do sloupců je provedeno pomocí tabulátorů): /dev/sda6 swap swap defaults 0 0 /dev/sda7 / ext3 acl,user_xattr 1 1 /dev/sda8 /home ext3 acl,user_xattr 1 2 /dev/sda9 /usr ext3 acl,user_xattr 1 2 /dev/sda2 /mnt/winc ntfs-3g users,gid=users,fmask=133,dmask=022, locale=cs_cz.utf /dev/sda5 /mnt/wind ntfs-3g users,gid=users,fmask=133,dmask=022, locale=cs_cz.utf proc /proc proc defaults 0 0 sysfs /sys sysfs noauto 0 0 debugfs /sys/kernel/debug degubfs noauto 0 0 usbfs /proc/bus/usb usbfs noauto 0 0 devpts /dev/pts devpts mode=0620,gid=5 0 0 M Jak víme, v /etc/fstab jsou připojitelné souborové systémy, kdežto v souboru /etc/mtab najdeme seznam souborových systémů, které jsou právě připojeny. Při uvedeném obsahu souboru /etc/fstab najdeme v souboru /etc/mtab tyto řádky: /dev/sda7 / ext3 rw,acl,user_xattr 0 0 /proc /proc proc rw 0 0 sysfs /sys sysfs rw 0 0 debugfs /sys/kernel/debug debugfs rw 0 0 udev /dev tmpfs rw 0 0 devpts /dev/pts devpts rw,mode=0620,gid=5 0 0 /dev/sda8 /home ext3 rw,acl,user_xattr 0 0 /dev/sda9 /usr ext3 rw,acl,user_xattr 0 0 /dev/sda2 /mnt/winc fuseblk rw,noexec,nosuid,nodev,allow_other, default_permissions,blksize= /dev/sda5 /mnt/wind fuseblk rw,noexec,nosuid,nodev,allow_other, default_permissions,blksize= fusectl /sys/fs/fuse/connections fusectl rw 0 0 securityfs /sys/kernel/security securityfs rw 0 0 none /proc/sys/fs/binfmt_misc binfmt_misc rw 0 0 /dev/sdb1 /media/disk vfat rw,nosuid,nodev,noatime,flush,uid=1000, utf8,shortname=lower 0 0 M Každý záznam je samozřejmě na jediném řádku, zde některé dlouhé záznamy přetekly na následující řádek (řádky končící čárkou). Druhý výpis se může zdát méně přehledný, protože jednotlivá pole na řádku jsou oddělována mezerou místo tabulátoru. Poslední vypsaný řádek patří právě připojenému výměnnému zařízení (USB flash disku).

83 3.3 SPRÁVA ZAŘÍZENÍ 75 Všimněte si vztahu mezi údaji v těchto dvou souborech a mezi výpisem, který jsme viděli v příkladu 3.11 na straně 71. Připojování disků. Pokud je v fstab na určitém řádku volba noauto, musíme tento disk sami připojit, abychom ho mohli používat. Týká se to výměnných zařízení, jako jsou CD, DVD, USB flash disky nebo diskety. Tento úkol je snadno řešitelný v grafickém prostředí v kontextovém menu ikony představující pamět ové médium (disketu, flash disk apod.) zvolíme Připojit (Mount), pro odpojení Odpojit (UMount), v různých distribucích mohou být tyto položky různě nazvány. Pokud na ploše (nebo jinde) tyto ikony nemáme, můžeme je tam přidat (v nastavení plochy určíme zobrazovaná zařízení). mount V shellu použijeme například tyto příkazy: (bez parametrů) vypíše připojené disky, podobně jako cat /etc/mtab mount /mnt/wind pokud je tento přípojný bod uvedený v souboru /etc/fstab, pro připojení zadaného oddílu stačí příkazu mount tato informace, tedy připojíme zadaný oddíl mount -o r /mnt/wind mount -o r /mnt/wind mount -o rw /mnt/wind zobrazí seznam připojených oddílů se zadaným souborovým sys- mount -l -t fstype témem připojí systém pouze pro čtení připojí systém pouze pro čtení připojí systém pro čtení i zápis, implicitní volba mount -t vfat /dev/sdb2 /mnt/flash připojení USB flash disku se souborovým systémem FAT32, zadáváme speciální soubor a přípojný bod Připojování a odpojování vyžaduje práva správce systému (pokud nepoužíváme kontextové menu v grafickém režimu), proto před použitím příkazu mount nebo umount použijeme příkaz su nebo sudo pro získání práv superuživatele. Příklad 3.13 Ukážeme si připojování a odpojování disků: mount /dev/sdb1 /home připojí partition 1 druhého disku, na něm jsou domovské adresáře uživatelů (to se obvykle provádí automaticky při startu systému) mount /dev/sda1 /mnt/c -t ntfs připojí partition 1 prvního disku se souborovým systémem NTFS (tady pozor, záleží, jaký ovladač NTFS používáme, většinou by to asi bylo trochu jinak)

84 3.3 SPRÁVA ZAŘÍZENÍ 76 mount /dev/sda3 /usr -t ext3fs připojí partition 3 prvního disku, na ní jsou adresáře instalovaných programů (/usr), souborový systém ext3 mount /dev/fd0 /mnt/floppy -t vfat připojí disketu se souborovým systémem FAT mount /mnt/floppy využití pouze druhého údaje na řádku v fstab umount /mnt/cdrom odpojení CD Pokud přípojný bod není uveden v fstab, musíme příkazu mount dodat i parametry, které by jinak byly v fstab uvedeny (forma je uvedena v man mount). Připojení USB flash disku. Následující postup je v novějších distribucích plně řešen automatickým připojováním (automount, supermount, gnome-mount, apod.), ale hodí se u hodně starých distribucí, které chceme zprovoznit na letitém hardwaru. Když chceme připojit USB flashdisk, nejdřív vytvoříme odpovídající adresář v /mnt, pokud tam ještě není: mkdir -m 666 /mnt/flash (parametrem příkazu mohou být i přiřazená přístupová práva, at tento krok nemusíme dělat dalším příkazem). Pak pro připojení stačí zadat mount -t vfat /dev/sdb1 /mnt/flash (použijeme samozřejmě správný speciální soubor, může být jiný než zde uvedený). Jestliže si chceme trochu zjednodušit připojování, můžeme do fstab přidat řádek /dev/sdb1 /mnt/flash vfat noauto,users,sync 0 0 Pak stačí pro připojení zadat jen mount /mnt/flash nebo flashdisk připojíme v grafickém prostředí Program fdisk Jedním z nejdůležitějších programů pro správu disků je program fdisk (podoba s Windowsovským fdiskem je pouze v názvu a v základních funkcích). Příkazy používané v programu jsou v tabulce 3.1. Programem fdisk je možné vytvářet i jiné než linuxové partitions, dokonce i msdos a vfat, ale nedoporučuje se to, DOS a Windows s takto vytvořenými partitions z nějakého důvodu nemusejí pracovat správně. Narozdíl od DOSovského fdisku, který umí vytvořit pouze jednu primární partition a ostantní musí být zahrnuty v extended partition, linuxový fdisk dokáže vytvořit běžné 4 primární partitions. P

85 3.4 MODULY JÁDRA 77 Příkaz fdisk -l /dev/hda fdisk /dev/hda man fdisk klávesa M klávesa P klávesa N klávesa D Význam vypíše informace o udaném disku zobrazí se okno pro práci s diskem nápověda k fdisku, nápověda při práci s programem zobrazí oddíly disku vytvoří novou partition (program nás vede, občas stiskneme nějakou klávesu, udáme začátek a velikost partition) smaže partition Tabulka 3.1: Příkazy fdisku Hlavní a vedlejší číslo zařízení, udev Jádro nepracuje s řetězcovými názvy zařízení, ale pouze s jejich číselným označením. Každé zařízení má přiřazena dvě čísla: Hlavní číslo je jedinečné pro každý druh zařízení, Vedlejší číslo je jedinečné pro každou instanci druhu zařízení. Například když máme dvě sít ové karty, budou mít stejné hlavní číslo, ale jiná vedlejší čísla. Ve výstupu příkazu ls -las /dev jsou tato čísla uvedena tam, kde u běžných souborů je jejich délka. Čísla zařízení se také obvykle dají zjistit v některém z nástrojů v grafickém rozhraní. Pokud je pro správu zařízení místo devfs použit souborový systém udev (což je dnes obvyklé), pak jsou čísla zařízení dynamicky generovaná. Souborový systém udev, jak již víme, slouží ke správě přístupu k zařízením. Jedná se o virtuální souborový systém, který poskytuje rozhraní mezi procesy a ovladači zařízení běžícími převážně v jádře. Jeho činnost zajišt uje démon udevd, který periodicky zjišt uje informace ze souborového systému sysfs. Díky tomu má neustále přehled o změnách v seznamu připojených zařízení a může včas na tyto změny reagovat. Úkoly Vypište obsah adresáře /dev tak, aby se u každého speciálního souboru zobrazilo hlavní a vedlejší číslo zařízení. Zjistěte hlavní a vedlejší číslo zařízení odpovídajících oddílům na vašem pevném disku. P P C

86 3.4 MODULY JÁDRA Moduly jádra Jádro Linuxu (technicky vztato, Linux je právě jádro) je monolitické a rozšiřitelné pomocí modulů. Úkolem modulů je tedy rozšiřovat funkčnost jádra. Existují různé druhy modulů, například ovladače zařízení, ovladače souborových systémů, moduly zajišt ující funkčnost sítě (například ovladače sít ových protokolů), firewall, moduly pro sledování hardwaru včetně stavu baterie nebo teploty procesoru. Moduly jsou uloženy v souborech s příponou KO (kernel object). Obvykle jsou uloženy v adresáři /lib/modules/...kernel/, kde najdeme podadresáře nazvané podle typů modulů (fs, net, crypto, apod.), ve kterých již jsou soubory s příponou KO. Moduly lze do jádra zavádět za běhu, obvykle není třeba restartovat systém. Pokud je však modul špatně napsaný, může se stát, že při výskytu chybného či podezřelého chování bude nastaven některý z tained příznaků, což právě znamená problém v jádře, a jediný způsob, jak se těchto příznaků zbavit, je restart. Některé z tained příznaků jsou vážné (například hardwarová chyba paměti ), jiné se moc neřeší (například načten modul s nevyhovující licencí, jako je proprietální nebo neuvedená). Pro práci s moduly jádra můžeme využít například tyto příkazy: /sbin/lsmod (list modules) vypíše seznam modulů, které jsou právě zavedeny v jádře, ke každému také jeho velikost a kým je používán (zde zjistíme také závislosti modulů), tento program jednoduše načte a zformátuje údaje uvedené v souboru /proc/modules, tedy alternativně můžeme použít příkaz cat /proc/modules /sbin/modprobe slouží k zavádění modulů do jádra nebo jejich odstraňování, také zjišt uje závislosti mezi moduly a při zavedení každého modulu zavede i moduly, na kterých je závislý Úkoly /sbin/modprobe eth0 zavede do jádra modul eth0 /sbin/modprobe -r fuse odstraní z jádra zadaný modul a všechny moduly, které ho používají (pokud to jde; kdyby některý z modulů byl používán jakýmkoliv procesem, odstranění by nemohlo proběhnout) /sbin/modprobe -l nfs* vypíše všechny existující moduly (přesněji jejich soubory) vyhovující zadané masce /sbin/modprobe -l grep bluetooth pokud se hledaný řetězec nenachází přímo v názvu modulu, ale například v názvu adresáře, ve kterém je soubor modulu uložen, použijeme pro vyhledávání raději grep 1. Zjistěte, které moduly jsou právě načteny v jádře. 2. Vypište seznam souborů modulů jádra, které ve svém názvu obsahují řetězec ipv4 (tento řetězec může být z obou stran obklopen jakýmikoliv znaky). P C

87 3.5 OPERAČNÍ PAMĚŤ Vypište seznam všech souborů modulů obsahujících řetězec irda. 4. Zjistěte, které moduly se vztahují k firewallu netfilter (tento řetězec nemusí být nutně v názvu souboru, pravděpodobněji jej najdete v názvu adresáře). R 3.5 Operační pamět V případě operační paměti můžeme používat tyto příkazy: free zobrazí informaci o využívání operační paměti (především kolik operační paměti je volné, jak je používán odkládací prostor apod.) pmap PID vypíše seznam všech souborů, které má zadaný proces namapovány v paměti, také údaje o využívání paměti procesem (kolik má soukromé paměti pro zápis a pro čtení, a kolik sdílené), mezi položkami je také pamět zásobníku (stack) a haldy (heap) Veškeré údaje o využívání operační paměti (více než příkazem free) zjistíme ze souboru /proc/meminfo. Některé údaje o využívání paměti procesem získáme také příkazem top. Zatímco v tradičních unixových systémech se virtuální pamět spravuje pomocí odkládání (swapování, tedy odkládání celého nedělitelného adresového prostoru procesu), v Linuxu je používáno stránkování (paging, odkládání jednotlivých stránek procesu), třebaže je pro tuto činnost z historických důvodů také používán pojem swap. Délka stránek, na které je rozdělena virtuální pamět, je obvykle 1 kb nebo 4 kb, podle velikosti bloků na disku, kam se pamět odkládá. V Linuxu je swapování optimalizováno tak, aby v případě nutné potřeby dalšího volného místa ve fyzické paměti byla menší pravděpodobnost, že bude potřeba odkládat některé stránky do swapu stránky, které se nepoužívají, i když jsou rezervovány, jsou odloženy, aby zbytečně nezabíraly místo ve fyzické paměti. Používá se bud swap soubor nebo swap partition (doporučuje se spíše partition), swap partition nemá žádný souborový systém (nelze ji připojit), v souboru fstab ale musí být uvedena (pokud je používána, samozřejmě) a místo označení souborového systému je zde řetězec swap. Swapovacích souborů i partitions může být používáno i více (obvykle až 8). Příklad 3.14 Nové swap soubory můžeme vytvářet podle potřeby za běhu systému, vytvoříme soubor s určitými vlastnostmi (musí to být soubor bez prázdných míst s vhodnou délkou). dd if=/dev/zero of=/novy_swap bs=4096 count=65536 jeden ze způsobů vytvoření souboru vhodného pro použití jako swap

88 3.6 SÍŤ 80 mkswap /novy_swap převedení existujícího souboru na swap soubor (na jeho začátek se zapíšou potřebné řídicí struktury, provádí se obvykle jen při instalaci) swapon /novy_swap zapnutí používání souboru pro swapování, může to být kterýkoliv soubor, který byl označen pomocí mkswap Pokud chceme používat swap partition, stačí, když je uvedena v souboru fstab s označením swap (může jich opět být více než jedna), zapnutí používání těchto oblastí pro swap se provádí také příkazem swapon. Pokud máme instalováno více operačních systémů, za jistých okolností a po provedení některých nastavení mohou sdílet stejný odkládací prostor. 3.6 Sít Při práci se sítí především používáme protokoly ftp, telnet nebo ssh (ostatní jsou používány spíše v grafickém prostředí, např. http). Ke spuštění těchto protokolů obvykle slouží příkazy stejně pojmenované. ftp počítač přenos souborů; je nutné přihlásit se k počítači, který zadáváme (tj. přihlásit se). Po přihlášení obvykle můžeme zobrazit seznam příkazů, které můžeme používat, zadáním?. telnet počítač příkaz pro vzdálené připojení k UNIXovému serveru, na kterém máme konto, je vyvolána přihlašovací procedura. Používáme všechny příkazy výše (i níže) uvedené, jakobychom seděli přímo u počítače, na který se přihlašujeme, včetně vyvolání nápovědy. Práci s telnetem ukončíme klávesou q. ssh <počítač> podobně jako telnet, ale spojení je šifrované, proto bezpečnější, doporučuje se používat místo telnetu. Dále v UNIXu samozřejmě najdeme prostředky pro komunikaci mezi uživateli přihlášenými ke stejnému UNIXovému systému, elektronickou poštu, atd. Při správě malé sítě se může používat soubor /etc/hosts, který obsahuje doménové adresy a aliasy pro určité IP adresy v malé síti, je zde také například řádek localhost Tento soubor je používán protokolem IPv4 iipv6, takže na systému podporujícím oba protokoly zde budou i řádky pro protokol IPv6, například ::1 localhost ipv6-localhost ipv6-loopback fe00::0 ipv6-localnet

89 3.6 SÍŤ 81 ff00::0 ff02::1 ff02::2 ff02::3 ipv6-mcastprefix ipv6-allnodes ipv6-allrouters ipv6-allhosts Z nejdůležitějších příkazů pro práci se sítí: ping [-c n] [-R] počítač zjištění dostupnosti a odezvy určité IP nebo doménové adresy. Funguje prakticky stejně jako tento příkaz ve Windows. Odesílá cílovému počítači testovací zprávy ICMP request (každou sekundu) a čeká na odezvu. Příkaz pracuje interaktivně, jeho činnost přerušíme například stiskem kláves Ctrl+C, pak vypíše souhrnnou statistiku (kolik paketů bylo odesláno, přijato, podíl ztracených, dále odezvu cílového počítače nejrychlejší, průměr a nejpomalejší odpověd, střední odchylka). Cílový počítač zadáváme bud jeho IP adresou, nebo jeho URL (tj. Přepínač -c určuje, kolik paketů má být odesláno, přepínač -R zobrazí všechny uzly sítě, přes které vedla komunikace, další volby zjistíme z manuálových stránek. ifconfig zjištění MAC adresy (to je hardwarová adresa sít ové karty adresa na spojové vrstvě v OSI modelu), a také IP adresy pro určité rozhraní, masky sítě, atd., přidělení IP adresy určitému rozhraní (například ethernetové kartě jako rozhraní použijeme eth0), je v adresáři /sbin ifconfig -a zobrazí informaci o všech sít ových rozhraních ifconfig eth0 zobrazí informaci o sít ovém rozhraní eth0 (to obvykle bývá ethernetová karta), výstup může vypadat takto: eth0 Link encap:ethernet HWaddr 00:0a:31:8a:75:72 inet addr: Bcast: Mask: M ifconfig eth0 down inet6 addr: fe52::126a:24af:ff8b:818b/64 Scope:Link UP BROADCAST NOTRAILERS RUNNING MULTICAST MTU:1500 Metric:1 RX packets:3612 errors:3558 dropped:0 overruns:0 frame:0 TX packets:2344 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes: (375.5 KiB) TX bytes: (780.1 KiB) Interrupt:19 Base address:0x2024 shodí zařízení eth0 (zneaktivní tuto kartu)

90 3.6 SÍŤ 82 ifconfig eth0 up aktivuje zařízení eth0 ifconfig eth0 down hw ether 00:00:00:00:00:02 kromě toho, že zneaktivní zařízení eth0, také mu přiřadí MAC adresu; podpříkaz hw ether adresa znamená, že jde o ethernetovou kartu, které přiřazujeme danou adresu (před podobnými změnami je vždy nutné kartu zneaktivnit) ifconfig eth netmask up nastaví IP adresu a masku podsítě pro eth0, pak je zaktivní (předpokládáme, že předtím byla tato karta neaktivní) Tento příkaz má další volby, kterými lze například určovat multicast a broadcast adresy, přidělovat zdroje (I/O pamět, IRQ apod.), nastavovat metriky, atd. netstat kontroluje konfiguraci a provoz na síti, velmi komplexní nástroj s různými přepínači (pro zobrazení směrovací tabulky, zobrazení spojení, atd.) pokud nepracujeme s přístupovými oprávněními roota, vypisují se pouze informace o našich vlastních procesech a jejich spojeních arp netstat -a vypíše všechny nejdůležitější informace (otevřené sít ové porty, vzdálený systém, se kterým se komunikuje, stav spojení netstat -natp grep LISTEN zobrazí všechny otevřené porty protokolu TCP (přepínač -t, pro UDP by byl přepínač -u), součástí výpisu budou také procesy, které porty otevřely (přepínač -p), filtrujeme pouze naslouchající procesy (čekají na příchozí spojení) Implementace příkazu netstat se liší na různých unixových systémech, především na BSD systémech se setkáme s odlišnými přepínači nebo mírnými odlišnosti v množství vypsaných informací (sloupců) u tohoto příkazu. Některé podobné informace získáme také z výstupu příkazu lsof, se kterým jsme se seznámili již dříve (strana 70). práce s tabulkami ARP (tyto tabulky slouží k rychlejšímu překladu mezi IP adresou a hardwarovou MAC adresou sít ové karty) arp -a -n zobrazí ARP tabulku, druhý přepínač znamená, že všechny adresy se zobrazí v číselném tvaru (místo doménových názvů) arp -n -i eth1 zobrazí ARP tabulku zadaného sít ového rozhraní (to následuje za přepínačem -i) arp -s i eth1 přidání záznamu do ARP tabulky pro kartu eth1 arp -d i eth1 odebrání záznamu z ARP tabulky pro kartu eth1

91 3.6 SÍŤ 83 arping [přepínače] počítač příkaz s podobnou funkcí jako ping, ale používá jiný typ paketů (pakety posílané příkazem ping mohou být některými servery a firewally ignorovány či zahazovány). Můžeme používat přepínač -c a také některé další přepínače se stejným významem jako u ping, dále např. přepínač -b způsobí, že všechny pakety budou zasílány formou broadcast (bez tohoto přepínače pouze první dotaz, ten slouží ke zjištění, kde hledat uzel sítě s danou IP adresou). traceroute počítač tento nástroj slouží k trasování (vypsání cesty k zadanému počítači). Je obvykle v adresáři /sbin nebo /usr/sbin. Funguje podobně jako ping -R, ale výpis je podrobnější a možnosti příkazu rozšiřují další přepínače (v manuálových stránkách). route práce se směrovací tabulkou host tento jednoduchý program převádí IP adresu na DNS a naopak, podle toho, jaký parametr zadáme. Různými parametry můžeme řídit další zobrazované informace. nslookup kontrola činnosti DNS serveru (bez parametrů: vyhledá DNS servery pro danou doménu, případně můžeme program spustit v interaktivním režimu (spuštění bez parametrů), ve kterém zadáváme příkazy interpretované programem nslookup, nápověda se zobrazí příkazem help named správa a přístup k DNS (jmenné služby), program byl původně používán ve větvi BSD, ted je na většině unixových systémů včetně Linuxu iptables konfigurace firewallu netfilter (což je standardní firewall v Linuxu, podrobněji v následující kapitole), existují další nástroje včetně těch s grafickým rozhraním, které zjednodušují práci s firewallem Vybavenost unixových systémů nástroji pro práci se sítěmi je obecně vysoká, ovšem v každém unixovém systému svým způsobem specifická. Některé firmy distribuující unixové systémy přidávají své vlastní typické nástroje. Odlišnosti jsou také v souborech a adresářích, které se sítěmi souvisejí. Většina konfiguračních skriptů obvykle bývá v adresáři /etc/sysconfig/network a jeho podadresářích, v některých linuxových distribucích to je adresář /etc/rc.d/rc.inet1 (Slackware), /etc/conf.d/net (Gentoo) nebo /etc/network (Debian). Dynamické (momentální) nastavení sítě obvykle najdeme v podadresářích a souborech v systému /proc, například v souborech /proc/net/arp, /etc/networks, /etc/hosts, /etc/ethers. P

92 3.6 SÍŤ 84 Úkoly 1. Projděte si všechny konfigurační soubory související se sítěmi, které byly zmíněny v této sekci a které jsou dostupné ve vaší distribuci. 2. Zjistěte dostupnost serveru Zjistěte cestu přes směrovače k tomuto serveru. 3. Zjistěte (vypište) informace o sít ových rozhraních na svém počítači. 4. Projděte si manuálovou stránku příkazu netstat a zjistěte nejdůležitější přepínače. Porovnejte s přepínači, které se používají u stejnojmenného příkazu ve Windows. C R

93 Kapitola 4 Nasazení systému V této kapitole se budeme zabývat pokročilými mechanismy řízení přístupu, popisem běhu systému včetně jeho startu, nástroji na logování provozu, firewallem, projdeme si instalaci systému a aplikací včetně příkazů pro balíčkovací systémy, a v neposlední řadě se podíváme na možnosti zabezpečení Linuxu. 4.1 Pokročilé mechanismy řízení přístupu POSIX ACL V normě POSIX, kterou již (alespoň podle jména a určení) známe z předchozího semestru, jsou definovány také bezpečnostní seznamy řízení přístupu, ACL (Access Control List). Samotné ACL se ukládají jako metadata souborového systému ve formě rozšířených atributů. Podobně jako u ACL ve Windows nebo v sít ových zařízeních, i zde jde o to pro vyjmenované uživatele nebo členy skupin definovat přístupová oprávnění (jde o jemnější rozdělení než vlastník skupina zbytek). Princip přístupových oprávnění rwx je vpodstatě zachován, jen máme více možností pro jejich přiřazování. Rozlišujeme tři typy ACL: ACL pro uživatele, ACL pro skupiny, ACL pro ostatní Pro práci s ACL slouží více různých příkazů. Jejich seznam (resp. seznam souvisejících manuálových stránek) můžeme získat například takto: apropos -s 1 acl ; apropos -s 8 acl (vypíšeme příkazy, které v popisu obsahují tuto zkratku, a to pouze z manuálových stránek v sekcích 1 a 8). P 85

94 4.1 POKROČILÉ MECHANISMY ŘÍZENÍ PŘÍSTUPU 86 Výstup může vypadat takto: aclocal (1) - manual page for aclocal chacl (1) - change the access control list of a file or a directory getfacl (1) - get file access control lists setfacl (1) - set file access control lists smbcacls (1) - Set or get ACLs on an NT file or directory names slapacl (8) - Check access to a list of attributes tcpdmatch (8) - tcp wrapper oracle vfs_gpfs (8) - gpfs specific samba extensions like acls and prealloc Nás zajímají především příkazy getfacl a setfacl, které slouží k zobrazení a změnám ACL seznamů. Existující nastavení můžeme také exportovat (zálohovat) do souboru. Příklad 4.1 Mechanismus ACL je transparentní, přístupové funkce fungují i v případě, že není zapnutý. Například na systému s nainstalovanými (to je obvyklé) a vypnutými ACL (nepoužívanými) při zadání příkazu getfacl /.bashrc získáme tento výstup: # file:.bashrc # owner: sarka # group: users user::rw- group::r-- other::r-- M M Pokud je na zadaný soubor uplatněn ACL, například uživateli nadrizeny mají být explicitně nastavena práva rw-, pak by zde byl jeden řádek navíc, a to user:nadrizeny:rw- Tedy formát výpisu je celkem jednoduchý. Nejdřív (zakomentovaně) je uveden název souboru či adresáře, vlastník a skupina, následují řádky s nastavenými ACL ve formě typacl:jméno:oprávnění s tím, že pokud jméno není uvedeno, jedná se o výchozí nastavení (u typu pro uživatele nastavení pro vlastníka, u typu pro skupinu nastavení pro výchozí skupinu souboru, u typu ostatní pro nevyjmenovaný zbytek světa). Příklad 4.2 Změnu ACL provedeme takto: setfacl -m u:nadrizeny:rw-,g::rw--,g:apache:rwx,o:--- soubor

95 4.1 POKROČILÉ MECHANISMY ŘÍZENÍ PŘÍSTUPU 87 Jednomu z uživatelů jsme nastavili právo čtení a zápisu, skupině souboru taktéž, skupině vytvořené pro webový server apache jsme povolili vše (pozor, aby to bylo opravdu nutné) a zbytku světa jsme vše zakázali. Všimněte si, že v poslední části nastavení ACL (pro zbytek světa) nejsou dvě dvojtečky, ale jen jedna. To je zcela vpořádku, u ostatních se ani nepočítá s možností zadávat něčí jméno. Lze definovat také masku, která například sníží všechna oprávnění, která byla explicitně nadefinována. Úkoly V manuálových stránkách zjistěte, jak lze při nastavování ACL některého adresáře použít rekurzi. C Atributy Atributy v souborových systémech. Některé souborové systémy v Linuxu dnes podporují atributy. Jedná se především o souborové systémy ext2 a ext3, ale podporu atributů (trochu jinak pojatých) najdeme také například u XFS. Atributů je celkem dost (a rozhodně nemají nic společného s tím, co známe jako atributy u souborových systémů pro Windows). Kromě jiného jsou užitečné například P i soubor nelze modifikovat, smazat ani přejmenovat, ani na něj nelze vytvořit odkaz a soubor lze otevřít pouze v režimu append (tj. můžeme jen přidávat data na konec, ale ne modifikovat původní obsah), hodí se například u důležitých LOG souborů S (velké S) po provedení jakýchkoliv změn dojde k okamžité synchronizaci, tj. data jsou okamžitě zapisována na disk I (velké I) je nastavován automaticky u všech adresářů, které byly indexovány pro vyhledávání A znamená, že u souboru nebude při přístupu k němu aktualizována hodnota atime (access time), což u často otevíraných souborů může urychlit práci s nimi s (malé s) je nastaven u souborů, jejichž smazání má být důkladné, bohužel implementace tohoto atributu je odlišná v různých distribucích a nemusí být zcela bezpečná (například obsah souboru může být při mazání přepsán nulami, náhodnými hodnotami, a nebo v nejhorším případě nemusí být na něj vůbec brán zřetel)

96 4.1 POKROČILÉ MECHANISMY ŘÍZENÍ PŘÍSTUPU 88 S atributy pracujeme pomocí těchto příkazů: lsattr vypíše nastavené atributy pro zadaný soubor nebo více souborů (názvy souborů použijeme jako parametry příkazu), seznam souborů (či adresářů) můžeme tomuto příkazu předat i přes rouru (například ls -a lsattr) chattr slouží ke změně atributů souboru (některé atributy nelze měnit, například atribut o indexaci), jako parametr píšeme název souboru, jehož atributy chceme nastavovat, dále atribut a případně další volby (například pro rekurzivní nastavení atributů) chattr +s soubor.txt nastavení atributu s pro zadaný soubor, po zadání příkazu lsattr soubor.txt získáme tento výstup: s soubor.txt chattr -d souborbezzalohy.sh takto odebíráme atribut (nastavený atribut d znamená, že soubor nebude automaticky zálohován, tedy odstraněním atributu jsme zajistili, že soubor bude zálohován, pokud je to nastaveno pro daný oddíl) Rozšířené (extended) atributy. Mechanismus rozšířených atributů umožňuje definovat P vlastní názvy atributů (a samozřejmě i jejich hodnoty). Nejsme tedy odkázáni jen na omezenou množinu atributů souvisejících se souborovým systémem. Rozšířené atributy jsou používány především v souvislosti se zvýšením zabezpečení, setkáme se s nimi například v modulu SELinux a na nich je také založen mechanismus POSIX ACL. Pro práci s rozšířenými atributy slouží příkazy getfattr a setfattr PAM Systém PAM (Pluggable Authentication Modules) je mechanismus rozšiřujících bezpečnostních modulů používaný na Linuxu, ve FreeBSD a v Solarisu. Pomocí PAM lze například povolovat přihlášení jen v určitý čas a pouze z určitého místa (terminálu), stanovit limity na prostředky (počty spuštěných procesů na relaci, spotřebu paměti, apod., takto můžeme do určité míry zabránit útokům typu DoS), volit různé metody šifrování hesel, atd. Je to systém založený na zásobníku s moduly (pam_stack) s tím, že při autentizaci uživatele je zásobník procházen shora dolů a každým modulem musí projít, tedy každý modul v zásobníku musí dát souhlas s autentizací. PAM využívají různé služby, ke kterým se autentizují uživatelé (kromě jiného také služba přihlašování uživatele do systému nebo některé démony pro přístup ke své konfiguraci). Pokud služba chce využívat PAM, vytvoří si vlastní zásobník modulů, který specifikuje v souboru v adresáři /etc/pam.d. Tedy celkově je třeba vytvořit v tomto adresáři vlastní soubor a v něm specifikovat svůj zásobník. Pokud služba nechce vytvářet vlastní soubor, může použít výchozí /etc/pam.d/other. P

97 4.1 POKROČILÉ MECHANISMY ŘÍZENÍ PŘÍSTUPU 89 Svůj zásobník si služba může vytvářet z modulů uložených v souborech, které se obvykle jmenují stejně a mají příponu.so). Modulů je celkem hodně, například: pam_access lze omezit místa, odkud se uživatel (nebo skupina uživatelů) může přihlašovat (platí i pro vzdálená přihlášení, lze zadat také IP adresy) pam_time lze omezit čas přihlašování uživatelů pam_securetty omezení možnosti přihlášení uživatele root ze specifikovaných zařízení (definujeme bezpečné terminály pro přihlášení roota) pam_cracklib kontrola hesel, zda nejsou snadno prolomitelná tzv. slovníkovým útokem pam_pwhistory ukládá se historie hesel, čímž se dá zabránit, aby si uživatelé (nucení si občas měnit heslo) například nevolili cyklicky střídavě pár hesel pam_tally tento modul sleduje množství neúspěšných přihlášení, která následují přímo za sebou; stanovíme hranici (například 3) a po překročení této hranice lze usoudit, že jde o slovníkový útok na heslo, tedy zablokujeme účet pam_userdb při autentizaci se používá databáze Berkeley DB database (je indexována podle přihlašovacího jména, ke každému je uloženo heslo) Seznam modulů získáme například z manuálových stránek, můžeme zadat apropos -s 8 pam Každý PAM modul musí být nějak nakonfigurován. Konfigurace je obvykle uložena v souborech /etc/security/název.conf, například konfigurace modulu pam_access je v souboru /etc/security/access.conf. Tyto soubory jsou obvykle dobře okomentovány, tedy pokud chceme konfiguraci změnit, obvykle nebývá problém. Příklad 4.3 Konkrétní konfigurace ale může být uvedena také přímo u názvu modulu. Například do souboru /etc/pam.d/login přidáme řádek account required /lib/security/pam_tally.so deny=3 no_magic_root To znamená, že po třech selháních přihlášení (deny=3) bude účet zablokován, a platí to i pro přihlašování roota. Existují také další parametry, které bychom zjistili v manuálové stránce (man pam_tally, například doba, po kterou má být účet zamknut). Úkoly 1. Podle návodu v textu vypište seznam PAM modulů. 2. Dále se podívejte do adresáře /etc/pam.d a vypište si obsah některých souborů, které v něm najdete. C

98 4.1 POKROČILÉ MECHANISMY ŘÍZENÍ PŘÍSTUPU Capabilities (kvalifikace) Capabilities (kvalifikace, také schopnosti) představují nízkoúrovňový mechanismus (na úrovni jádra) řízení přístupu. Můžeme je chápat jako nízkoúrovňové ACL stanovené pro určité typy operací (ne pro objekty). Konkrétnímu uživateli lze přiřadit nebo odebrat určité oprávnění k provádění stanovené činnosti. Některé z nejdůležitějších kvalifikací: CAP_CHOWN CAP_KILL CAP_SETPCAP jádra) právo změnit vlastníka souboru právo zasílat signály cizím procesům právo přenášet kvalifikace na jiný proces (standardně mají pouze vlákna CAP_LINUX_IMMUTABLE právo nastavovat některé vlastnosti, například nastavovat či rušit atribut a (soubor lze otevřít pouze v režimu append), je to jedna z mála možností jak ochránit nastavení atributů tato kvalifikace umožňuje provádět nízkoúrovňové I/O operace se za- CAP_SYS_RAWIO řízeními Pro práci s capabilities existují funkce, ale lze také nainstalovat balíček s programem lcap. Capabilities jsou sice funkční, ale problematický mechanismus (především proto, že procesy v uživatelském prostoru nemohou své kvalifikace volně předávat a dědit) Chráněné prostředí pro běh procesu Někdy je vhodné z bezpečnostních důvodů omezit prostředí, ve kterém daný proces běží. Pod pojmem prostředí se zde především myslí dostupnost některých citlivějších souborů a adresářů. Toto upravené prostředí se nazývá chroot (changed root). Jak víme, kořenovým adresářem je root, označovaný symbolem /. Tento adresář vidí jako kořenový většina procesů. Je však možné vytvořit nový adresář někde ve struktuře adresářů, nakopírovat do něj potřebné soubory a adresáře (jen v nejnutnější míře) a sdělit spouštěnému procesu, že tento vytvořený adresář je root a tam má také hledat vše, co bude potřebovat. Skutečný root je pro tento proces neviditelný, vidí pouze ten svůj, virtuální. Při vytvoření a zprovoznění chroot prostředí potřebujeme tyto příkazy: mkdir je třeba vytvořit adresář, který bude pro náš proces viditelný jako root cp do tohoto adresáře musíme zkopírovat soubory a adresáře, které proces potřebuje ke svému běhu, protože jinak by se k nim nedostal chroot tímto příkazem spustíme proces uvnitř našeho chráněného prostředí P

99 4.2 BĚH SYSTÉMU 91 ldd chroot /chranenyadresar program spuštění programu v chráněném prostředí, adresář musí být předem vytvořen a do něj také zkopírován binární soubor s programem, jsou nutná vysoká přístupová oprávnění (tj. například předřadíme příkaz sudo) tento příkaz nám pomůže zjistit knihovny, které zadaný proces potřebuje ke svému běhu ldd /bin/bash vypíše se seznam knihoven, které se dynamicky linkují při spuštění programu /bin/bash (dosadíme svůj program, který chceme spouštět v chráněném prostředí), vypsané knihovny musíme zkopírovat do adresáře pro chráněné prostředí se zachováním adresářové struktury (například zřejmě bude nutné vytvořit podadresář lib pro knihovny) Chráněné prostředí chroot není samospasitelné. Existují způsoby, jak se proces uzavřený v chroot prostředí může dostat ven, například zneužitím příkazů mount nebo mknod (proces by mohl odpojit a znovu připojit souborový systém, čímž by zrušil izolaci, druhým příkazem by mohl vytvořit vlastní speciální soubor zařízení s přímým přístupem do paměti, čímž by zase získal příležitost zrušit svou izolaci). Tyto problémy se dají částečně řešit co největším omezením oprávnění a případně vytvořením chráněného prostředí na oddílu připojeném s takovými volbami jako je například nemožnost interpretovat speciální soubory zařízení a připojení pouze pro čtení. 4.2 Běh systému Inicializace systému a proces init Víme, že před startem systému je spuštěn zavadač (u Linuxu obvykle Grub nebo LILO). Tento zavaděč nejdřív nabídne možnost spuštění nainstalovaných operačních systémů nebo program na kontrolu pamět ových modulů. Předpokládejme, že jsme vybrali některý Linux. Zavádění systému probíhá takto: 1. Jádro je standardně komprimováno, tedy je nutné ho rozbalit, zavést do paměti a zkontrolovat jeho integritu. Také se na začátku zavádí počáteční RAMdisk (initrd). 2. V rámci přípravy inicializace jádra je třeba vytvořit tabulku stránek paměti (protože také jádro bude potřebovat pamět ) a detekovat nejdůležitější hardware (především procesor). 3. Inicializace jádra znamená reálné spuštění celého jádra. Zahrnuje vytvoření potřebných datových struktur pro správu procesů, pamětí apod., nastavení obsluhy přerušení, inicializaci ovladačů, které jsou zakompilovány do jádra (některé musejí být zakompilovány, aby vůbec jádro mohlo fungovat, například ovladače disků), detekci P

100 4.2 BĚH SYSTÉMU 92 zařízení. Pokud je nastaveno automatické zavádění modulů jádra, provede se také nyní. 4. Vytvoří se první opravdové výpočetní vlákno, což je proces /sbin/init. Proces init řídí veškeré další operace v systému včetně zbytku startu systému, a je také rodičem všech ostatních procesů. Úkolem tohoto procesu je také korektní ukončení systému. 5. Proces init řídí zbytek zavádění systému, a to pomocí úrovní běhu (viz dále). Provádí inicializaci uživatelské části systému. Jsou připojeny souborové systémy, aktivovány bezpečnostní technologie, sít ová rozhraní, spuštěny démony, nastaveny a nastartovány konzoly, a nakonec také na jedné z konzol (obvykle sedmé) grafické prostředí Úrovně běhu Unixové systémy ve standardu System V přejímají úrovně běhu (v BSD se nepoužívají). Úroveň běhu je stav procesu init. Podle toho, která úroveň běhu je použita, se určuje, které části systému mají být spuštěny. P 0 Zastavení systému (systém neběží) 1 Jednouživatelský režim 2 5 Uživatelské režimy (běžný provoz) 6 Znovuzavedení systému (reboot) Tabulka 4.1: Obvyklé úrovně běhu systému Jednouživatelský režim je používán pro administraci systému, když je potřeba, aby se rootovi v systému nemotali další uživatelé, zvláště tehdy, když potřebuje, aby v některém souborovém systému nebyly žádné soubory otevřené (například při zálohování nebo kontrole konzistence souborového systému). Pro běžný provoz se používají uživatelské režimy, každý unixový systém má pro tento účel stanovenu výchozí volbu (bývá to většinou 3, 4 nebo 5). Výchozí úroveň běhu, která je použita při zavedení systému, je určena v souboru /etc/inittab. Jinou úroveň můžeme nastavit například při startu systému v zavaděči, a to spuštěním jádra s parametrem single (pro jednouživatelský režim) nebo emergency (pro záchranný režim), nebo za běhu systému příkazem telinit. Každý systém si konkrétní význam úrovní 2 5 určuje sám, často bývá odlišena práce bez grafického rozhraní a s grafikou, případně se sítí nebo bez ní. Například úroveň 2 bývá víceuživatelský režim bez sítě a bez grafiky, úroveň 5 je víceuživatelský systém se sítí a grafikou. Při spouštění systému je nastavena určitá úroveň běhu a proces init podle čísla úrovně pozná, co konkrétně má provést. V souboru /etc/inittab je pro každou úroveň běhu

101 4.3 LOGOVÁNÍ PROVOZU 93 stanoven skript určující, co přesně se má provést, a také jsou stanoveny operace, které se mají provést při stisknutí klávesové zkratky Ctrl+Alt+Del. Například tam můžeme najít tyto řádky: # výchozí úroveň běhu: id:5:initdefault: # pokud nestartujeme do záchranného režimu provede se následující: si::bootwait:/etc/init.d/boot # pro jednotlivé úrovně jsou uvedeny skripty, které se mají spustit: 10:0:wait:/etc/init.d/rc 0 11:1:wait:/etc/init.d/rc 1 12:2:wait:/etc/init.d/rc 2 13:3:wait:/etc/init.d/rc 3 14:4:wait:/etc/init.d/rc 4 15:5:wait:/etc/init.d/rc 5 16:6:wait:/etc/init.d/rc 6 # co se má provést v jednouživatelském režimu: ls:s:wait:/etc/init.d/rc S :S:respawn:/sbin/sulogin # co dělat při stisknutí Ctrl+Alt+Del: ca::ctrlaltdel:/sbin/shutdown -r -t 4 now... (celý soubor je celkem dlouhý, plný komentářů). Tento soubor needitujeme, obvykle nebývá důvod. Změny se většinou provádějí spíše ve skriptech, na které je zde odkazováno, jako je soubor /etc/rc.d/rc (jeho první parametr bývá číslo úrovně běhu) a dále skripty, které jsou z něj případně volány. Momentální úroveň běhu zjistíme příkazem who -r Poznámka: Pokud chceme restartovat systém například během instalace (tím není myšlen zoufalý čin při zamrznutí systému, to se v Linuxu obvykle nepřihodí, ale restart z důvodů nového načtení všech konfiguračních souborů), použijeme klávesovou zkratku Ctrl+Alt+Del. Jedná se o regulérní restart, na kterém se podílí operační systém, a nebo jinou operaci, podle nastavení procesu init. Technicky jde o poslání signálu SIGINT procesu init. M E Úkoly 1. Zjistěte, která je momentální úroveň běhu. 2. Prohlédněte si obsah konfiguračních souborů zde uvedených (souborů /etc/inittab, /etc/rc.d/...). C

102 4.3 LOGOVÁNÍ PROVOZU Logování provozu Syslog je mechanismus logování a souvisejících úloh dostupný na každém zařízení, na kterém běží (téměř) jakýkoliv unixový systém včetně Linuxu. Jádrem mechanismu je démon syslogd Vstup syslogu Démon syslogd čte svůj vstup ze zařízení (socketu) /dev/log. Tento vstup filtruje (vybírá to, co ho zajímá) podle konfigurace, která se nachází v souboru /etc/syslog.conf (to je tedy jeho konfigurační soubor) a pak podle nastavení ukládá hlášení o takto zjištěných událostech do jednoho nebo více LOG souborů. Data, která syslogd přijímá, se skládají ze tří částí: kategorie určuje typ nebo odesílatele události, existují tyto kategorie: auth autentizace uživatelů, authpriv informace o autentizaci určená pro administrátora, cron zprávy od démona cron (plánování procesů), daemon zprávy od různých démonů, kern zprávy od jádra (kernel), lpr zprávy od tiskového subsystému, mail zprávy týkající se elektronické pošty, mark časová razítka (timestamps), které se pravidelně zapisují do logu, news diskusní skupiny, security totéž co auth, syslog vlastní zprávy syslogu (i z jiného uzlu v síti), user obvykle zprávy od aplikací v uživatelském režimu, local0 local7 pro tyto kategorie lze definovat vlastní význam, priorita určuje důležitost události: emerg systém je nepoužitelný nebo vážně ohrožen (emergency), alert je nutný okamžitý zásah, crit kritická situace, err chyba, warning varování, notice normální, avšak významná, zpráva, info informativní zpráva, debug ladicí zpráva (debugger), vlastní text zprávy. Tento typ informací tedy syslog získá.

103 4.3 LOGOVÁNÍ PROVOZU Filtrování vstupu Jak bylo výše uvedeno, ve svém konfiguračním souboru má určeno, co s takovým záznamem provést. V tomto souboru jsou záznamy ve formě kategorie.priorita TAB cíl kategorie.=priorita TAB cíl kategorie.!priorita TAB cíl kategorie.!=priorita TAB cíl (priorit může být i více, oddělují se středníkem, totéž platí i o dvojicích kategorie.priorita). Pokud je před prioritou jen tečka, nastavení platí pro uvedenou a všechny vyšší priority. Pokud chceme nastavení omezit jen na zadanou prioritu, přidáme před ni =. Symbol! znamená negaci, tedy pokud je uveden, daná priorita (a všechny vyšší) nebude zahrnuta. Lze kombinovat:!=, nebude zahrnuta pouze uvedená priorita. Mezi prioritami a cílem musí být vždy alespoň jednou stisknutý tabulátor, mezera nestačí. Kategorii můžeme zadat symbolem *. To znamená, že se konfigurace týká jakékoliv kategorie. Cíl určuje, kam konkrétně má být událost oznámena, logována. Může to být bud konkrétní log soubor (výchozí nebo jakýkoliv jiný), nebo výpis na konzolu či přeposlání na jiný počítač v síti. Pokud chceme, aby byla událost oznámena více cílům (například zobrazena určitému uživateli a zároveň uložena do souboru), oddělíme cíle čárkou. Možnosti: soubor výchozí je /var/log/messages, ale můžeme si určit názvy souborů například pro různé kategorie nebo událost bude přeposlána, user1, user2,... událost bude oznámena zadanému uživateli (to může být root, admin, operator, apod., podle toho, jaké máme vytvořené uživatele), ale jen tehdy, když je uživatel právě přihlášen, * událost bude oznámena všem přihlášeným můžeme použít, pokud v souboru /etc/hosts je definován cíl loghost. Lze použít také přesměrování do pojmenované roury, ze které pak může číst jakýkoliv proces, který určíme (a průběžně zpracovávat oznámení o událostech), stačí uvést název souboru a před něj napsat symbol roury: kern.=err /var/log/jadro Příklad 4.4 Takto nějak mohou vypadat záznamy v souboru /etc/syslog.conf: mail.* /var/log/maillog Všechny události z kategorie mail jsou uloženy do souboru /var/log/maillog

104 4.3 LOGOVÁNÍ PROVOZU 96 security.*;security.!=debug /var/log/secure Všechny události z kategorie security kromě události s prioritou debug jsou uloženy do souboru /var/log/secure cron.* /var/log/cron Všechny události z kategorie cron jsou uloženy do souboru /var/log/cron (to znamená události související s plánovaným spouštěním procesů) kern.debug;auth.notice /dev/console Události týkající se ladění jádra a běžné a přesto významné události autentizace jsou vypsány na systémové konzoli authpriv.* /var/log/secure Všechny citlivější události autentizace jsou uloženy do souboru /var/log/secure lpr.info /var/log/lpd-info Informační zprávy a všechny s vyšší prioritou o událostech z tiskového subsystému se uloží do /var/log/lpd-info *.err admin,/var/log/errors Všechny chybové a vážnější zprávy jsou okamžitě oznámeny uživateli admin (pokud je přihlášen) a zároveň uloženy do souboru /var/log/errors *.=crit /var/log/messages,@loghost,root Všechny kritické události jsou uloženy do souboru /var/log/messages, dále poslány na adresu definovanou pod aliasem loghost a zároveň je okamžitě informován root, pokud je přihlášen *.emerg *,/var/log/emergency O mimořádně nebezpečných událostech jsou informováni všichni přihlášení uživatelé a zároveň je přidán záznam do souboru /var/log/emergency Pokud chceme, aby syslog přijímal zprávy z jiných systémů, musíme spustit démona syslogd s parametrem -d (platí v Linuxu): /usr/sbin/syslogd -m 0 -r Přepínač -m určuje délku intervalu, v jakém se syslogd ozývá, tj. do logu zapisuje, že žije. Nastavením na 0 toto chování zrušíme. Parametr -r znamená remote, syslogd pak naslouchá na portu 514 a přijímá všechny UDP pakety. Na FreeBSD je nutné použít jinou syntaxi: /usr/sbin/syslogd

105 4.3 LOGOVÁNÍ PROVOZU 97 (bez parametrů, protože naslouchání na portu 514 je zde výchozí chování). Na FreeBSD je také možné určit uzly v síti, jejichž UDP pakety budou přijímány. Odlišnou syntaxi (i od této) mají systémy OpenBSD, Solaris a jiné, je tedy třeba vždy prostudovat manuálovou stránku: man syslogd Také je možné, že budeme muset povolit naslouchání služby syslogd na UDP portu. To se provede v /etc/services řádkem syslog 512/UDP, ale je pravděpodobné, že tam takový záznam už je. Na zařízeních, ze kterých jsou UDP pakety přijímány, je pak nastaveno výše popsaným způsobem zasílání na tento sběrný počítač. Pokud syslogd právě běží a my jsme provedli změnu jeho konfigurace (v souboru /etc/syslog.conf), musíme syslogd restartovat, aby zaregistroval změny ve své konfiguraci Výstup syslogu Zatím jsme si ukázali, jaké údaje dostává syslogd na svůj vstup, podle čeho je filtruje a kam je ukládá. Zbývá podívat se, v jakém formátu. Na výstupu je záznam obsahující čas, kdy k události došlo, kategorii (kernel, mail apod.), text zprávy. Součástí není priorita, protože ta už byla uplatněna při filtrování. Může zde být například záznam: Feb 21 10:00:28 IOL kernel: device eth0 left promiscuous mode Když syslog nastavujeme, hodí se možnost vyzkoušení jeho funkčnosti. K tomu může sloužit nástroj logger. Například událost kategorie daemon a priority info se zadanou zprávou vygenerujeme takto: logger -p daemon.info testujeme syslog Ruční správa logů může být celkem náročná. Je třeba hlídat obsah souborů a navíc sledovat jejich délku (včas umazat starší záznamy), stroj naslouchající na UDP portu by měl být dostatečně chráněn (je zde vysoké riziko DoS útoků, tedy firewall je rozhodně na místě). S některými úlohami mohou pomoci přídavné nástroje. Například rotaci logů (včetně označování či odstraňování starších záznamů) zvládne logrotate. Existují také propracovanější verze syslogu, například syslog-ng (umí komunikovat i přes TCP a zvládne také regulární výrazy, nejen hvězdičku, v současných distribucích je velmi oblíbený), nsyslogd (komunikuje přes TCP/SSL), Secure Syslog, Modular Syslog a další. Volně šiřitelný program NTSyslog 1 (vlastně služba, kterou můžeme instalovat), umožňuje používat syslog také ve Windows (logy z Windows lze posílat na vzdálený systém a tam například 1 NTSyslog najdeme na

106 4.4 FIREWALL 98 vyhodnocovat). Nástroj logwatch 2 můžeme použít k sumarizaci logů, provádí analýzu logů za stanovené období a vytváří souhrnnou zprávu. Program swatch 3 je užitečný, když naopak potřebujeme být o určité události informováni pokud možno okamžitě detekuje námi definované situace a stanoveným způsobem informuje, a protože je psán v perlu, je to velmi pružný nástroj využívající regulární výrazy. 4.4 Firewall V novějších linuxových jádrech (od verze 2.4) najdeme firewall NetFilter, což je obousměrný stavový firewall. Jedná se o modul jádra, ke kterému se nepřistupuje přímo, ale přes obslužný program iptables. 4 Základem je chain, tabulka, obsahující pravidla uplatňovaná na pakety. Standardně jsou definovány tři chainy, lze doplnit další. Chain INPUT se uplatní na pakety, které do systému přicházejí. Chain OUTPUT se uplatní na pakety, které ze systému odcházejí. Chain FORWARD je určen pro pakety, které nejsou vytvořeny uvnitř systému a ani pro něj nejsou určeny, předávají se jen mezi rozhraními systému (průchozí pakety). To je případ systému, který slouží například jako směrovač (provoz směrovaný z jednoho portu na jiný). Program iptables umožňuje pracovat s chainy (vytvořit nebo zrušit chain, nastavit výchozí politiku) a s jejich obsahem (přidávat a odstraňovat pravidla v chainu, vypsat seznam pravidel). Například politiku (tj. hlavní zásadu) chainu nastavíme takto: iptables -P FORWARD DROP (velká a malá písmena jsou na daných pozicích důležitá, je to přece Linux), čímž jsme určili, že průchozí pakety, které neodpovídají nastaveným pravidlům v chainu FORWARD (což je chain pro průchozí pakety), budou zahozeny. Potom samozřejmě je nutné v pravidlech povolit takový provoz, který má být povolen. Aby byla konfigurace nejen platná, ale také uložena pro načtení po vypnutí a zapnutí počítače, je nutné tuto konfiguraci uložit. Tento postup je odlišný pro různé typy distribucí, například v distribucích založených na RedHat (včetně Mandrivy) je to příkaz /sbin/service iptables save V distribucích založených na Debianu v souboru /etc/default/iptables nastavíme řádek enable_iptables_initd=true P 2 logwatch získáme na 3 Program swatch (Simple Watch) je dostupný na 4 Ve starších jádrech, se kterými se (doufejme) už nesetkáme, se používal firewall IPChains se stejnojmenným obslužným programem (ipchains).

107 4.5 INSTALACE APLIKACÍ 99 čímž uložení povolíme, samotné uložení se provede příkazem /etc/init.d/iptables save_active Není vždy nutné provádět konfiguraci a její uložení v textovém režimu. Existuje dokonce několik různých grafických rozhraní k programu iptables. V desktopových distribucích je najdeme celkem běžně, případně je možné si některý z nich stáhnout z repozitáře a nainstalovat. V unixových systémech založených na BSD (například OpenBSD) se často setkáme s firewallem PacketFilter (starší byl IPFilter), obslužný program je pfctl. Obrázek 4.1: Firewall Netfilter V Linuxu se obvykle setkáme také s grafickým rozhraním firewallu, například na obrázku 4.1 je rozhraní pro konfiguraci firewallu v SUSE Linuxu. 4.5 Instalace aplikací Aplikace pro Linux jsou obvykle dostupné v repozitářích. Repozitář je (obvykle hierarchicky) uspořádaná databáze balíčků se softwarem. Může se nacházet na internetu (typicky oficiální repozitáře zvolené distribuce Linuxu) nebo například na výměnném pamět ovém médiu (nebo kdekoliv jinde, kam máme přístup). Výhodou Linuxu oproti Windows je tedy existence jednoho nebo více centralizovaných úložišt, která jsou prověřená a především snadno a rychle dostupná. O

Základní příkazy OS UNIX

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

Více

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

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

Více

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

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

Více

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

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

Více

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

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

Více

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

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

Více

Linux-příkazový řádek

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

Více

PŘÍKAZY PRÁCE SE SLOŽKAMI

PŘÍKAZY PRÁCE SE SLOŽKAMI PŘÍKAZY PRÁCE SE SLOŽKAMI Název školy Obchodní akademie, Vyšší odborná škola a Jazyková škola s právem státní jazykové zkoušky Uherské Hradiště Název DUMu Příkazy práce se složkami Autor Martin Šimůnek

Více

Úloha 3 editor a skripty. připojte se vzdáleně na dray6.feld.cvut.cz heslo získáte na adrese https://service.felk.cvut.cz/heslo

Úloha 3 editor a skripty. připojte se vzdáleně na dray6.feld.cvut.cz heslo získáte na adrese https://service.felk.cvut.cz/heslo Domácí příprava k předmětu YD38UOS Úloha 1 vzdálené připojení připojte se vzdáleně na dray6.feld.cvut.cz heslo získáte na adrese https://service.felk.cvut.cz/heslo pro připojení použijte protokol ssh (pokud

Více

PŘÍKAZY OVLÁDÁNÍ SHELLU

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

Více

PRACUJEME S SHELLEM Ať žije BASH.

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

Více

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

Úvod do Operačních Systémů Úvod do Operačních Systémů 3. cvičení Základní příkazy pro práci se soubory 1 Obsah Zjištění informací o souborech a FS pwd, ls, du, df, quota Zjištění informací o obsahu souborů file, cat, strings, od,

Více

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

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

Více

Úvod, jednoduché příkazy

Úvod, jednoduché příkazy A7B38UOS Úvod do operačních systémů cvičení LS 2012/13 1. Cvičení Úvod, jednoduché příkazy Přednášející Cvičící Kdo je kdo v UOS doc. Ing. Jaroslav Roztočil, CSc. Ing. Jan Koller, Ph.D. Ing. Radek Havlíček,

Více

LINUX přesměrování a roury

LINUX přesměrování a roury LINUX přesměrování a roury Trocha teorie: Veškerá komunikace uživatelů a jednotlivých procesů v LINUXu probíhá přes vstupně/výstupní (I/O) kanály. STDIN - standardní vstup (klávesnice) STDOUT - standardní

Více

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

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

Více

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

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

Více

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

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

Více

PROGRAMOVÁNÍ V SHELLU

PROGRAMOVÁNÍ V SHELLU PROGRAMOVÁNÍ V SHELLU Prostředí, jazyk, zdrojový kód chceme-li posloupnost jistých příkazů používat opakovaně, případně z různých míst adresářové struktury, můžeme tuto posloupnost uložit souboru, který

Více

HROMADNÉ ÚPRAVY NAJÍT A NAHRADIT

HROMADNÉ ÚPRAVY NAJÍT A NAHRADIT HROMADNÉ ÚPRAVY NAJÍT A NAHRADIT Funkce Najít a nahradit slouží k rychlému vyhledávání určitých slov a jejich nahrazování jinými slovy. Lze hledat i určité varianty slov a nahrazovat je buď hromadně (všechny

Více

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

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

Více

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

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

Více

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

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

Více

PŘESMĚROVÁNÍ VÝSTUPU DO SOUBORU

PŘESMĚROVÁNÍ VÝSTUPU DO SOUBORU PŘESMĚROVÁNÍ VÝSTUPU DO SOUBORU Název školy Obchodní akademie, Vyšší odborná škola a Jazyková škola s právem státní jazykové zkoušky Uherské Hradiště Název DUMu Přesměrování výstupu do souboru Autor Martin

Více

PŘÍKAZY PRÁCE SE SOUBORY

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

Více

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

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

Více

Úvod do UNIXu. Okruh č. 1 - přihlášení, historie, práce se soubory. Jakub Galgonek. verze r1. inspirováno materiály Davida Hokszy

Úvod do UNIXu. Okruh č. 1 - přihlášení, historie, práce se soubory. Jakub Galgonek. verze r1. inspirováno materiály Davida Hokszy Okruh č. 1 - přihlášení, historie, práce se soubory verze 1.0.1-r1 inspirováno materiály Davida Hokszy Obsah Práce se soubory Textové editory Uživatelé a práva Regulární výrazy Programování v shellu Administrace

Více

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

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

Více

Systém souborů (file system, FS)

Systém souborů (file system, FS) UNIX systém souborů (file system) 1 Systém souborů (file system, FS)! slouží k uchování dat na vnějším paměťovém médiu a zajišťuje přístup ke struktuře dat! pro uživatele možnost ukládat data a opět je

Více

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

Úvod do Operačních Systémů Úvod do Operačních Systémů 2. cvičení Seznámení se shellem, editor vi 1 Obsah Zpracování příkazové řádky Práce se znaky se speciálním významem Práce s proměnnými, prompt Aliasy Historie Editor vi 2 Formátování

Více

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

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

Více

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

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

Více

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

Úvod do Operačních Systémů Úvod do Operačních Systémů 9. cvičení Proměnné, složené příkazy, funkce, numerické výpočty. 1 Obsah Numerické výpočty v shellu externí příkazy Proměnné práce s proměnnými práce s pozičními parametry Bloky

Více

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

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

Více

František Hudek. duben ročník

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

Více

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

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

Více

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

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

Více

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

Střední odborná škola a Střední odborné učiliště, Hořovice Kód DUM : VY_32_INOVACE_LIN.1.03 Název materiálu: Anotace Autor Jazyk Očekávaný výstup 03 BASH rozbory a psaní skriptů DUM naučí psát elementární BASH skripty, ukáže zásady psaní cyklů a přepínačů Ing.

Více

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

FILTRY V GNU/LINUXU ZLÍNSKÝ KRAJ. Obchodní akademie, Vyšší odborná škola a Jazyková škola s právem státní jazykové zkoušky Uherské Hradiště FILTRY V GNU/LINUXU Název školy Obchodní akademie, Vyšší odborná škola a Jazyková škola s právem státní jazykové zkoušky Uherské Hradiště Název DUMu Filtry v GNU/Linuxu Autor Martin Šimůnek Datum 6. 1.

Více

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

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

Více

Vzorce. Suma. Tvorba vzorce napsáním. Tvorba vzorců průvodcem

Vzorce. Suma. Tvorba vzorce napsáním. Tvorba vzorců průvodcem Vzorce Vzorce v Excelu lze zadávat dvěma způsoby. Buď známe přesný zápis vzorce a přímo ho do buňky napíšeme, nebo použijeme takzvaného průvodce při tvorbě vzorce (zejména u složitějších funkcí). Tvorba

Více

Tomáš Borland Valenta

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

Více

Martin Kopta. Unixové shelly. Středisko Unixových Technologií, 2009

Martin Kopta. Unixové shelly. Středisko Unixových Technologií, 2009 Martin Kopta Unixové shelly Středisko Unixových Technologií, 2009 Co je shell? Motivace Kde shelly potkáme GNU/Linux (Ubuntu, Debian, Gentoo, Redhat,..) FreeBSD, OpenBSD, NetBSD,.. HPUX, Tru64, Solaris,

Více

Instalace Dosemu na Linux Ubuntu 12.04

Instalace Dosemu na Linux Ubuntu 12.04 Instalace Dosemu na Linux Ubuntu 12.04 do hledacího okénka napsat dosemu Objeví se hledaný SW. 1 z 18 Ťuknutím na SW se zvýrazní vybraný SW a objeví se tlačítko Nainstalovat, pokud ještě není nainstalován.

Více

1. Otevřete dokument, který chcete číst. 2. Na kartě Zobrazení klikněte ve skupině Zobrazení dokumentů na položku Čtení na celé obrazovce.

1. Otevřete dokument, který chcete číst. 2. Na kartě Zobrazení klikněte ve skupině Zobrazení dokumentů na položku Čtení na celé obrazovce. 2. lekce Čtení dokumentů 1. Otevřete dokument, který chcete číst. 2. Na kartě Zobrazení klikněte ve skupině Zobrazení dokumentů na položku Čtení na celé obrazovce. 3. Přecházení mezi stránkami v dokumentu:

Více

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

Úvod do Operačních Systémů Úvod do Operačních Systémů 4. cvičení Standardní vstup a výstupy procesu, filtry. 1 Obsah Přesměrování vstupu a výstupů Filtry tee cat, split head, tail cut, paste sort, uniq diff, patch cmp, comm 2 Standardní

Více

Manuál k ovládání aplikace INFOwin.

Manuál k ovládání aplikace INFOwin. Manuál k ovládání aplikace INFOwin. Základní práce s formuláři je ve všech modulech totožná. Vybereme tedy například formulář Pokladní kniha korunová na kterém si funkce ukážeme. Po zápisech se lze pohybovat

Více

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

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

Více

Modul 2. Druhá sada úkolů:

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

Více

Práce se styly 1. Styl

Práce se styly 1. Styl Práce se styly 1. Styl Styl se používá, pokud chceme, aby dokument měl jednotný vzhled odstavců. Můžeme si nadefinovat styly pro různé úrovně nadpisů, jednotlivé popisy, charakteristiky a další odstavce.

Více

PRACUJEME S TSRM. Modul Samoobsluha

PRACUJEME S TSRM. Modul Samoobsluha PRACUJEME S TSRM Modul Samoobsluha V této kapitole Tato kapitola obsahuje následující témata: Téma Na straně Přehled kapitoly 6-1 Užití modulu Samoobsluha 6-2 Přihlášení k systému 6-3 Hlavní nabídka TSRM

Více

Přehledy pro Tabulky Hlavním smyslem této nové agendy je jednoduché řazení, filtrování a seskupování dle libovolných sloupců.

Přehledy pro Tabulky Hlavním smyslem této nové agendy je jednoduché řazení, filtrování a seskupování dle libovolných sloupců. Přehledy pro Tabulky V programu CONTACT Professional 5 naleznete u firem, osob a obchodních případů záložku Tabulka. Tuto záložku lze rozmnožit, přejmenovat a sloupce je možné definovat dle vlastních požadavků

Více

Studijní informační systém KOS ikos přístup pro referenty

Studijní informační systém KOS ikos přístup pro referenty Studijní informační systém KOS ikos přístup pro referenty Pro práci se studijním informačním systémem AMU se používají dvě různé aplikace, které však pracují se společnými daty. Studenti a učitelé pracují

Více

Slezská univerzita v Opavě. Ústav informatiky

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

Více

Typy souborů ve STATISTICA. Tento článek poslouží jako přehled hlavních typů souborů v programu

Typy souborů ve STATISTICA. Tento článek poslouží jako přehled hlavních typů souborů v programu StatSoft Typy souborů ve STATISTICA Tento článek poslouží jako přehled hlavních typů souborů v programu STATISTICA, ukáže Vám jejich možnosti a tím Vám dovolí využívat program efektivněji. Jistě jste již

Více

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

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

Více

Základy HTML. Autor: Palito

Základy HTML. Autor: Palito Základy HTML Autor: Palito Zobrazení zdrojového kódu Zobrazení zdrojového kódu Každá stránka je na disku nebo na serveru uložena ve formě zdrojového kódu. Ten kód je psaný v jazyce HTML. Když si chcete

Více

Slezská univerzita v Opavě. Ústav informatiky

Slezská univerzita v Opavě. Ústav informatiky Šárka Vavrečková Operační systémy cvičení Část II: Linux Slezská univerzita v Opavě Filozoficko-přírodovědecká fakulta Ústav informatiky Opava, poslední aktualizace 14. května 2013 Anotace: Tento dokument

Více

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

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

Více

DERATIZACE ANEB PROČ PŘÍKAZY ;)

DERATIZACE ANEB PROČ PŘÍKAZY ;) DERATIZACE ANEB PROČ PŘÍKAZY ;) Název školy Obchodní akademie, Vyšší odborná škola a Jazyková škola s právem státní jazykové zkoušky Uherské Hradiště Název DUMu Deratizace aneb Proč příkazy ;) Autor Martin

Více

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

C2110 Operační systém UNIX a základy programování C2110 Operační systém UNIX a základy programování 5. lekce Petr Kulhánek kulhanek@chemi.muni.cz Národní centrum pro výzkum biomolekul, Masarykova univerzita, Kotlářská 2, CZ-61137 Brno C2110 Operační systém

Více

Spuštění a ukončení databázové aplikace Access

Spuštění a ukončení databázové aplikace Access Spuštění a ukončení databázové aplikace Access Aplikaci Access spustíte tak, že vyhledáte její ikonu v nabídce "Start" a klepnete na ní. Najdete ho v Sekci Všechny programy/mircosoft Office. Po výběru

Více

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

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

Více

Systém souborů (File System)

Systém souborů (File System) (File System) Základní pojmy Běžný uživatel vidí logický systém souborů jako jeden strom. Kořen stromu je kořenový adresář ( / = Root Directory ). Uzly stromu jsou adresáře (d = Directory). Listy stromu

Více

2017 CARAT "New design"

2017 CARAT New design 2017 CARAT "New design" Stručný průvodce verzí CARAT New Design Tato příručka poskytuje informace o základech programu CARAT New Design. Další podrobné informace jsou k dispozici na úvodní stránce online

Více

Základy práce s aplikací ecba / ESOP

Základy práce s aplikací ecba / ESOP Základy práce s aplikací ecba / ESOP Obsah 1. SYSTÉMOVÉ POŽADAVKY A REGISTRACE... 2 Nová registrace... 2 2. SPRÁVA PROJEKTŮ... 3 Horní lišta... 3 Levé menu... 4 Operace s projekty... 4 3. PRÁCE S PROJEKTEM...

Více

BASH. Kouzla s příkazovou řádkou. Petr Koloros

BASH. Kouzla s příkazovou řádkou. Petr Koloros BASH Kouzla s příkazovou řádkou Petr Koloros Obsah příkazová řádka proměnné prsaté závorky {hot! hot!} manipulace se soubory vstup, výstup, přesměrování hlídače regularní výrazy filtry skriptování pitfalls

Více

Informace o poštovním provozu na serveru mail.ktkadan.cz a stručný návod na použití OpenWebMailu

Informace o poštovním provozu na serveru mail.ktkadan.cz a stručný návod na použití OpenWebMailu Informace o poštovním provozu na serveru mail.ktkadan.cz a stručný návod na použití OpenWebMailu 1. Obecné informace Příchozí zprávy se ukládají do vaší schránky na serveru mail.ktkadan.cz. Tuto schránku

Více

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

Úvod do Operačních Systémů Úvod do Operačních Systémů 8. cvičení Práce s procesy a úlohami, příkaz test 1 Obsah Práce s procesy ps, ptree, pgrep, time kill, trap nice, stty, truss (strace) vmstat, top Práce s úlohami test nohup,

Více

Vytvoření bootovatelného média

Vytvoření bootovatelného média Vytvoření bootovatelného média Vytvoření bootovatelného média VY_32_INOVACE_05_01_01 Vytvořeno Červen 2013 Učební materiál slouží vyučujícímu k vysvětlení základních pojmů z oblasti OS GNU/Linux a seznamuje

Více

Osnova kurzu OBSLUHA PC ZÁKLADNÍ ZNALOSTI. pilotního projektu v rámci I. Etapy realizace SIPVZ

Osnova kurzu OBSLUHA PC ZÁKLADNÍ ZNALOSTI. pilotního projektu v rámci I. Etapy realizace SIPVZ Střední průmyslová škola a Střední odborné učiliště, Trutnov, Školní 101, tel.: +420 499 813 071, fax: +420 499 814 729, e-mail: skola@spssoutu.cz, URL: http://www.spssoutu.cz Osnova kurzu OBSLUHA PC ZÁKLADNÍ

Více

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

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

Více

Úvod do Linuxu SŠSI Tábor 1

Úvod do Linuxu SŠSI Tábor 1 Úvod do Linuxu 9.10.2012 SŠSI Tábor 1 Historie Linux je obdoba operačního systému UNIX, vytvořená Linusem Torvaldsem. Na dalším vývoji systému i aplikací dnes pracuje řada dobrovolníků na celém světě.

Více

PSK3-7. Plánované spouštění programů a správce sezení. Skupiny procesů

PSK3-7. Plánované spouštění programů a správce sezení. Skupiny procesů Název školy: Autor: Anotace: Vzdělávací oblast: Předmět: PSK3-7 Vyšší odborná škola a Střední průmyslová škola, Božetěchova 3 Ing. Marek Nožka Správa sezení a plánované spouštění procesů Informační a komunikační

Více

VoiceOver v ios s QWERTY klávesnicí

VoiceOver v ios s QWERTY klávesnicí VoiceOver v ios s QWERTY klávesnicí Poslední aktualizace článku: 18/11/2015 Tento článek přináší přehled klávesových zkratek, které můžete z QWERTY klávesnice při práci s odečítačem VoiceOver v systému

Více

Úvod do Linuxu. SŠSI Tábor 1

Úvod do Linuxu. SŠSI Tábor 1 Úvod do Linuxu SŠSI Tábor 1 Trocha historie konec 60. let - AT&T vyvíjí MULTICS 1969 - AT&T Bell Labs - začátek OS Unix začátek 70.let - AT&T vývoj OS Unix kolem 1975 - University of California at Berkley

Více

Tabulkový procesor. Základní rysy

Tabulkový procesor. Základní rysy Tabulkový procesor Tabulkový procesor je počítačový program zpracovávající data uložená v buňkách tabulky. Program umožňuje použití vzorců pro práci s daty a zobrazuje výsledné hodnoty podle vstupních

Více

ORGANIZACE DAT V PROSTŘEDÍ MS WINDOWS 10

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

Více

Formulář pro křížový filtr

Formulář pro křížový filtr Formulář pro křížový filtr Formulář pro křížový filtr je určen zejména autorům křížovek a má sloužit jako pomůcka při jejich tvorbě. Levé části formuláře dominuje tzv. šablona, což je síť 20 krát 20 políček

Více

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

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

Více

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

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

Více

Identita uživatelů, přístupová práva. Linux

Identita uživatelů, přístupová práva. Linux Identita uživatelů, přístupová práva Linux Uživatel Při přihlášení do systému musí uživatel: identifikovat systém, na který se chce přihlásit fyzické umístění (lokální přihlášení) jméno systému/ IP adresa

Více

PHP tutoriál (základy PHP snadno a rychle)

PHP tutoriál (základy PHP snadno a rychle) PHP tutoriál (základy PHP snadno a rychle) Druhá, vylepšená offline verze. Připravil Štěpán Mátl, http://khamos.wz.cz Chceš se naučit základy PHP? V tom případě si prostuduj tento rychlý průvodce. Nejdříve

Více

Poslední aktualizace: 14. května 2013

Poslední aktualizace: 14. května 2013 Operační systémy test č. 2, Linux seznam možných otázek Poslední aktualizace: 14. května 2013 V otázkách se na testu mohou objevit změny, typicky v názvech souborů, služeb nebo použitých přepínačích příkazů.

Více

Téma 2: Práce s commands. Téma 2: Práce s Commands

Téma 2: Práce s commands. Téma 2: Práce s Commands Téma 2: Práce s Commands 1 Teoretické znalosti V této kapitole se naučíte používat základní příkazy při práci s terminálem v prostředí linux. Zjistíte jak vytvořit uživatele, složku, soubor, dále jak nastavit

Více

Plc Calculator. Nástroj pro automatizovaný návrh aplikace s automaty MICROPEL 8.2010

Plc Calculator. Nástroj pro automatizovaný návrh aplikace s automaty MICROPEL 8.2010 Plc Calculator Nástroj pro automatizovaný návrh aplikace s automaty MICROPEL 8.2010 PLC CALCULATOR PlcCalculator představuje programový nástroj pro automatizované rozmístění IO bodů aplikace na automatech

Více

Přednáška 5. Identita uživatelů, procesů a souborů. Přístupová práva a jejich nastavení. Úvod do Operačních Systémů Přednáška 5

Přednáška 5. Identita uživatelů, procesů a souborů. Přístupová práva a jejich nastavení. Úvod do Operačních Systémů Přednáška 5 Přednáška 5 Identita uživatelů, procesů a souborů. Přístupová práva a jejich nastavení. 1 Uživatel Při přihlášení do systému musí uživatel: identifikovat systém, na který se chce přihlásit fyzické umístění

Více

Přednáška 1. Úvod. Historie OS Unix. Architektura OS Unix. Interpret příkazů. SHELL. Zpracování příkazové řádky. Speciální znaky. Zkratky příkazů.

Přednáška 1. Úvod. Historie OS Unix. Architektura OS Unix. Interpret příkazů. SHELL. Zpracování příkazové řádky. Speciální znaky. Zkratky příkazů. Přednáška 1 Úvod. Historie OS Unix. Architektura OS Unix. Interpret příkazů SHELL. Zpracování příkazové řádky. Speciální znaky. Zkratky příkazů. 1 Hodnocení studentů III Klasifikace 90 100 bodů A (výborně)

Více

Sekvenční a podmíněné provádění

Sekvenční a podmíněné provádění Programování v Bourne shellu Sekvenční a podmíněné provádění Sekvenční provádění znamená vykonávání jednoho příkazu za druhým bez ohledu na okolnosti. Pro oddělení příkazů při sekvenčním provádění se používá

Více

Popis ovládání. Po přihlášení do aplikace se objeví navigátor. Navigátor je stromově seřazen a slouží pro přístup ke všem oknům celé aplikace.

Popis ovládání. Po přihlášení do aplikace se objeví navigátor. Navigátor je stromově seřazen a slouží pro přístup ke všem oknům celé aplikace. Popis ovládání 1. Úvod Tento popis má za úkol seznámit uživatele se základními principy ovládání aplikace. Ovládání je možné pomocí myši, ale všechny činnosti jsou dosažitelné také pomocí klávesnice. 2.

Více

Základní principy vyhledávání firem

Základní principy vyhledávání firem Základní principy vyhledávání firem Vyhledávat informace v databázi lze několika způsoby. Základní způsob používá postupné kroky, kdy otevíráme tzv. slovníky, z nichž vybíráme požadované hodnoty, například

Více

Novinky ISÚI a VDP verze

Novinky ISÚI a VDP verze Novinky ISÚI a VDP verze 2.6 https://ruian.cuzk.cz/ Verze dokumentu Popis změn Datum vydání 1.0 Nový dokument 3. 5. 2019 Obsah 1. ZMĚNY V ISÚI... 4 1.1 Nové uživatelské rozhraní ISÚI...4 1.1.1 Fungující

Více

Proměnné a parametry. predn_08.odt :00:38 1

Proměnné a parametry. predn_08.odt :00:38 1 Proměnné a parametry predn_08.odt 16.04.2007 14:00:38 1 Proměnné a parametry Jméno proměnné - identifikátor [a-za-z_][a-za-z_0-9]* Hodnota proměnné textový řetězec celočíselná hodnota - ne v sh Přesun

Více

PSK3-5. Přesměrování vstupu a výstupu. Vstup a výstup

PSK3-5. Přesměrování vstupu a výstupu. Vstup a výstup PSK3-5 Název školy: Autor: Anotace: Vyšší odborná škola a Střední průmyslová škola, Božetěchova 3 Ing. Marek Nožka Standardní vstup, výstup a jejich přesměrování Vzdělávací oblast: Informační a komunikační

Více

DATABÁZE MS ACCESS 2010

DATABÁZE MS ACCESS 2010 DATABÁZE MS ACCESS 2010 KAPITOLA 5 PRAKTICKÁ ČÁST TABULKY POPIS PROSTŘEDÍ Spuštění MS Access nadefinovat název databáze a cestu k uložení databáze POPIS PROSTŘEDÍ Nahoře záložky: Soubor (k uložení souboru,

Více

Administrace webu Postup při práci

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

Více

THEOPHILOS. (návod k použití)

THEOPHILOS. (návod k použití) THEOPHILOS (návod k použití) Nejprve si z internetových stránek www.theophilos.com (nebo www.theophilos.sk) stáhněte všechny soubory, které Vás zajímají a nainstalujte je (podrobný návod na instalaci programu

Více

Přednáška 7. Celočíselná aritmetika. Návratový kód. Příkazy pro větvení výpočtu. Cykly. Předčasné ukončení cyklu.

Přednáška 7. Celočíselná aritmetika. Návratový kód. Příkazy pro větvení výpočtu. Cykly. Předčasné ukončení cyklu. Přednáška 7 Celočíselná aritmetika. Návratový kód. Příkazy pro větvení výpočtu. Cykly. Předčasné ukončení cyklu. 1 Příkaz expr výraz Celočíselná aritmetika I Zašle na standardní výstup vyhodnocení výrazu

Více

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

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

Více

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

Úvod do Operačních Systémů Úvod do Operačních Systémů 10. cvičení Uživatelský vstup, zpracování přepínačů, psaní a ladění skriptů, plánování úloh. 1 Obsah Skript pro logování informací o systému, uložení konfigurace, transformaci

Více