UNIX (LINUX) Operační systém UNIX (LINUX) 1. Vlastnosti OS Linux. Historie Linuxu. Distribuce Linuxu

Podobné dokumenty
Systém souborů (file system, FS)

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

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

Operační systém GNU/Linux

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

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

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

UŽIVATEL, SKUPINA, PROCES

Tomáš Borland Valenta

Úvod do Linuxu SŠSI Tábor 1

IT ESS II. 1. Operating Systém Fundamentals

Pár odpovědí jsem nenašla nikde, a tak jsem je logicky odvodila, a nebo jsem ponechala odpověď z pefky, proto je možné, že někde bude chyba.

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.

Architektura rodiny operačních systémů Windows NT Mgr. Josef Horálek

Operační systémy 1. Přednáška číslo Souborové systémy

Management procesu I Mgr. Josef Horálek

DUM 11 téma: Úvod do příkazové řádky

Identita uživatele (procesu)

Linux-příkazový řádek

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

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

Linux připojování zařízení. 6 praktická část

Souborové systémy a logická struktura dat (principy, porovnání, příklady).

Systém souborů (File System)

ZOS OPAKOVÁNÍ. L. Pešička

Architektura systému GNU/Linux. Bohdan Milar

MS WINDOWS II. Jádro. Správa objektů. Správa procesů. Zabezpečení. Správa paměti

Spuštění instalace. nastavení boot z cd v BIOSu vložení CD s instal. médiem spuštění PC. nastavení parametrů instalace (F2 čěština)

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

Činnost počítače po zapnutí

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

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

Souborový systém (File System FS) Souborové systémy. Souborová fragmentace. Disková fragmentace. Organizace dat na pevném disku

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

Otázka 28 Zadání Identita uživatelů, procesů a souborů v OS Unix, přístupová práva a jejich nastavení

Principy operačních systémů. Lekce 1: Úvod

TC-502L. Tenký klient

Identita uživatele. predn_04.odt :47:03 1

TC-502L TC-60xL. Tenký klient

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

Univerzita Pardubice Fakulta elektrotechniky a informatiky ISOSY Matěj Trakal

Vlákno (anglicky: thread) v informatice označuje vlákno výpočtu neboli samostatný výpočetní tok, tedy posloupnost po sobě jdoucích operací.

Souborové systémy Mgr. Josef Horálek

Služba ve Windows. Služba (service) je program

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

VÝUKOVÝ MATERIÁL. 3. ročník učebního oboru Elektrikář Přílohy. bez příloh. Identifikační údaje školy

Úvod, jednoduché příkazy

Nový způsob práce s průběžnou klasifikací lze nastavit pouze tehdy, je-li průběžná klasifikace v evidenčním pololetí a školním roce prázdná.

monolitická vrstvená virtuální počítač / stroj modulární struktura Klient server struktura

Procesy a vlákna (Processes and Threads)

Ú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

2.2 Acronis True Image 19

Systém adresace paměti

Bootkity v teorii a praxi. Martin Dráb martin.drab@ .cz

Výpočet v módu jádro. - přerušení (od zařízení asynchronně) - výjimky - softvérové přerušení. v důsledku událostí

Základní příkazy OS UNIX

Před instalací 25 Minimální požadavky na systém Linux a Windows na jednom disku Zrušení instalace Mandriva Linuxu...

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

OPERAČNÍ SYSTÉM. Informační a komunikační technologie

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

OPERAČNÍ SYSTÉMY. Operační systém je prostředník mezi hardwarem (technickým vybavením počítače) a určitým programem, který uživatel používá.

Charakteristika operačního systému GNU/Linux

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

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

LINUX uživatelské účty (1)

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

Operační systémy (OS)

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

09. Memory management. ZOS 2006, L.Pešička

1 Uživatelská dokumentace

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

Inovace výuky prostřednictvím ICT v SPŠ Zlín, CZ.1.07/1.5.00/ Vzdělávání v informačních a komunikačních technologií

Operační systém UNIX

Přidělování paměti II Mgr. Josef Horálek

Konfigurace Windows 7

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

Přednáška. Vstup/Výstup. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Architektury počítačů a procesorů

1 Administrace systému Moduly Skupiny atributů Atributy Hodnoty atributů... 4

Paralelní výpočty na clusteru KMD

Přednáška. Systémy souborů. FAT, NTFS, UFS, ZFS. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Nové funkcé programu TRIFID 2015

Základy programování Operační systémy (UNIX) doc. RNDr. Petr Šaloun, Ph.D. VŠB-TUO, FEI (přednáška připravena z podkladů Ing. Michala Radeckého)

Nainstaloval jsem a jak dál? Michal Turek

Soubory. SŠSI Tábor 1

Základy souborového systému NTFS

Jazz pro Účetní (export) Příručka uživatele

Procesy a vlákna Mgr. Josef Horálek

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

Základy informatiky. Operační systémy

Operační systém. Mgr. Renáta Rellová. Výukový materiál zpracován v rámci projektu EU peníze školám

Základy operačního systému LINUX část I

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

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

Principy počítačů a operačních systémů

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

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

Tiskové služby v sítích Microsoft. PDF created with pdffactory trial version

Co je počítačová síť?

Transkript:

UNIX (LINUX) Operační systém UNIX (LINUX) 1. Vlastnosti OS Linux Historie Linuxu 1965 Bell Telephone Labs firmy AT&T, General Electric a MIT Multics 1970 Ken Thompson, Dennis Ritchie, Brian Kernighan (název Unix) 1971 UNIX 1973 přepsán do C jazyka 1991 Linux (student Linus Thorvalds z Finska) Distribuce Linuxu Distribuce = jádro Linuxu + použitelný sw, typicky open source sw, dostupný na Internetu. Každá distribuce je jinak zaměřena (nováček, výuka, vývojář, server...) Typická distribuce pro desktopový systém obsahuje linuxové jádro, nástroje a knihovny, dokumentaci, nástroj pro grafické rozhraní, desktopové prostředí a další software Některé distribuce: - UBUNTU největší počet uživatelů na světě i v Česku laptopy, stolní počítače, servery česká verze aktualizace každého půl roku varianty jsou např. Kubuntu, Xubuntu nebo Edubuntu. První obsahuje místo grafického prostředí GNOME konkurenční KDE, varianta s X na začátku je vybavena dietním prostředím Xfce a Edubuntu je určeno pro školy obsahuje výběr softwaru pro vzdělávání původně založen na Debianu

balíčkovací systém používá formát DEB a obsahuje tisíce programů výborná podpora HW, jeho detekce a nastavení pro instalaci softwaru či hardwaru se obvykle používá příkazová řádka - FEDORA založená na balíčkovacím systému RPM vyvíjená komunitou vývojářů okolo Fedora Project, sponzorovaného společností Red Hat, od jejíž distribuce se projekt oddělil vyvíjena s důrazem na použití na domácích počítačích nové verze Fedory vycházejí pravidelně každých šest až osm měsíců díky tomu podporuje nový hw, lze ji zprovoznit i na moderních počítačích základní grafické prostředí GNOME, dobře podporováno je však i prostředí KDE - MANDRIVA francouzský operační systém instalace používají prostředí KDE čeština výborné schopnosti detekce a nastavení hardwaru propracované konfigurační centrum určen začátečníkům balíčkovací systém RPM, který kdysi původně vznikl pro Red Hat lze stáhnout ve verzích Free nebo si lze koupit PowerPack (obsahuje navíc kodeky, komerční software a prostředí pro hraní her z Windows) - SUSE balíčkovací systém RPM, balíky nejsou kompatibilní s balíky v Mandrivě obsahuje vlastní konfigurační centrum - snadná konfigurace hardwaru, softwaru či běžících služeb V současnosti je nositelem vývoje firma Novell (SUSE Linux Enterprise Server, SUSE Linux Enterprise Desktop) Pro nasazení v domácnosti či malé firmě se hodí opensuse opensuse lze stáhnout zdarma z internetu či zakoupit, SLES a SLED lze zakoupit v krabicových verzích - DEBIAN podpora pro jedenáct platforem a více než 18000 balíčků se softwarem nejuniverzálnější systém základem pro množství jiných operačních systémů (např. Ubuntu) používá vlastní systém pro instalaci softwarových balíčků (DEB) APT Instalace Debian GNU/Linuxu je v porovnání s jinými systémy o dost náročnější 23/2/2012 UNIX (LINUX) 2

