Charakteristika operačního systému GNU/Linux
OS Unixového typu - filozofie, procesy, uživatelé, souborový systém, základní programy a další věci jsou shodné s Unixovými standardy Víceúlohový OS - jeden člověk může mít spuštěno několik programů současně Víceuživatelský OS - více lidí může současně pracovat na jednom fyzickém počítači. OS uživateli vytváří virtuální prostředí tvářící se, jako by měl
počítač sám pro sebe: nikdo nebude bez jeho povolení číst jeho soubory, nikdo nebude zasahovat do běhu jeho programů, bude moci používat periferní jednotky počítače (tiskárny, vstupní jednotky,..) atd.
Víceprocesorový OS – podpora až 64 procesorů
http://knihy.cpress.cz/DataFiles/Book/00000675/Download/K0819.pdf
Historie Linuxu
Autorem operačního systému Linux je pan Linus Torvalds. Původní verzi Linuxu napsal v roce 1991. Od té doby však byla tato verze mnohými dalšími programátory značně upravena a zdokonalena. Na vývoji Linuxu se nijak nepodílely společnosti, které vytvořily původní UNIXové systémy. Linux byl kompletně celý znovu vytvořen. Pan Torvalds však přišel s jednou velice zajímavou myšlenkou. Rozhodl se, že neponechá vývoj Linuxu jen na svých bedrech, ale podělí se o starosti s širokou programátorskou veřejností. Tak vlastně došlo k velice zajímavému vývoji operačního systému, který vlastně probíhá dodnes. Každou část operačního systému má na starosti jeden programátor. Je to jakýsi koordinátor. Toho kontaktuje spousta dobrovolníků, kteří sami vytváří různá vylepšení a doplnění operačního systému. Pokud je doplnění nebo oprava výhodné, je tato zahrnuta koordinátorem do celku operačního systému.
Svobodný software, GNU
Tento projekt byl započat v roce 1984. Jeho zakladatelem byl Richard Stallman. Komponenty tohoto projektu jsou šířeny pod licencí GPL a LGPL. Cílem tohoto projektu bylo vytvořit volně šiřitelný operační systém postavený na Unixové filozofii. Nyní je projekt hotov až na jádro Hurd, které je postavené na mikrojádru Mach. Jelikož původní jádro nebylo zatím dokončeno, používá se nyní systém GNU spolu s jádrem Linux, které začal Linus Torvalds. Mimo odbornou veřejnost se toto spojení chybně nazývá pouze Linux, celý název tohoto operačního systému však zní GNU/Linux. Co znamená GNU? −
GNU je rekurzivní akronym pro větu "GNU is not Unix" (GNU není Unix). Gnu však také znamená pakůň hřivnatý. Ostatně logo to dokazuje skvěle.
Výhody GNU/LINUX
Moderní operační systém
Bezpečný - bez virů a spywaru
Velké množství aplikací
Kancelářské nástroje (Office)
Variabilní a přizpůsobitelný
Víceuživatelský a víceúlohový
Vzdálená správa a použití
Kvalifikovaná podpora a dokumentace
Dostupný v češtině
Pro všechny zdarma
GPL
Linux
GPL - General Public License ( „všeobecná veřejná licence “) −
GNU
licence pro svobodný software
−
zdrojové kódy software pod GPL mohou být svobodně upravovány a používány, šířeny však musí být opět pod GPL
−
tvoří základ projektu GNU
GNU – akronym GNU is not UNIX −
projekt zaměřený na svobodný software, inspirovaný operačními systémy unixového typu
−
původní cíl byl vyvinout operační systém se svobodnou licencí, který však neobsahuje žádný kód původního UNIXu
−
vývoj od r. 1982 , projekt úspěšně dokončen v roce 1992 přídáním jádra LINUX
LINUX – jádro (kernel) operačních systémů UNIXového typu GNU/Linux −
jeho zdrojový kód volně k dispozici pro veřejnost a kdokoli jej může svobodně používat, upravovat a dále distribuovat.
GNU/Linux , distribuce
GNU/Linux -unixový operační systém složen z linuxového jádra a zároveň z knihoven a nástrojů z projektu GNU + další zdroje.
GNU/Linuxová distribuce - zkráceně distribuce − − −
Distribuce je spojením systému GNU, Linuxového jádra a řady dalšího, převážně svobodného software. linuxové jádro + další aplikace GNU/Linux může dodávat každý => existuje spousta profesionálních nebo amatérských distribucí
Všechny distribuce mají stejný základ - jádro OS, knihovny a nástroje od GNU. Liší se “obalem“ (tzn. instalátorem) a “složením“ (tzn. software, unikátní úpravy)
Seznam distribucí
Debian – Jejím zakladatelem je Ian Murdock. Distribuce je pojmenována po jeho ženě (Debra). Je to přísná open-source distribuce, ktrerá je vyvíjena dobrovolníky z celého světa. Debian nabízí on-line repozitář (server, kde jsou uloženy zdrojové kódy) softwarových balíků. Fedora – Jedná se o distribuci, za kterou stojí (sponzoruje) Red Hat, protože je na tomto systému založena. Je to volná distribuce, která vzniká podobně jako Debian. Klade důraz na otevřenost a bezpečnost. Red Hat – Jedna z nejstarších distribucí. Dnes velmi komerční, hlavně díky Red Hat Enterprise Linuxu. V Red Hatu vznikl balíčkovací systém RPM. Na desktopech se již moc nepoužívá.
Slackware – pro pokročilejší uživatele.
Mandriva (dříve Mandrakelinux) – vhodná pro začátečníky
SUSE – Původně samostatná distrbuce, později koupena firmou Novell. .
Ubuntu – distribuce vhodná pro začátečníky vychází z Debianu
Systém souborů, adresářová struktura GNU/Linux Základem systému souborů je kořenový adresář (root directory), který se značí /
V Linuxu jen jeden kořenový adresář, označený '/'.
Všechny další souborové systémy se připojují do jednoho stromu
takže když chceme například přistupovat k souborům na disketě, tak ji připojíme do adresáře /mnt/floppy a pokud máme oddělený diskový oddíl pro adresáře uživatelů, tak jej připojíme do adresáře /home.
Souborové systémy se připojují příkazem mount a odpojují příkazem umount. Soubor /etc/fstab uvedeny všechny disky a souborové systémy, které se při startu automaticky připojí nemusíme ručně připojovat při každém spuštění systému všechny disky
příkaz df všech CD-ROMy)
zobrazí kapacitu, obsazení a volné místo připojených jednotek (pevné disky,
LINUX - Adresářová struktura
/ - 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 + soubory zavaděče (boot loader) GRUB nebo LILO /dev - soubory v tomto adresáři reprezentují jednotlivá fyzická zařízení nebo psedozařízení systému.
/etc - globální konfigurační soubory systému
/home - domovské adresáře uživatelů
/lib - základní sdílené knihovny systému
/lost+found - ztracené a opravené soubory po chybách FS
/mnt - do místních podadresářů se připojují další souborová zařízení, např. do "/mnt/floppy" disketa, do "/mnt/cdrom" CD /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 /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 a další.
Souborový systém (filesystem)
způsob organizace informací (souborů) tak, aby bylo možné je snadné najít a přistupovat k nim Souborový systém umožňuje ukládat data do souborů, které jsou označeny názvy. Obvykle také umožňuje vytvářet adresáře, pomocí kterých lze soubory organizovat do stromové struktury. Žurnálovací systém souborů - zapisuje změny, které mají být v počítačovém systému souborů provedeny, do speciálního záznamu nazývaného žurnál (anglicky journal). − účel - ochránit data na pevném disku před ztrátou integrity v případě neočekávaných havárií (výpadek napájení, neočekávané přerušení vykonávaného programu, pád systému apod.). Windows:
NTFS … používá žurnálovací systém souborů
FAT16, FAT32 … nepoužívá
Souborové systémy
ext2
- open source souborový systém − −
umožňuje nastavit práva UGO (uživatele, skupiny,ostatních) poskytuje pevné odkazy, symbolické odkazy, zařízení, adresáře, pojmenované roury, …
ext3
- navazuje na ext2
ext4
zpětně kompatibilní − žurnálovací filesystem - navýšení výkonu a spolehlivosti −
ReiserFS - nevýhoda - dlouhá doba „mountování“ a dlouhé prodlevy čtení/zápis u velkých datových kapacit
Typy souborů
-
d directory (adresář, seznam jmen souborů)
l
plain file (obyčejný soubor)
symbolic link (symbolický odkaz)
I-node
(česky I-uzel)
datová struktura uchovávající metadata o souborech a adresářích (metadata - strukturovaná data o datech.) Nese informace o tom, jaké jsou přístupové práva k danému souboru, kdy došlo k poslední změně či prístupu k souboru, kdo je jeho vlastníkem, počet hardlinku a především informace o tom, kde se nachází obsah souboru ve filesystemu.
V adresářích jsou pak dvojice název souboru a I-uzel, které definují soubory a adresáře
Výpis názvů spolu s čísly I-uzlů v adresáři: ls -i
Výpis obsazeného datového prostoru: df
Výpis počtu obsazených I-uzlů: df -i
Linky - odkazy
hard link (pevný link – odkaz) −
jedno číslo i-nodu má více jmen souborů
−
neexistuje originál či kopie - dva soubory mají společný I-node
−
pevný odkaz vytvoříme příkazem: ln jméno_cíle [jméno_pev_odkazu] Pro zjištění, kolik jmen souborů ukazuje na daný soubor, můžeme použít příkaz stat nebo se podívat na číslo v druhém sloupci ve výpisu adresáře příkazem ls -l
−
symlink (soft link, symbolický odkaz) −
soubor typu l, ve kterém je napsána cesta směřující k odkazovanému souboru (Obdoba zástupce v OS MS Windows)
−
může odkazovat i na adresáře
−
Symbolický odkaz vytvoříme příkazem:
ln -s jméno_cíle [jméno_sym_odkazu]
Základní příkazy OS Linux
ls
cd [ADRESÁŘ]
pwd
cp několik
vypíše obsah aktuálního nebo zadaného adresáře změní aktuální adresář
zobrazí aktuální adresář zkopíruje soubor do jiného souboru, nebo zkopíruje souborů do zadaného adresáře
mv přesouvá soubory do jiného adresáře , nebo je přejmenuje
mkdir vytvoří nový adresář
rmdir
rm
chmod
zruší prázdný adresář smaže jeden nebo více souborů mění atributy souborů
Základní příkazy OS Linux
cat , less
df
du
free
passwd
vypíše obsah souboru na obrazovku
zobrazí kapacitu, obsazení a volné místo všech připojených jednotek (pevné disky, CD-ROMy) zobrazí velikosti adresářů zobrazí kolik je obsazené a volné paměti ram a místa v odkládacím prostoru (swap) změna hesla
Typy diskových oddílů
Pevné disky počítačů se dělí na diskové oddíly tzv. partitions. Tyto oddíly jsou buď využity, a je na nich určitý souborový systémem, nebo jsou nevyužité. Každý oddíl pevného disku pracuje jako samostatná jednotka.
Diskové oddíly lze rozdělit na tři typy: – primární, rozšířený a logický.
MBR −
Master Boot Record je prvních 512 bytů (0. hlava, 0. cylindr a 1. sektor) na začátku každého disku. Obsahuje zavaděč systému a tabulku rozdělení disku (partition table). Někdy také volitelně identifikátor disku.
−
Hlavní úlohou MBR je načíst do paměti boot sektor oddílu, který je označen jako aktivní v partition table.
Primární diskové oddíly Kvůli omezení BIOSu počítače lze nastavit pouze 4 primární diskové oddíly. Jsou to oddíly zapsané v MBR (master boot record) oblasti disku. ●
Rozšířené diskové oddíly Rozšířené (extended) oddíly byly zavedeny kvůli potřebě dělení disků na více než 4 oddíly se zachováním zpětné kompatibility. Rozšířený diskový oddíl nelze přímo používat, ale může obsahovat větší množství logických oddílů. Je to v podstatě „kontejner“ pro logické oddíly. ●
Logické diskové oddíly Logický oddíl je oddíl umístěný v rozšířeném diskovém oddílu. Logicé oddíly musí na sebe navazovat. Každý logický oddíl obsahuje odkaz na jeho následující oddíl. ●
Oddíl Swap Každý proces operačního systému potřebuje pro svůj běh určité množství operační paměti (RAM). V případě nedostatku této paměti se momentálně nepotřebná data z RAM (např. blokované procesy) přesouvají na disk aby uvolnili místo běžícímu procesu. Data se odkládají na speciálně vyhrazený oddíl – swap. ●
Vlastnosti swap oddílu Velikost oddílu Swap by měl být velký alespoň stejně jako je velká RAM počítače, neuškodí však více. U serverů je swap oddíl několikanásobně větší oproti RAM. Důvody dělení disků na oddíly
* Správně rozdělený disk na oddíly je více přehledný. * Šetření místem při výběru správného souborového systému (např. pro malé soubory). Velký oddíl u FAT32 zvětšuje clustery (nejmenší jednotka disku). * Lepší administrace a údržba disku (defragmentace, správa místa, formátování). * Bezpečnost dat, ochrana a izolace uživatelských dat při havárii operačního systému a oddílů. * Možnost koexistence více operačních systému. * Možnost využívat výhody jednotlivých souborových systémů.
Diskové zařízení na linuxu Na Linuxu jsou všechny zařízeni reprezentovány ve speciálním adresáři /dev (device files) se speciálním souborovým systémem DevFS nebo modernějším Udev. IDE zařízení mají označení hd*. V případě primárního řadiče má master zařízení hda, slave zařízení hdb. Slave na sekundárním řadiči by pak měl hdd. Obvykle mají počítače 2 IDE řadiče, takže se většinou setkáváme se zařízeními označenými hda – hdd. SCSI zařízení jsou označovány obdobně jako sd*. Značení diskových oddílů na linuxu Jednotlivé oddíly každého zařízení obsahují v názvu navíc číslo. Primární disk rozdělený na dva oddíly tak bude mít v adresáři /dev soubory hda1 a hda2.
Zabezpečení souborového systému, přístupová práva
Přístupová práva jsou atributy (parametry) souboru nebo složky, které říkají, jaká práva k nim mají určití uživatelé či skupiny uživatelů Oprávnění se dělí do tří skupin podle: −
Vlastníka (číselné UID)
−
Skupiny (do které patří vlastník, číselné GID)
−
Ostatní
Vlastník je ten, kdo soubor vytvořil a jehož UID číslo je zapsáno v i-uzlu
Aktuální skupina toho, kdo vytvořil soubor
Typ práva
Symbolické vyjádření
Oktalové vyjádření
Čtení Zápis Spuštění
r (Read) w (Write) x (eXecute)
4 2 1
Pro práci více osob na jednom projektu je nutné sdělování práv, tj. dát ostatním osobám (uživatelům) práva k práci se soubory. Práva uživatelů jsou: Právo na čtení – r Právo na zápis - w Právo na spuštění souboru - x Tato práva se určují zvlášť pro majitele souboru, skupinu a ostatní.
−
−
Stejná přístupová práva se dají nastavit i adresáři, ale znamenají něco trochu jiného.
Právo čtení povoluje přečíst, co je uloženo v adresáři. Právo zápisu dává možnost měnit obsah adresáře (nové nebo mazat) Právo spuštění povoluje, aby bylo možno vstoupit do adresáře
Změna přístupových práv
pomocí příkazu chmod
Komu práva přiřadit: u - user (vlastník) g - group (skupina) o - others (ostatní)
Příklady:
chmod u+w jméno_soubor
Jaká práva přiřadit: r - read (čtení) w - write (zápis) x - execute (spouštění)
Jakou operaci použít: = - nastavit + - přidat - - odebrat
−
chmod o+x jméno_soubor −
přídá právo zápisu pro vlastníka souboru přídá právo spouštění pro ostatní uživatele
chmod g-r jméno_soubor −
odebere právo čtení pro primární skupinu uživatele
Rozšířená (speciální) práva
Standardně dědí potomek (nový proces) oprávnění svého rodiče. Někdy je však nutné, aby měl spuštěný program jiná (vyšší) oprávnění Symbolické vyjádření s s t
Právo
uživatel skupina ostatni
setuid setgid sticky
setuid - Program s nastaveným setuid bitem má při běhu práva svého vlastníka. −
Kategorie
Používá se hlavně v případech, kdy chceme dočasně zvýšit poskytnutá práva
setgid - podobně jako setuid - mění skupinu
Používán je hlavně u adresářů, kdy po provedení příkazu patří všechny nově vytvořené soubory do určené skupiny a ne do hlavní skupiny uživatele. sticky bit - ve starších verzích Unixu – zamezení odtranění programu z paměti −
−
Použití při práci s adresáři - při nastavení tohoto příznaku smí soubory v tomto adresáři přejmenovat či smazat pouze jejich vlastník
ACL (Access Conrol List )
ACL - seznam oprávnění připojený k nějakému objektu ( souboru). Seznam určuje, kdo nebo co má povolení přistupovat k objektu a jaké operace s ním může provádět. V typickém ACL specifikuje každý záznam v seznamu uživatele a operaci. ACL v Linuxu - rozšiřuje práva souboru −
může nastavit, který konkrétní uživatel do toho kterého souboru může zapisovat, číst atd..
−
Pro práci s ACL slouží příkazy getfacl a setfacl.
−
setfacl - nastavování práv
−
getfacl - výpis práv
Příkazový interpret Shell, systémové prostředí
Příkazový řádek je zobrazován speciálním programem, který se nazývá příkazový interpret - shell Shell - interpret programovacího jazyka. Čte příkazy z terminálu nebo ze souboru a provádí je Příkazové interprety mají svůj vlastní programovací jazyk a programy napsané v tomto jazyce se nazývají skripty příkazového interpretu - shell scripts Různé Unixovské shelly: − − − −
Bourne shell C-shell Korn shell Bourn again shell z Bourne shellu
-
sh csh ksh bash
vychází z Bourne shellu představitel GNU, vychází
bash je implicitním příkazovým interpretem používaným v operačním systému GNU/Linux http://cs.wikipedia.org/wiki/Bourne-Again_shell
Shell - spuštění a ukončení
Po přihlášení se uživateli spustí shell, který má uvedený v souboru /etc/passwd − Pro spuštění bash shellu je uvedeno /bin/bash −
Tento první spuštěný shell se nazývá login shell. Provádí soubor /etc/profile - login script pro všechny uživatele při přihlášení do systému Dále provádí tyto skripty (pokud existují) v domovském adr. uživatele: − .bash_profile − .bash_login − .profile Při odhlašování provádí skript v domovském adresáři: − .bash_logout
Systémové proměnné
Každý program běžící v Linuxu ma přiřazeno jisté prostředí –enviroment
Prostředí je množina dvojic [systémová proměnná, hodnota].
Systémové proměnné jsou znakové řetězce - píší se velkými písmeny. Proměnné se vytvářejí v shellu zápisem PROMENNA=hodnota, exportují se příkazem export PROMENNA. zjištění hodnoty proměnné - příkaz: echo $PROMENNA. vypsat prostředí shellu (všechny proměnné) příkazy: printenv nebo env Znak dolaru se používá k vyhodnocení systémové proměnné, avšak pouze v kontextu s příkazovým procesorem – přesněji s příkazovým procesorem, jenž realizuje interpretaci příkazu.
http://www.abclinuxu.cz/clanky/navody/bash-i
Některé důležité systémové proměnné Proměnná
HOME TERM SHELL USER PATH
Obsahuje
Příklad
Domovský adresář
/home/novacek
Typ terminálu
xterm,vt100,console
Cesta k příkazovému procesoru
/bin/bash
Jméno účtu
novacek
Seznam adresářů, ve kterých se automaticky vyhledávají programy ke spuštění /bin:/usr/local/bin:/usr/bin/X11
Proměnná PATH
Systémová proměnná PATH obsahuje seznam adresářů oddělených dvojtečkou, ve kterých systém automaticky vyhledává spustitelné programy. Když například zadám příkaz ls bude příkazový procesor bash hledat program ls nejdříve v adresáři /home/larry/bin, který jsem vytvořil pro ukládání mých vlastních programů. Program ls jsem však nenapsal já, proto zde příkazový procesor tento příkaz nenašel. Jako další prohledává příkazový procesor adresář /bin. A zde program ls našel. Protože soubor ls je spustitelný program, přestane příkazový procesor dále hledat a spustí jej. Může se stát, že v jiném adresáři bude také uložen spustitelný program ls (například v adresáři /usr/bin), ale příkazový procesor jej nespustí, pokud mu to výslovně nepřikážete:
Přesměrování vstupů a výstupů
Jako standardní vstup bývá nejčastěji chápán vstup z klávesnice, standarní výstup je nejčastěji veden na obrazovku (zrovna tak standardní chybový výstup) LINUX však umožnňuje přeměrování standardního vstupu nebo výstupu ze/do souboru. To například umožňuje načítat vstupní data ze souboru místo klávesnice, nebo vypisovat výstupní data do souboru (místo na obrazovku).
Přesměrování standardního výstupu − Přesměrování lze provést pomocí znaku '>' následovaným jménem souboru, do kterého se má výstup přesměrovat, např: − ls -l > vystup.1 − ls -l >> vystup.1 Přesměrování standardního vstupu − −
Přesměrování lze provést pomocí znaku '<', například příkaz cat < vstup.1
Kolony (pipeline)
V Unixu se programy, které čtou data ze standarního vstupu a vypisují je na standardní vstup někdy označují jako tzv. filtry. Jedná se například o programy cat, more, grep ... Takovéto programy lze pomocí mechanismu, který se označuje jako roura (pipe), spojovat do tzv. kolon (pipeline). − − −
Princip spočívá v tom, že standardní výstup z jednoho programu je přeměrován na standardní vstup jiného programu. To lze na příkazové řádce zajistit pomocí znaku '|'. Například výpis souboru 'file1' na obrazovku lze zajistit pomocí příkazu cat file1. Když je soubor příliš dlouhý, uteče nám text za horní okraj obrazovky. Tomu se dá zabránit buď tak, že místo příkazu cat použijeme příkaz more, a nebo příkaz more použijeme jako filtr:
cat file1 | more
Expanze jmen (souborů) tzv. "žolíkové znaky"
*
libovolná posloupnost znaků (i nulové délky), nezastupuje řetězec
?
právě jeden libovolný znak
[]
znaků začínající tečkou
právě jeden znak z množiny znaků uvedených v těchto závorkách, při specifikaci lze použít následující dva speciální znaky: −
používa se pro označení intervalů znaků z množiny ASCII (např. a-z, 0-9),
−
! negace výčtu znaků