Vlastnosti OS - Multiprogramový - Multiprocesový Terminál monitor + klávesnice síťový systém - tichý neoznamuje správně vykonané příkazy, vypisuje pouze chybová hlášení - case-sensitivity rozlišuje velká a malá písmena - zdrojové texty systému jsou dostupné Musí být zabezpečena: - ochrana uživatelského prostředí - ochrana souborů - ochrana procesů - ochrana systému proti uživatelům Uživatelské účty Na podporu zmíněných mechanismů se zavádějí tzv. uživatelské účty (user account). Správce (administrátor) systému vytvoří každému uživateli jeho účet. Ten jednoznačně definuje uživatele a jeho pracovní prostředí. Účty se většinou zapisují do souboru /etc/passwd). Ne všechny uživatelské informace jsou však jenom v tomto souboru. Uživatelský účet obsahuje následující položky: Uživatelské jméno (login name) Je to skupina zpravidla 3 až 8 znaků, která jednoznačně určuje konkrétního uživatele v systému. Touto skupinou znaků se uživatel hlásí" do systému. Jméno začíná písmenem a zapisuje se malými písmeny. Může obsahovat i číslice. Heslo (password) Každý uživatel si volí svoje heslo. V počítači se uchovává pouze v zakódované podobě, buď v souboru /etc/passwd, nebo v /etc/shadow. Druhý případ je bezpečnější, protože souboru shadow se nastaví právo 23/2/2012 UNIX (LINUX) 3

čtení pouze pro správce systému, a tudíž se nikdo jiný k heslům (i v zakódovaném tvaru) nedostane. Heslo není povinné; účty nemusejí být chráněny heslem. Pokud však k počítači přistupuje více než jeden uživatel (nebo je počítač zapojen do sítě), je heslo žádoucí. Mělo by mít alespoň 6 znaků a neměla by to být jenom písmena. Heslo může obsahovat i jiné znaky než písmena a číslice. V heslech jsou významnými znaky i mezery, control-znaky, rozlišují se malá a velká písmena apod. Heslo by nemělo obsahovat údaje, které se o osobě majitele dají snadno zjistit, tedy např. křestní jméno, datum narození, rodné číslo apod. Při pokusu o uhádnutí hesla by každý jistě začal právě zde. Uživatelské číslo UID (user identification) Další jednoznačná identifikace uživatele v systému. Používá se uvnitř datových struktur, nikoli pro komunikaci s uživatelem. Při komunikaci s uživatelem se přes soubor passwd překládá do textové podoby uživatelského jména. Primární skupina GID (primary group identification) Každý uživatel je členem alespoň jedné skupiny uživatelů. V účtu se zaznamenává pouze primární skupina, tj. skupina nastavená uživateli po přihlášení do systému. Další skupiny, jichž může být uživatel členem, jsou uvedeny v souboru /etc/group. Z jedné skupiny do jiné se uživatel přepíná příkazem newgrp. Skupiny mají význam ve vlastnictví souborů a adresářů (viz dále). Doplňující uživatelské údaje Další nezbytné údaje o jeho majiteli: jméno a příjmení, příp. adresa, telefon. Domovský adresář (home directory) Absolutní cesta k adresáři, který se po přihlášení nastaví jako běžný adresář a je nadále označován jako domovský adresář uživatele. Shell Jméno a cesta k souboru, jehož obsah se spustí jako shell (interpret příkazů) po přihlášení uživatele do systému. Není-li zde nic uvedeno, použije se /bin/sh. Další informace o uživateli (např. čas posledního přihlášení) se ukládají v jiných souborech. Superuživatel V každém systému typu UNIX existuje jeden uživatel, kterému se nekontrolují jeho práva. Nazývá se superuživatel a je představován uživatelským jménem root s uživatelským číslem 0. Pod tímto uživatelem provádí administrátor systému jeho správu. Účet se však nehodí na běžnou práci, protože neúmyslnou chybou lze systém snadno poničit. 23/2/2012 UNIX (LINUX) 4

Tento uživatel má právo zasahovat do všech datových, souborových a procesových struktur systému. Jeho ochrana před nepovolaným přístupem je proto více než podstatná. Práce v systému - Přihlášení do systému První operací, kterou uživatel při příchodu k terminálu musí udělat, je přihlášení do systému. Uživatel musí vyvolat stav, ve kterém se na obrazovce vypíše výzva login:. Na tuto výzvu odpoví svým uživatelským jménem, které mu administrátor přidělil. Uživatelské jméno se musí zadávat malými písmeny. Pokud je zadáme velkými písmeny, bude si ovladač terminálu myslet, že terminál malá písmena nezná (v minulosti byly i terminály pouze s velkými písmeny). Počítač navíc v tomto okamžiku nemusí znát typ našeho terminálu, a proto nemusejí fungovat klávesy BACKSPACE a DEL. Jakmile zapíšeme všechny znaky uživatelského jména, stiskneme klávesu ENTER. Nemá-li uživatel heslo, a jméno bylo zadáno správně, je tímto okamžikem přihlášen do systému. Pokud uživatel heslo má, nebo bylo jméno zadáno nesprávně, ptá se počítač na heslo výzvou Password:. Nyní se zadává heslo. Heslo se při zadávání neopisuje na obrazovku, takže je nutné je zapsat poslepu. Opět nemusejí fungovat klávesy BACKSPACE a DEL. Po zadání hesla se stiskne ENTER. Jestliže počítač vypíše Login incorrect, potom jsme zadali špatně buď jméno, nebo heslo. V tomto případě se znovu vypíše výzva login:. Některé systémy zařazují pro zvýšení bezpečnosti před výzvu login: časovou prodlevu, aby ztížily mechanické hádání hesel. Ze stejných důvodů se vypisování výzvy po několika neúspěšných pokusech může ukončit. Po úspěšném přihlášení se vypíše informace o času posledního přihlášení aktuálního uživatele. Tuto informaci je užitečné sledovat. Dá se z ní zjistit neoprávněné použití účtu. Dále se nastaví UID, GID, proměnné HOME, PATH, SHELL, TERM, MAIL, LOGNAME, domovský adresář a spustí se shell podle informace v účtu uživatele. Během přihlašování se vypisují sdělení správce systému ze souboru /etc/motd. Další chování je už záležitostí spuštěného shellu. Heslo si uživatel mění zpravidla příkazem passwd. V konkrétních podmínkách tomu však může být i jinak. Po zadání příkazu passwd se příkaz nejprve dotáže na původní heslo. Zadáme mu heslo, kterým jsme se hlásili do systému. Potom se příkaz zeptá na nové heslo a nechá si je zadat ještě jednou pro kontrolu, zda nedošlo k překlepu (heslo se na obrazovku neopisuje). Teprve po této kontrole se nové heslo uloží. Příště se už hlásíme novým heslem. 23/2/2012 UNIX (LINUX) 5

- Odhlášení ze systému Stejně důležitou operací jako přihlášení do systému je i odhlášení ze systému. Před odchodem od terminálu by to měl uživatel například z důvodu ochrany svých souborů udělat. Uživatel se odhlašuje zadáním příkazu exit nebo logout. Odhlášení se vyvolá ukončením shellu, který byl přihlášením spuštěn. Po odhlášení uživatele by se na terminálu měla vypsat výzva login:. - Zadávání příkazů shellu Shell přijímá příkazy po vypsání vlastního promptu (výzvy) - # - superuživatel - $ - běžný uživatel. V operačním systému UNIX se ve jménech příkazů a souborů dělají rozdíly mezi malými a velkými písmeny (např. na rozdíl od operačního systému DOS). Proto je nutné příkay zapisovat přesně tak, jak jsou popsány. Příkazy lze shellu zadávat do zásoby". Shelly si navíc pamatují dříve zadávané příkazy v rámci tzv. historie příkazů. Příkazy pak lze ze zásobníku příkazů vybírat, příp. opravovat a znovu spouštět. Shell zahájí interpretaci příkazů až po stisku klávesy ENTER. Do té doby je možné příkaz na řádku opravovat. Poslední znak na řádku mažeme speciálním znakem erase. Celý řádek zrušíme speciálním znakem kill. Znak erase může být představován stiskem klávesy BACKSPACE, znak kill stiskem kombinace CONTROL a U (v Unixu zapisujeme ^U). Operace Backspace se zpravidla zapisuje ^H a Delete ^?. V Linuxu však z důvodu kompatibility s terminálem vtl00 vysílá klávesa BACKSPACE znak^?. Nastavení těchto speciálních znaků zjistíme z výpisu příkazu stty -a Nezobrazitelné znaky se v Unixu vypisují následovně: buď jako ^C pro kombinaci CONTROL a C, nebo \nnn jako tři osmičkové číslice ordinální hodnoty znaku. Běžící proces násilně ukončíme speciálním znakem intr (zpravidla ^C nebo klávesou DEL), vstup z klávesnice se ukončí speciálním znakem eof (zpravidla ^D), výstup na obrazovku se pozastaví speciálním znakem stop (zpravidla ^S) a obnoví speciálním znakem start (zpravidla ^Q). Poslední znak je vhodné vyzkoušet tehdy, pokud terminál ztuhl" a nechce nic vypisovat. Zmíníme se o použití jednoho zvláštního znaku, který dokáže správci systému s uživateli-začátečníky přidávat starosti. Jde o speciální znak susp (zpravidla představován ^Z). Tento znak je určen k pozastavení běžícího procesu. Provádění procesu se tímto zastaví, vypíše se prompt shellu a uživatel může zadat další příkaz. Laický uživatel může nabýt dojmu, že jeho proces tímto skončil. Není to však pravda. Proces se pouze dočasně neprovádí, alokuje pro sebe potřebnou kapacitu paměti a zabírá místo v systémových tabulkách. Pokud je proces navíc imunní proti ukončení signálem SIGHUP, zůstane v paměti i po odhlášení uživatele. Po jisté době provozu takto zatěžovaného systému dojde k zahlcení kapacity paměti. 23/2/2012 UNIX (LINUX) 6

Pozastavený proces můžeme opět převést mezi běžící například příkazem fg, nebo zjistíme číslo procesu z výpisu příkazu ps a proces násilně ukončíme příkazem kill číslo, příp. kill -9 číslo (pokud předchozí varianta selže). - Nápověda Typický systém typu UNIX je vybaven sadou tzv. manuálových stránek. V nich jsou popsány jak jednotlivé příkazy, tak i volání knihovních podprogramů a najdete zde i další informace. Typicky jsou rozděleny do následujících skupin (tzv. sekcí) s těmito čísly: 1. Příkazy uživatelské úrovně. 2. Systémová volání. 3. Knihovní funkce. 4. Zařízení a ovladače zařízení. 5. Formáty (konfiguračních) souborů. 6. Hry. 7. Různé popisy. 8. Nástroje pro údržbu systému. 9. Popis interních volání specifických pro Linux Odkazy na jednotlivé příkazy se potom vypisují ve tvaru chmod(l) kde chmod je jméno příkazu a jeho popis je v sekci číslo 1. Nápovědu k tomuto příkazu potom vypíšeme příkazem man chmod Pokud by bylo sporné číslo sekce (stejnojmenný odkaz se vyskytuje ve více sekcích), zadáme číslo sekce příkazu man -S 2 chmod V tomto případě se vypíše nápověda k volání chmod(2). Znaky -S jsou však nepovinné a stačí tedy zapsat pouze: man 2 chmod K uživatelské nápovědě slouží ještě i další příkazy: apropos a whatis. První příkaz prohledává informační databáze na zadané řetězce a druhý na zadané klíče (tj. na rozdíl od prvního na celá jména). Potom všechny odkazy na stty najdeme příkazem apropos stty - Vstupy a výstupy příkazů Každý proces (tedy i příkaz) v Unixu má automaticky přístup ke třem zvláštním souborům: standardnímu vstupu, standardnímu výstupu a standardnímu chybovému výstupu. Tyto tři zvláštní soubory existují proto, aby bylo možné příkazy jednoduše propojovat. Pokud totiž první příkaz bude výstup posílat na standardní výstup a druhý příkaz bude vstup číst ze standardního vstupu, potom 23/2/2012 UNIX (LINUX) 7

stačí spojit standardní výstup prvního příkazu se standardním vstupem druhého příkazu a příkazy jsou propojeny. Příkazy spuštěné z terminálu mají typicky všechny tyto tři soubory spojené s terminálem. Standardní vstup se označuje číslem 0, standardní výstup číslem 1 a standardní chybový výstup číslem 2. Programátor může použít i vyšší čísla, automaticky však existují pouze tyto tři. Propojování do kolon a přesměrování vstupů a výstupů je popsáno v rámci shellu. Procesy V systému typu UNIX mohou souběžně běžet řádově stovky až tisíce procesů. Omezení maximálního počtu vyplývají z aktuálních technických a implementačních podmínek. Od jednoho programu (tj. spustitelné podoby uložené v souboru na disku) může v jednom okamžiku běžet více kopií jako procesy (dynamická běžící instance programu). Z těchto důvodů není možné se na procesy odkazovat jmény, je nutné je očíslovat. Každý proces je jednoznačně identifikován číslem procesu (PID). Proces 0 se vytvoří při zavádění systému a v Linuxu během chodu systému nic nevvkonává (idle task). Proces 1 se nazývá init a je předkem každého z procesů existujících v systému. Informace o běžících procesech vypisuje příkaz ps. Spustíme-li jej bez voleb, vypíše informace o procesech náležejících aktuálnímu uživateli. Spustíme-li jej s volbami -ax, vypíše informace o všech procesech. V prvním sloupci je zmiňované č. procesu. Procesům posíláme signály příkazem kill. Pomocí signálů procesy například žádáme o ukončení (signál 15 SIGTERM) nebo je násilně ukončujeme (signál 9 SIGKILL). Ke každému procesu se váží dvě uživatelská identifikační čísla. Reálné UID identifikuje uživatele zodpovědného za běžící proces. Efektivní UID se používá k přiřazení vlastnictví nově vytvářeným souborům, ke kontrole přístupových práv k souboru a ke kontrole oprávnění posílání signálů. Zpravidla je efektivní UID shodné s reálným UID. Jiné efektivní UID se nastavuje buď po spuštění SUID programů nebo po provedení volání jádra setuid. Vstup uživatelů do systému: - Jednouživatelský režim (singleuser mode) o Při startování systému o Při objevení chyb o Při práci administrátora systému (běžný uživatel se s tímto režimem nesetká) - Víceuživatelský režim (multiuser mode) o Pracuje v něm běžný uživatel 23/2/2012 UNIX (LINUX) 8

o Každý uživatel má zřízen účet (account) základní informace o uživateli o Vlastní jméno, heslo se zadává při přihláčení o Uživatelé si nejsou rovni - 3 skupiny uživatelů: Běžní uživatelé fyzické osoby (jméno a heslo) Systémoví uživatelé nereprezentují fyzické osoby, mají speciální význam, jsou nezbytné pro chod systémových služeb (daemon, mail, news, nobody) Superuživatelé (root) neomezená privilegia k administraci systému, instalaci software a správě účtů Přihlášení do systému: 1. Lokální přihlášení (Local login) Uživatel je fyzicky přítomen u počítače nebo terminálu a může v něm pracovat přímo. autentizace (uživatelské jméno + heslo) Uživatelské jméno se skládá ze znaků a čísel. Heslo musí mít nejméně 6 znaků, obsahovat malá a velká písmena, čísla a interpunkční znaménka, nesmí být slovníkové. login: uživatelské jméno (ENTER) password: heslo (ENTER) Pokud se přihlášení nezdaří, vypíše se hlášení login incorrect. 2. Vzdálené přihlášení (Remote login) Pracuje se vzdáleným počítačem Na vzdáleném počítači musí být zřízený účet a obousměrná podpora práce Na hostiteli musí běžet program, který zajišťuje vzdálené přihlášení, říká se mu remote login daemon 23/2/2012 UNIX (LINUX) 9

Uživatel používá speciální přihlašovací program klient Oba procesy (daemon a klient) spolu komunikují prostřednictvím internetu a používají smluvený přihlašovací protokol. Šifrované služby - citlivá data se posílají šifrovaná Nešifrované služby - bez ochrany dat Nejznámější služby pro vzdálené přihlášení: Telnet - starší - nešifrovaná, používaná v uzavřené síti SSH (Secure Shell) obsahuje služby Telnet, umožňuje různé druhy autentizace, dobře zabezpečená Základní části operačního systému: 1) jádro (kernel) obstarává správu zdrojů počítače a poskytuje služby ostatním procesům 2) interpret příkazů (shell) umožňuje uživateli komunikovat se systémem, zadávat příkazy, spouštět uživatelské programy. Pro komunikaci s uživatelem používá příkazový režim (textový). Shell je také programovací jazyk, který umožňuje uživateli vytvářet vlastní funkce. 3) obslužné programy (utility) vykonávají elementární operace se soubory a procesy, mohou poskytovat systémové informace Vrstvy operačního systému 23/2/2012 UNIX (LINUX) 10

Vrstvy operačního systému spolu komunikují přes jednotlivá rozhraní (assembler, volání jádra, příkazy a ovládání). Jádro spravuje veškerý hardware, umožňuje přístup k počítači programátorům, ale ne běžným uživatelům. Pro uživatele jsou určeny programy, které jim umožňují s jádrem komunikovat pomocí příkazového řádku nebo grafického rozhraní. Jádro je program, který běží na holém stroji (tzv. standalone program). Ostatní programy, které uživatelé nebo správa systému používají, jsou sice také prováděny strojem, ale pod dohledem a řízením jádra (říkáme, že jádro je supervizorem běžících programů). Po zapnutí počítače pomocné hardwarové programy (tzv. firmware, programy monitoru hardwaru) jádro zavedou do operační paměti a předají mu řízení. Tím je operační systém nastartován. Jádro obalí hardware a od tohoto okamžiku až do zastavení jádra nelze přistupovat k hardwaru jinak než pomocí požadavků na jádro - tzv. volání jádra (system calls). Uživatelé jsou od jádra odděleni aplikačními programy. Funkcí vrstvy jádra je převádět aktivitu programů na příkazy assembleru stroje. Operační systém - zajišťuje splnění požadavku uživatele na hardware - ochraňuje programy uživatele před zásahy jiných uživatelů. Jádro systému zajišťuje : 1/ správu dat systém souborů ( file systems): vytvoření souboru, jeho otevření, čtení nebo zápis dat do souboru, uzavření souboru, zrušení souboru, vytvoření nebo zrušení adresáře, nastavení pracovního adresáře, vytvoření nebo zrušení speciálního souboru, který představuje periferii, test atributů existujícího souboru, adresáře nebo periferie, změna těchto atributů, rychlé přemístění na požadovanou pozici v otevřeném souboru, vytvoření zámku pro výlučný přístup k souboru. (Atributy souborů: D - directory, A - archived, S - system, H -hidden, R - read only) 2/ operaci nad daty systém procesů ( processes): vytvoření nového procesu, čekání na jeho dokončení, ukončení procesu, výměna programu, který řídí proces, za jiný, komunikace mezi procesy pomocí signálů, rour, front zpráv, sdílené paměti a semaforů, zjišťování a nastavování atributů běžícího procesu, změna priority běhu procesu, práce s datovou pamětí procesu, její rozšiřování nebo zmenšování, zamykání v operační paměti. 3/ činnosti, které nelze zařadit: 23/2/2012 UNIX (LINUX) 11

ladění programů, zjišťování spotřebovaného času stroje procesem, práce se systémovou vyrovnávací pamětí, identifikace instalace operačního systému. Volání jádra Jednotlivá volání jádra jsou organizována jako volání funkcí programem. Vyvolá se modul standardní knihovny konkrétního jazyka (např. C). Požadavek na jádro je převeden do assembleru - pomocí tohoto jazyka stroje je řízení předáno z uživatelského procesu do jádra (používá se jméno volání jádra a parametry). Vstup do jádra znamená dále práci jádra pro proces až do ukončení práce. Princip práce jádra pro proces, který otevírá soubor voláním jádra open, a současně pro jiný proces, který vytváří nový proces voláním jádra fork, ukazuje obrázek. Volání jádra jsou realizována jádrem postupně podle jejich příchodu. Jádro je v okamžiku realizace volání jádra jiným procesem nepřerušitelné. Způsob manipulace v programu v jazyce C je tentýž, jako je obvyklé volání funkce. Programátor má k dispozici argumenty funkce pro vyjádření svého požadavku, jádro mu odpovídá především návratovou hodnotou funkce volání jádra. Návratová hodnota je vždy celočíselná (int nebo long, případně ukazatel) a má význam daný popisem v dokumentaci. Jednotně je ale sdělována kolize, tj. případ, kdy jádro požadavek nemůže vyřídit, a proto jej odmítne (špatný formát volání jádra, neexistující výpočetní zdroj, překročení mezních hodnot tabulek jádra atd.). Návratová hodnota je potom -1. 23/2/2012 UNIX (LINUX) 12

2. Systém souborů Nosiče dat a souborové systémy Podsystém jádra starající se o souborové systémy a nosiče dat má obvykle vrstevnou architekturu. Rozvrstvení je do velké míry dáno i hardwarem. Cílem vrstevné architektury je vždy oddělit od sebe logicky nesouvisející části. Například i manipulace s diskem na fyzické úrovni je zcela jiná než programátorská manipulace se souborem. Vrstevná architektura umožňuje zaměňovat jednotlivé prvky bez nutnosti měnit ostatní. V důsledku lze provozovat starší typ souborového systému na novém hardwarovém zařízení a je v podstatě jedno, zdali v době vzniku souborového systému bylo konkrétní zařízení k dispozici, či nikoliv. Obvykle se rozlišují tři vrstvy. Nejspodnější vrstvou je nosič dat, například pevný disk nebo diskové pole. Nosič dat musí být podporován operačním systémem, tzn. operační systém musí být schopen získat od nosiče dat informace o jeho stavu a musí být schopen dávat nosiči povely k fyzickému čtení a zápisu dat. Nosiče dat jsou zpravidla rozděleny na diskové oblasti - disk partitions. Diskové oblasti mohou být dvojího druhu: 1. Nejrozšířenější jsou statické diskové oblasti vytvořené před nebo během instalace základního softwaru na počítač. Nejčastěji používaným typem diskových oblastí na počítačích platformy Intel byl MS-DOS Partition Table. Na ostatních platformách se používají jiné typy oblastí, dost často se lze setkat se statickými oblastmi typu Disk Label. Statické oblasti mají řadu nevýhod, během práce je nelze příliš pružně zvětšovat či zmenšovat dle aktuální potřeby. 2. Tento problém řeší dynamické diskové oblasti, které jsou implementovány ve většině vyspělých operačních systémů. Svou implementaci dynamických diskových oblastí má již i operační systém Linux, jedná se o LVM - Logical Volume Manager. Jednotlivé diskové oblasti jsou obsazovány souborovými systémy - systémy pro organizaci dat reprezentovaných datovými soubory. Souborový systém představuje vrstvu nad nosičem dat. Jednotlivé entity v rámci souborového systému se nazývají soubory. 23/2/2012 UNIX (LINUX) 13

Koncepce souborových systémů operačního systému Unix je mezi ostatními operačními systémy unikátní. Již od počátku implementace souborových systémů se v Unixu dbalo na čtyři základní požadavky: 1. Souborový systém by měl organizovat volné místo s maximálním ohledem na jeho možné přidělování. Pokud je v souborovém systému dostupné volné místo, musí být možné přidělit jej libovolnému souboru, jestliže je to potřeba. Požadavek přidělování volného místa se samozřejmě netýká některých speciálních souborových systémů - například systémů, které slouží pouze pro čtení dat (souborový systém na CD-ROM). 2. Každý datový soubor je v systému jednoznačně identifikovatelný. Jednoznačnou identifikovatelnost je nutné provést na systémové i na uživatelské úrovni - pro uživatele by identifikace souborů měla být co možná nejintuitivnější. 3. Základní systémovou ideou je, aby se s datovými soubory manipulovalo stejným způsobem jako s fyzickým zařízením. Tento požadavek vyústil v možnost reprezentovat hardwarová zařízení pomocí speciálních souborů. 4. Implementace by měla být co možná nejvíce abstraktní. Mělo by být možné pracovat zároveň s několika souborovými systémy na různých diskových oblastech a zařízeních. Současně používaným souborovým systémům by měla být ponechána volnost, co se týče vnitřní organizace dat. V současnosti poskytují souborové systémy ještě další služby, které dříve nebyly stěžejní: - Jedná se například o diskovou kvótu umožňující pružně omezovat diskový prostor uživatelům. - Další významnou vlastností souborového systému je transakční zpracování metadat neboli journaling. Transakční zpracování slouží k udržení konzistence záznamů o datech i v případě náhlého pádu systému způsobeného výpadkem proudu. - Architektura souborového systému v Unixu V Unixu existuje jeden fundamentální pojem - soubor. Téměř vše je soubor. Systém souborů je hlavním úspěchem a výhodou Unixu. Pojetí souboru v Unixu je totiž mnohem obecnější než v jiných operačních systémech. Někdy je totiž soubor chápán pouze jako konečná posloupnost znaků ". Každý soubor - file sestává ze tří částí: jména souboru administrativních informacích obsahu. První dvě složky se souhrnně nazývají metadata souboru a jsou povinné. Metadata jsou ve své podstatě data popisující data". V tomto případě jsou metadata jméno a administrativní informace o souboru. Obsah souboru je někdy označován jako data souboru a je nepovinný. V systému existují soubory se speciálním významem, které nepotřebují udržovat žádná data. Jedná se například o pevné odkazy. 23/2/2012 UNIX (LINUX) 14

Data lze chápat jako konečnou posloupnost znaků. Obsah souboru sám o sobě nemá žádný význam, interpretace je mu dána až programem nebo uživatelem, který jej používá. Struktura souboru je na obrázku. Při manipulaci se soubory na uživatelské úrovni se pro jejich rozlišení používají jména. Administrativní informace má každý soubor uloženy ve svém i-uzlu - i-node. Z pohledu systému je jednoznačným identifikátorem souboru právě i-uzel. Jména jsou souborům zaváděna z důvodu snazší uživatelské práce. Mezi administrativní informace obsažené v i-uzlu patří délka souboru, informace o vlastníkovi souboru, údaje o času vzniku a modifikace souboru, přístupová práva a další. Souborový systém v Linuxu Operační systém Linux již od počátku podporoval větší množství různých souborových systémů. Kromě svých vlastních souborových systémů podporuje i souborové systémy jiných operačních systémů, třeba HPFS, NTFS, FAT a řadu dalších. V současnosti počet podporovaných souborových systémů přesahuje 20. Vzhledem k tomuto počtu bylo nutné oddělit implementaci reálných souborových systémů od systémových služeb abstraktní vrstvou. Vznikl tak nový souborový systém. Virtuální souborový systém je navržen s ohledem na podporu velmi rozdílných souborových systémů, některé z nich se používají pouze ve speciálních případech. Virtuální souborový systém poskytuje pro každý reálný souborový systém jednotné programové rozhraní. Detaily implementací jednotlivých souborových systémů jsou pro zbytek jádra skryty. Programátorům se zvenčí jeví všechny souborové systémy stejné, protože při manipulaci se souborovým systémem využívají pouze služeb VFS. Stejně tak uživatelé mohou používat tytéž nástroje pro práci s různými souborovými systémy. Vztah virtuálního souborového systému k reálným souborovým systémům je zobrazen v následujícím schématu. Jednou z hlavních předností virtuálního souborového systému je možnost snadno pracovat s několika různými souborovými systémy zároveň. 23/2/2012 UNIX (LINUX) 15

Unix umožňuje jednotlivé souborové systémy připojovat a odpojovat na požadavek uživatele. Souborový systém (systém souborů) Souborový systém je algoritmus ukládání souborů na disk a způsob organizace dat, závisí mimo jiné na typu paměti (pevný disk, CD, síťové externí paměti atd.) založen na hierarchicky organizovaném systému souborů a adresářů v záznamech jméno souboru, umístění, časové známky, informace o vlastnících, přístupových právech umístěn na konkrétním oddílu, proto lze mít více nezávislých souborových systémů (typ souborového systému závisí na HW) software implementující souborový systém bývá součástí OS OS podporuje více různých souborových systémů Linux ext2, ext3, ext4, ReiserFS, JFS, XFS, NTFS, ISO 9660 atd. Pro podporu více souborových systémů a pro současnou práci s nimi vznikl tzv. virtuální souborový systém, který poskytuje pro každý reálný souborový systém jednotné programové rozhraní. Soubor = logická reprezentace dat, programů, záznamů. V Linuxu (Unixu) je téměř vše soubor, tedy i adresář a fyzické zařízení. Soubor chápe jako posloupnost osmibitových slov. 23/2/2012 UNIX (LINUX) 16

Operační systém: áření a rušení souborů, áření a rušení adresářů, a jednoduchých operací pro manipulaci se soubory a s adresáři, ární paměti, ání souborů na energeticky nezávislá média. Správce souborů má tyto funkce: soubor, jeho umístění, užití, stav atd., soubor přidělen, realizuje požadavky na ochranu informací uložených v souborech a realizuje operace přístupu k souborům, soubor, tj. otevírá soubor, soubor, tj. uzavírá soubor. Údaje o souboru (metadata): átor Jméno souboru a adresáře - Jméno souboru Jméno souboru smí být dlouhé nejvýše 255 znaků. Na tuto délku je zkracováno bez varování. Může obsahovat libovolné znaky, v kořenovém adresáři nesmí být soubor jména "/". Rozlišují se malá a velká písmena. Zvláštní význam mají jména souborů začínající znakem ".", např. ".profile" (skryté soubory). Jméno se fyzicky nerozděluje na jméno a příponu. Pokud hovoříme o příponě, máme na mysli znaky za poslední tečkou. Přípony souborů:.c - zdrojový text v jazyce C.C,.cpp - zdrojové texty v C++.asm,.s - zdrojové texty v Assembleru.f - zdrojový text ve Fortranu.gz - soubor komprimovaný programem gzip.h - hlavičkové soubory C nebo C++ 23/2/2012 UNIX (LINUX) 17

.html - HTML dokument pro World Wide Web.java - zdrojové texty v Javě.man - manuálové stránky.o - objektový soubor.p - zdrojový text v jazyce Pascal.out - výstupní soubor, často spustitelný soubor.php zdrojový text v PHP.py - zdrojový text v Pythonu.sh - skripty pro shell.shar - archív vytvořený programem shar.tar - archív vytvořený programem tar.z - soubor komprimovaný programem pack.z - soubory komprimované programem compress - Jména adresářů Oddělovačem jmen adresářů je znak "/" (lomítko). Kořenový adresář (root) "/" Běžný (pracovní) adresář Rozlišujeme cestu absolutní "/.../.../..." (z kořenového adresáře) a relativní ".../.../..." (z pracovního adresáře). Každý adresář obsahuje položky "." (tento adresář) a ".." (nadřazený adresář) Reprezentace souboru na disku Z pohledu operačního systému je soubor posloupností Bytů. Systém obsah souboru neinterpretuje. Poznámka: V textovém souboru se řádky oddělují znakem LF (vs. MS-DOS odděluje řádky znaky CR LF). Informace o souborech jsou soustředěny do jednoho místa na paměťovém médiu do seznamu i-uzlů (i-node). Jeden soubor (nebo adresář) je popsán právě jedním i-uzlem. Maximální počet souborů na disku nemůže překročit počet i-uzlů vyhrazených při vytváření systému. Každý i-uzel obsahuje diskovou adresu uložení dat a velikost souboru na disku. Jméno souboru je uloženo v adresáři. Všechny uzly se na daném médiu číslují od jedničky. 23/2/2012 UNIX (LINUX) 18

i-uzly neobsahují jméno souboru. "ls -il" vypíše obsah adresáře včetně čísla i-uzlu. i-uzel číslo 2 ukazuje vždy na kořenový adresář. Reprezentace adresáře na disku Adresář je zvláštní případ souboru. Obsahuje pouze jméno souboru a číslo i-uzlu. Kořenový adresář a jeho podadresář: Prázdná položka má číslo i-uzlu nulové. Na soubor obsahující položky kořenového adresáře ukazuje vždy i-uzel číslo 2. Čísla i-uzlů vypíše příkaz ls i. Na jeden fyzický soubor na disku může odkazovat i více jmen. Formát i-uzlu i-uzel na disku i-uzel v paměti - na disku volný x obsazený UID vlastníka souboru GID skupiny vlastníků typ souboru (obyčejný, adresář, symbolický odkaz, znakový nebo blokový speciální soubor, FIFO) přístupová práva 23/2/2012 UNIX (LINUX) 19

datum a čas poslední modifikace obsahu souboru, modifikace i-uzlu, přístupu k souboru počet odkazů na soubor seznam diskových adres uložení souboru velikost souboru v bajtech - v paměti navíc obsahuje identifikaci uzamknutí (pro výlučný přístup)... počet odvolávek (např. kolik instancí souboru je otevřených) indikace, že soubor je místem připojení dalšího systému souborů Všechny systému souborů jsou propojeny do jednoho adresářového stromu ( v OS je jeden kořenový adresář, disky jsou připojeny přes podadresáře). Odkaz (link) Odkazem je každá adresářová položka, která ukazuje na i-tý uzel (je zde uveden počet odkazů na i-uzel). - Tvrdý odkaz (hard link) lze vytvořit pouze v rámci jednoho fyzického systému souborů nově vytvořený odkaz náleží vlastníkovi souboru nelze vytvářet odkazy na adresáře při vytvoření nového souboru je v i-uzlu uložen jeden odkaz Situace: vytvořili jsme soubor "jméno1" Vytvořili jsme nový odkaz ln jméno1 jméno3 23/2/2012 UNIX (LINUX) 20

Zjištili jsme počet odkazů na soubor: ls l -rw-r--r-- 2 ucitel users 5 Mar 10 21:25 jméno1 -rw-r--r-- 2 ucitel users 5 Mar 10 21:25 jméno3 Hodnota "2" je počet odkazů na soubor. Úvodní "-" (minus) znamená, že jde o obyčejný soubor. Položky "jméno1" a "jméno3" jsou rovnocenné. Zrušili jsme původní soubor rm jméno1 ls l -rw-r--r-- 1 ucitel users 5 Mar 10 21:25 jméno3 - Odkazy a adresáře Vytvořením nového adresáře se vytvoří i-uzel, přidělí se mu minimální prostor v datové oblasti a vytvoří se dvě adresářové položky (. a.. tvrdé odkazy na vlastní adresář a na nadřazený adresář). Potřebná čísla i-uzlů spolu se jmény adresářů a počty odkazů zobrazí příkaz ls ild. 81937 drwxr-xr-x 3 ucitel users 1024 Mar 10 22:09 test - Symbolické odkazy Symbolické odkazy se používají častěji a umožňují: Odkazy na adresáře Odkazy mimo jeden systém souborů Situace: máme soubor jméno3 23/2/2012 UNIX (LINUX) 21

Vytvoříme symbolický odkaz na jméno9 : ln -s jméno3 jméno9 Vytvořením symbolického odkazu jméno9 se nezměnil i-uzel číslo 12 ani adresářová položka jméno3. Vytvoří se nový i-uzel typu symbolický odkaz a data obsahují jméno odkazovaného objektu. ls l -rw-r--r-- 1 ucitel users 5 Mar 10 22:46 jméno3 lrwxrwxrwx 1 ucitel users 6 Mar 10 22:48 jméno9 -> jméno3 Úvodní "l" (písmeno L) znamená, že jde o symbolický odkaz. Hodnota 6 je velikost souboru, tj. počet písmen "jméno3". Položky "jméno3" a "jméno9" nejsou v žádném vztahu. Příklad: ln jméno9 jméno8 Výjimka: Zrušení symbolického odkazu rm jméno9 - Speciální soubory 1. Speciální soubory představují hardwarová zařízení. Rozlišujeme: Znakový speciální soubor (např. klávesnice, tiskárna apod.) Blokový speciální soubor (např. disky) 23/2/2012 UNIX (LINUX) 22

Součástí jádra jsou "ovladače zařízení" Uživatelské rozhraní se vůči zařízením se realizuje prostřednictvím systému souborů Speciální soubor je odkaz na i-uzel, který ukazuje na ovladač Příkaz pro vytvoření speciálního souboru: mknod jméno typ hlavní_číslo vedlejší_číslo typ - je "b" (blokové zařízení) nebo "c" (znakové zařízení) hlavní_číslo - je číslo udávající typ zařízení ukazuje do tabulky zařízení vedlejší_číslo - je číslo jednotky Znakový a blokový speciální soubor vytváří superuživatel Zpravidla jsou uloženy v adresáři /dev Ve výpise příkazu ls l se objeví (údaje v pořadí hlavní číslo, vedlejší číslo) např.: crw-rw-rw- 1 root sys 14, 4 Apr 25 1995 audio brw-rw-r-- 1 root mail 2, 0 Jan 1 1980 fd0 Příklady speciálních souborů /dev/console - konzola počítače (obrazovka a klávesnice), /dev/fd0 - disketa číslo 0, /dev/hda1 - první IDE disk a jeho první oblast, /dev/sda1 - první SCSI disk a jeho první oblast, /dev/lp1 - paralelní rozhraní Centronics odpovídající LPT1:, /dev/cua0 - sériové rozhraní RS-232 odpovídající COM1:, /dev/tty1 - první virtuální konzola, /dev/null - prázdné zařízení, které přijme všechna data a které při čtení předá ihned eof (konec souboru) V Linuxu se příkazem mount všechny disky, paměťová média a další zařízení připojují do adresářové struktury, parametry připojení v souboru /etc/fstab. 2.FIFO pojmenovaná roura Vytváří se příkazem: mknod jméno p p (pipe) roura Pro přenos dat mezi procesy Při zápisu do roury se data ukládají na disk téměř stejně jako při zápisu do souboru i-uzel obsahuje ukazatel pro čtení a ukazatel pro zápis Ukazatele nelze měnit jinak než čtením/zápisem důsledně FIFO mknod trubka p ls l prw-r--r-- 1 ucitel users 0 Mar 18 22:12 trubka man mknod > trubka & Přesměrováním > výstup nepůjde na obrazovku, ale do souboru "trubka". Ukončením příkazu znakem & jej spustíme na pozadí. 23/2/2012 UNIX (LINUX) 23

more trubka Výpis obsahu souboru po obrazovkách. rm trubka Zrušení položky "trubka" v adresáři a zrušení i-uzlu. - Speciální adresáře / - kořen souborového systému, začátek stromové struktury /bin - základní spustitelné soubory pro použití všemi uživateli /boot - zde je umístěno jádro (kernel) systému a jeho mapa, initrd, soubory zavaděče (boot loader) GRUB /dev - fyzická zařízení nebo pseudozařízení /etc - globální konfigurační soubory systému Etc/passwd Etc/shadow Etc/group /home - domovské adresáře uživatelů /lib - základní sdílené knihovny systému, mapování klávesnice a konzolové fonty, moduly pro jádro systému (kernel) /lost+found - ztracené a opravené soubory po chybách FS (ext2,ext3) /mnt - do místních podadresářů se připojují další souborová zařízení, např. do "/mnt/floppy" disketa, do "/mnt/cdrom" CD ap. /opt - zde bývají SW aplikace, které nejsou standardní součástí distribuce /proc - soubory nastavení a stavu systému a jednotlivých procesů - dalo by se říci, že je to mapa stavu paměti RAM /root - domovský adresář superuživatele (root) /sbin - systémové privilegované spustitelné soubory, používané uživatelem root /sys - virtuání adresář (jádra 2.6.x) /tmp - adresář pro odkládací a pomocné soubory /usr - další stromová struktura, obsahuje velké množství informací, jako knihovny, zdrojové kódy, spustitelné soubory, konfigurační soubory pro jednotlivé uživatele /var - soubory, jejichž obsah se během chodu systému většinou mění; 23/2/2012 UNIX (LINUX) 24

- Struktura systému souborů a superblok Kompletní systém souborů obsahuje tyto komponenty: Zaváděcí blok je umístěn na začátku systému souborů. Může obsahovat zaváděcí program, který se načítá v okamžiku zavádění systému do počítače. Pokud jej neobsahuje, je zaváděcí blok prázdný. Superblok velikost systému souborů počet volných bloků v systému souborů seznam volných bloků index následujícího volného bloku v seznamu velikost seznamu i-uzlů počet volných i-uzlů seznam volných i-uzlů index následujícího volného i-uzlu v seznamu pole zámků pro seznam volných bloků a i-uzlů příznak modifikace superbloku Seznam i-uzlů jeho velikost určuje administrátor při vytváření systému souborů. Datové bloky každý blok patří nejvýše jednomu souboru popsanému v seznamu i-uzlů. - Přístupová práva V i-uzlu pro vyhodnocení přístupových práv jsou: vlastník souboru Číselné UID toho uživatele, který soubor vytvořil nebo kterému jej superuživatel věnoval. skupina vlastníka Číselné GID skupiny, do které byl uživatel v okamžiku vytváření souboru přihlášen nebo na kterou bylo GID změněno. Přístupová práva jsou v objektu uložena ve 12 bitech viz Poznámka. Zjednodušeně pro běžné uživatele jsou přístupová práva v objektu uložena v 9 bitech. práva Ve výpisu ls l : - rwx r-x r-x 1 novák student... lze oktalově zapsat 7 5 5 u g o a vlastník (označuje se u jako user ) Vlastníkem je ten, jehož UID je zapsáno v i-uzlu. skupina (označuje se g jako group ) ostatní (označuje se o jako others ) všichni (označuje se a jako all ) Systémy soubor u 23/2/2012 UNIX (LINUX) 25

Přístupová práva souboru:e: r - Soubor je povoleno číst (read). w - Do souboru je povoleno zapisovat (write). x - Soubor je povoleno spustit (provést) execute. Systémy soubor u Přístupová práva adresáře (d):e operace tyto významy: r - Adresář je povoleno vypsat; nikoli však zpřístupnit soubory v něm odkazované. w - Do adresáře je povoleno zapisovat; tj. lze vytvářet a rušit soubory. x - Do adresáře je možné vstoupit; tj. adresář může být argumentem příkazu cd a lze zpřístupnit i-uzly souborů, na které se adresář odkazuje. Přístupová práva se vyhodnocují v pořadí ugo. Vytvořit soubor mohu v kterémkoli adresáři, do kterého mám právo vstupu (x) a současně zápisu (w). Zrušit soubor libovolného vlastníka mohu v libovolném adresáři, do kterého mám právo vstupu (x) a současně zápisu (w). Příkaz pro změnu práv chmod (symbolicky - relativně) akceptuje parametry jako [ugoa][-+=][rwxst]. Tedy nejprve uvedeme komu měníme práva, pak uvedeme, jestli odebíráme právo (-), přidáváme (+), nebo nastavujeme přesně podle následujícího výčtu (=). Oprávnění můžeme také zapsat jiným způsobem (oktalově - absolutně). 23/2/2012 UNIX (LINUX) 26

Poznámka: Ještě existují 3 méně známé bity oprávnění, a to sticky (t) - 1000, setgid (s u skupiny) - 2000 a setuid (s u uživatele) - 4000. Tedy pokud k oprávnění 640 budeme chtít přidat bit setgid, musíme použít oprávnění 2640. Příznak sticky - Soubor uložený v adresáři, který má pro skupinu uživatelů právo zápisu, může kterýkoliv člen této skupiny smazat. To může být někdy nevýhodné, například u adresáře /tmp, kam si může kdokoliv něco odložit (právo zápisu do tohoto adresáře mají všichni uživatelé systému). Nastavíme-li na takový adresář sticky bit, změníme tím chování systému. Soubory (i adresáře) v tomto adresáři pak může smazat jen jejich vlastník (nebo uživatel root - správce systému). K nastavení tohoto příznaku slouží u příkazu chmod volba +t. - Přesměrování vstupu a výstupu (, >, >>, <) Občas je zapotřebí přesměrovat výstup programu do nějakého souboru nebo naopak řídit běh programu pomocí příkazů, které jsou obsaženy v některém souboru. - Roura (pipe, pipeline) neboli " Tento operátor nespadá do žádné známé kategorie. Tedy nepředává vstupní informace na výstup ani naopak. Slouží ke kombinaci příkazů a jejich rozšiřování. S jeho pomocí lze například upravit výpis příkazu ls. Často se totiž dostaneme do situace, kdy výpis adresáře bude delší než počet řádků obrazovky. Jak už jsme si řekli, k řízení tohoto výpisu můžeme použít příkaz ls. Použijeme rouru: ls -laf less V tuto chvíli se výpis adresáře podřídí stránkovému formátování a obdržíme výstup, který se bude vypisovat po jednotlivých obrazovkách. - Přesměrování výstupu Pokud chceme vložit výstup činnosti některého příkazu do souboru, máme na výběr. Buď můžeme tento soubor přepsat (pokud neexistuje, bude založen; pokud existuje, bude vymazán a následně zaplněn přesměrovaným výstupem), nebo můžeme tento soubor doplnit, tj. na jeho konec bude vložen námi přesměrovaný výpis: Syntaxe přepsání: příkaz > soubor ls -laf > vypis.txt Syntaxe doplnění: příkaz» soubor cat /etc/shadow» hesla.txt - Přesměrování vstupu Občas se dostaneme i do situace, kdy nechceme řídit činnost programu ručně z terminálu, ale raději bychom ji zautomatizovali. Zde nastává jedinečná příležitost pro využití přesměrování vstupu ze souboru. Syntaxe: příkaz < soubor Často se toto přesměrování používá například při automatizované konfiguraci nebo řízení FTP připojení, kdy chceme definovat, kam se má počítač přihlásit, co tam má udělat a jak se má odhlásit apod. 23/2/2012 UNIX (LINUX) 27

3. Systém procesů Proces je instance programu, který je právě spuštěn operačním systémem. V systému UNIX může proces vzniknout jedině voláním jádra fork. UNIX, jakožto představitel víceúlohového systému, je schopen provádět v jednom okamžiku více než jednu úlohu (proces). Stejně tak i v rámci jednoho programu může být v jednom okamžiku realizováno několik různých procesů. Proces, který vyvolal volání jádra fork, se nazývá rodičovský (parent) či prostě jen předek. Nově vytvořenému procesu říkáme potomek (child) někdy též dceřiný/synovský proces. Každý proces má jednoho rodiče, ale zároveň může mít i větší počet potomků. Je-li proces operačním systémem vykonáván, říkáme o něm (o systému), že běží v kontextu procesu. Když se jádro systému rozhodne, že by mělo vykonávat jiný proces, provede přepnutí kontextu. Jádro uschová dostatek informací, takže později může zpracování přerušeného procesu obnovit. Kontext procesu se skládá z obsahu jeho uživatelského adresového prostoru a obsahu strojových registrů, datových struktur jádra, které se k procesu vztahují. Každý proces je identifikovatelný podle svého celočíselného 16 bitového identifikátoru PID (Process Identification). Tuto celočíselnou hodnotu přiděluje jádro v okamžiku vytvoření nového procesu. Až na výjimky nemají hodnoty PID žádnou vypovídající hodnotu o procesu samotném, přidělují se lineárně v určitém rozsahu. Po jeho přetečení se přidělují zase od začátku. Jádro udržuje dvě základní datové struktury tabulku procesů a tzv. u-blok. - UNIXová tabulka procesů obsahuje informace pro všechny procesy - i pro ty, které nejsou momentálně v paměti. Proto je také tabulka stále v paměti přítomna. Udržované informace o procesech jsou například jejich PID, stav a parametry příkazové řádky, ale také hodnota registrů (programový čítač, ukazatel zásobníku, ), status otevřených souborů atd. Operační systém spravuje procesy na základě jejich identifikátoru PID, který funguje v tabulce procesů jako index. - Na rozdíl od tabulky procesů nejsou informace u-bloku stále přítomny v paměti. Pokud je asociovaný proces mimo paměť, jsou jeho informace odloženy (odswapovány). Účelem je nezabírat místo v paměti daty, které nejsou potřeba. U- blok tedy obsahuje informace o procesu, které nejsou potřebné pokud je mimo paměť. Příkladem porovnání tabulky procesů a u-bloku může být zaslání signálu procesu. Signály lze zasílat i procesům momentálně nenacházejícím se v paměti, proto informace s tímto svázané musí být v tabulce procesů. Na druhou stranu informace o souborech, se kterými proces pracuje, jsou udržovány v u-bloku. Tyto informace jsou potřebné jen pokud je proces v paměti a je možno jej vykonávat. Následuje přehled informací udržovaných v u-bloku: Registry procesoru. Po instrukci trap se uloží obsahy všech registrů (včetně FPU floating point unit) do u-bloku. Stav systémového volání. Číslo právě probíhajícího systémového volání, jeho parametry a výsledky. Tabulka popisovačů souborů. Pracuje-li systémové volání se soubory, je deskriptor 23/2/2012 UNIX (LINUX) 28

souboru použit jako index do této tabulky. Ukazuje na i-uzel odpovídající danému souboru. Účtování. Ukazatel do tabulky, která sleduje čas, který proces strávil v uživatelském kontextu a v kontextu jádra. Některé systémy nastavují limitní hodnoty času CPU, které procesor smí spotřebovat. Zásobník jádra. Jak již napovídá název, ukládá se sem zásobník používaný procesem běžícím v kontextu jádra. Technicky vzato je nový proces vytvořen stávajícím procesem, který vyvolá patřičné systémové volání. Toto systémové volání přímo či nepřímo říká operačnímu systému jaký program v procesu poběží. Během práce v systému se lze setkat se třemi druhy procesů. Uživatelské procesy - userspace processes jsou spouštěny jednotlivými uživateli, zpravidla pomocí interpretu příkazů. Obrazem procesu je obvykle program uložený na některém souborovém systému. Pokud má program nastaven SUID bit, vlastníkem procesu se stává vlastník tohoto programu. V opačném případě je vlastníkem procesu uživatel, který jej spustil. Vlastníkovi procesu se jinými slovy říká efektivní uživatel. Systémové procesy - daemons jsou spouštěny během startu systému a zajišťují různé služby. Systémový proces běží zpravidla v nekonečné smyčce a plní vymezené úkoly. Typickou činností systémového procesu je například periodická obsluha klientů. Systémové procesy jsou zpravidla odpojené od terminálů. Vlastníkem systémového procesu je buďto superuživatel root, nebo některý ze systémových uživatelů. Systémový proces se někdy nazývá daemon. Vlákna jádra - kernel threads jsou v podstatě speciální části jádra operačního systému běžící jako speciální procesy. Například vlákno kmod se stará o zavádění vyžadovaných modulů jádra do paměti. Na počítači s jedním procesorem může v jednom okamžiku běžet vždy jen jeden proces a ostatní musí čekat, až na ně přijde řada. Díky velmi krátkým intervalům, po které je proces aktivní, se zdá, že programy běží současně mluvíme o preemptivním multitaskingu, protože procesy jsou přepínány bez jejich vědomí. Který proces bude v příštím okamžiku aktivní rozhoduje operační systém na základě tzv. plánovače procesů (scheduler). Zkráceně řečeno, plánovač přiděluje procesor procesům. Ty buď procesor dobrovolně uvolní, například protože čekají na systémové zdroje, nebo je jádro nuceně přeruší. K tomu dojde ve chvíli, kdy čas jejich posledního běhu dosáhne hodnoty přiděleného časového intervalu. Z procesů, které přicházejí v úvahu, pak plánovač vybere ke zpracování proces s nejvyšší prioritou. Původní proces bude znovu spuštěn, jakmile se stane vhodným kandidátem. 23/2/2012 UNIX (LINUX) 29

Jedna z mála oblastí, ve které se operační systém Linux liší od tradičního UNIXu je právě algoritmus plánování procesů. Základní rozdíl spočívá v tom, že se zde nepracuje s procesy jako takovými, ale s vlákny (thread). Pomocí nastavení setuid můžeme docílit stavu, kdy proces vlastněný uživatelem A má privilegia, která má uživatel B. Pokud program zavedený do paměti má v i-uzlu nastaven bit setuid, pak: efektivní UID je rovno UID vlastníka souboru s programem, reálné UID se nemění a je shodné s UID vlastníka procesu. V situaci, kdy bit setuid není nastaven, se obě hodnoty (EUID i RUID) nemění a obsahují UID vlastníka procesu. Stavy a přechody procesu v systému UNIX Existuje devítistavový model. Jedná se o stavový diagram popisující přechody mezi jednotlivými stavy procesu. 23/2/2012 UNIX (LINUX) 30

Stavy procesů OS UNIX Proces vstoupí do stavového modelu ve stavu vytvořený, když rodičovský proces provedl volání jádra fork a poté přejde do stavu, ve kterém je připravený ke zpracování 3 nebo 5. Pro jednoduchost předpokládejme, že proces přejde do stavu připravený ke zpracování v paměti. Plánovač procesů jej dříve či později vybere ke zpracování a proces přejde do stavu běžící v režimu jádra, kde dokončí svou část volání jádra fork. Když proces dokončí volání jádra, může přejít do stavu běžící v uživatelském režimu. Po uplynutí časového úseku může časovač přerušit procesor a proces vstoupí znovu do stavu běžící v režimu jádra. Když přerušovací rutina časovače dokončí obsluhu přerušení, může si jádro vybrat ke zpracování jiný proces, takže první proces přejde do stavu nuceně přerušený a běží jiný proces. Stav nuceně přerušený je ve skutečnosti totožný se stavem připravený ke zpracování v paměti (přerušovaná čára na obrázku, která spojuje tyto dva stavy, naznačuje jejich ekvivalenci), ale pro zdůraznění skutečnosti, že proces pracující v režimu jádra může být nuceně přerušený jen když se chystá k návratu do uživatelského režimu, jsou znázorněny samostatně. Pokud by to bylo nezbytné, mohlo by jádro následně ještě proces ve stavu nuceně přerušený odložit. Plánovač posléze vybere proces znovu ke zpracování a ten se vrátí do stavu běžící v uživatelském režimu. Když proces provádí volání jádra, opustí stav běžící v uživatelském režimu a přejde do stavu běžící v režimu jádra. Předpokládejme, že volání jádra vyžaduje diskový I/O, při kterém proces musí čekat na jeho dokončení. Zablokuje sám sebe až do chvíle, kdy je informován o jeho dokončení. Když je později I/O operace skutečně 23/2/2012 UNIX (LINUX) 31

dokončena, přeruší technické prostředky procesor, přerušovací rutina proces aktivuje a způsobí jeho přechod do stavu připravený ke zpracování v paměti. Předpokládejme, že v systému běží mnoho procesů, které se nevejdou najednou do hlavní paměti, takže je proces vyměňovacím procesem odložen, aby udělal místo pro jiný proces, nacházející se ve stavu připravený ke zpracování, ale odložený. Když je proces z hlavní paměti odstraněn, přejde do stavu připravený ke zpracování, ale odložený. Časem vybere vyměňovací proces tento proces za nejvhodnějšího kandidáta uložení do hlavní paměti a proces se znovu dostane do stavu připravený ke zpracování v paměti. Plánovač posléze vybere tento proces ke zpracování, ten přejde do stavu běžící v režimu jádra a pokračuje. Když proces končí, provede volání jádra exit a přejde proto nejprve do stavu běžící v režimu jádra a na závěr do stavu zombie. Při pohledu na stavový diagram vidíme, že jádro povolí přepnutí kontextu za čtyř okolností: proces zablokuje sám sebe, proces skončí, proces se vrací z volání jádra do uživatelského režimu, ale není nejvhodnějším kandidátem pro další běh, vrací se do uživatelského režimu poté, co jádro dokončilo zpracování přerušení, a proces není nejvhodnějším procesem pro další běh. Jádro zajišťuje integritu a konzistenci svých interních datových struktur tím, že zakazuje libovolné přepnutí kontextu. Tedy žádný proces nemůže např. přerušit jiný proces, který běží v režimu jádra. Každý proces má přiřazeno minimálně šest identifikátorů zobrazených v následující tabulce: reálné UID a GID identifikátor uživatele a skupiny, která je skutečným vlastníkem procesu. Tyto dvě položky jsou uloženy v /etc/passwd a za běžných podmínek se v průběhu přihlášení se do systému nemění. (Proces superuživatele je však změnit může.) efektivní UID a GID, ID doplňkových skupin určují přístupová práva k souborům. Doplňkové skupiny jsou (za předpokladu, že uživatel patří do více skupin) uloženy v /etc/group, kde jsou uživatelskému jménu přiřazeny ve formě 23/2/2012 UNIX (LINUX) 32