http://www.gybon.cz/~rusek/vyuka/linux.html
- vznik OP se datuje do r. 1969
- původně název Unics, určený ke zesměšnění neefektivního Multicsu (pan Brian Kernigham)
- od té doby vznikají verze číslované V1 až V7
V1 (1971) - napsána v asembleru, požívána pro práci s texty
V4 (1973) - psána v jazyce C, možnost přenosu systému i na jiné architektury
V6 (1975) - poprvé použita mimo BTL (Bell Telephone Labs), systém byl
bezplatně předán univerzitám
V7 (1979) - obsahuje základní sadu příkazů, Bourne shell(sh), C překladač...
důvody popularity systému UNIX:
- je napsám vyšším prog. jazykem
- dostupné zdrojové texty OP a příkazů
Historie Linuxu
- autorem jádra je Linus Torvalds z Finska (1991)
Pravidla vývoje UNIXu
- půvdně autoři chtěli vytvořit textový editor, základní principy vývoje:
psát programy, kt. budou dělat právě jednu věc, atu budou dělat dobře
psát programy, aby mohly navzájem spolupracovat
psát programy tak, aby povely přijímaly hromadně ze vstupu v textové podobě
psát programy,tak, aby výstupy produkovaly v textové podobě a mohly být požity jako
vstupy do dalších programů
od začátku koncipován jako víceuživatelský operační systém, umožnit přístup více uživatelů k
jednomu počítači
uživatel přistupuje k počítači pomocí terminálu - neinteligentní "zobrazovací zařízení"
stisky klávesnice jsou přenášeny do vzdáleného počítače a zpět je odeslána odezva, kt. se
zobrazí na obrazovce
Uživatelské účty (user account)
účet jednoznačně definuje uživatele a jeho pracovní prostředí
účty se zapisují do souboru /etc/passwd
uživatelský účet obsahuje tyto položky:
uživatelské jméno (login name) skupina 3-8 znaků
heslo (password) je uloženo v zakódované podobě v souboru /etc/passwd
heslo má mít alespoň 6 znaků, rozlišují se malá a velká písmena
uživatelské číslo UID (user identification)
primární skupina GID (primary group identification)
každý uživatel je členem alespoň jedné skupiny uživatelů
členství v dalších skupinách je je uloženo v souboru /etc/group
přepínání mezi skupinami je příkazem newgrp
Doplňující uživatelské údaje
jméno, příjmení,...
domovský adresář (home directory)
absolutní cesta k adr., kt. se nastaví jako běžný
shell
jméno a cesta k souboru, kt. se spustí ja shell (interpret příkazů), pokud není jinak uvedeno použije se /bin/sh
superuživatel - root, uživatelské číslo (UID) 0
login: - zadat jméno účtu, zadávat malými písmeny !!
Password: - zadání hesla k účtu
- po úspěšném přihlášení s evypíše info o čase posledního přihlášení
dále se nastaví:
UID, GID, proměnné HOME, PATH, SHELL, TERM, MAIL, LOGNAME,
nastaví se domovský adresář, spustí se shell a vypisují se zprávy správce systému ze souboru /etc/motd
změna hesla se provádí příkzem passwd
Odhlášení ze systému
příkazem exit nebo logout
shell vypisuje vlastní prompt a očekává příkazy
dělají se rozdíly mezi malými a velkými písmeny !!!
příkazy lze zadávat do zásoby, příkazy se pamatují
příkaz se odešle klávesou ENTER
poslední znak se maže spec. znakem erase, řádek se maže znakem kill (^U)
nastavení spec. znaků pro terminál zjistíme příkazem stty -a
běžící proces násilně ukončíme znakem intr (^ C nebo klávesa DEL)
vstup z klávesnice ukončíme znakem eof (^ D)
výstup na obrazovku se zastaví znakem stop (^ S), obnoví se znakem start (^ Q)
speciální znak susp pozastaví běžící proces (^ Z), obnovení procesu provedeme příkazem fg
UNIX je vybaven sadou manuálových stránek
nápovědu k příkazu vypíšeme příkazem man příkaz
všechny odkazy na zadaný text zjistíme příkazem apropos text
Vstupy a výstupy příkazů
každý proses má v UNIXu automaticky přístup ke třem zvláštním souborům :
standardnímu vstupu (0)
standardnímu výstupu (1)
standardnímu chybovému výstupu (2)
v UNIXU mohou souběžně běžet stovky procesů
od jednoho programu může v jednom okamžiku běžet více kopií jako procesy (dynamická
běžící instance programu)
každý proces je jdenoznačně identifikován číslem procesu PID
proces 0 se vytvoří při zavádění systému a nic nevykonává - idle task
proces 1 se nazývá init a je předkem každého z procesů
informace o procesech se vypíše příkazem :
ps ( s parametrem -ax se vypíše info o všech procesech)
ps -ax
procesům posíláme signály příkazem kill
kill -9 pid - ukončí proces
fyzických způsobů ukládání souborů existuje více:
BSD - systém 4,2
Sum Microsystems - ext2fs
oper. systémy typu UNIX nezapisují data na disk v okamžiku vyžádání požadavku k zápisu,
ale až později, v systému běží démon (proces čekající v apměti na určitou událost - něco jako
TSR), kt. tento zápis zajišťuje
Adresáře a soubory
DOS převzal souborový systém od UNIXu jsou však tyto rozdíly:
jm. souboru je max. 255 zn.
rozlišuje se mezi malými a velkými písmeny
jméno souboru smí obsahovat libovolné znaky, tečka je jako každý jiný znak, může
obsahovat i mezeru
zvláštní význam mají soubory začínající tečkou (např .profile), jsou obdobou skytých
souborů z DOSu
adresáře se v zápisu cesty oddělují normálním lomítkem "/"
pojmy aktuální, kořenový adresář, absoulutní cesta, relativní cesta - mají stejný význam
jako v DOSu
Adresář automaticky obsahuje dvě položky:
. akuální adresář,
.. nadřazený adr.
pwd - vypíše cestu k aktuálnímu adresáři
cd - změna aktualního adresáře, bez parametrů nastaví adresář domovský
mkdir - vytvoření adr.
rmdir - zruší zadané prázdné adr.
rm - zruší soubor.
cp - kopíruje soubor
mv - přesune soubor (přejmenuje)
informace o souborech jsou soustředěny do tzv. seznamu i-uzlů (i-node)
jededn soubor je popsán právě jedním i-uzlem
i-uzel obsahuje:
diskovou adresu uložení dat
velikost souboru na disku
neobsahuje jméno souboru
adresář je zvláštní případ souboru:
obsahuje jméno souboru a číslo i-uzlu
kořenový adr. je adresář jako každý jiný
na soubor obsahující položky kořenového adresáře ukazuje vždy i-uzel 2
na jeden fyzický soubor na disku může ukazovat více než jedno jméno
v systému UNIX máme vždy poze jeden kořenový adresář - jeden logický adresářový strom, i když je připojeno více fyzických disků
odkaz (link), v každém i-uzlu je uložen počet odkazů na tento i-uzel
při vytvoření nového souboru se do i-uzlu tohoto souboru uloží 1
je možno vytvořit další odkaz na tato data pod jiným jménem - příkazem ln
ln existující soubor nový odkaz - ln jméno1 jméno3
podrobnější informace týkající se douboru získáme příkazem: ls -l
- příst. práva 2 vlastník skupina velikost datum jmeno1
- příst. práva 2 vlastník skupina velikost datum jmeno3
všechna jména si jsou rovnocenná
příkaz rm zruší jméno (odkaz na i-uzel) a v i-uzlu sníží počet odkazů o 1, pokud má počet
odkazů hodnotu 0, i-uzel zruší
těmto odkazům se říká tvrdé odkazy (hard link) - na rozdíl od symbolických odkazů
tvrdé odkazy je možno tvořit pouze v rámci jednoho fyzického systému souborů
nově vytvořený odkaz náleží vlastníku souboru bez ohledu na to, kdo odkaz vytvořil
vytvoříme-li nový adresář , vytvoří se jeho i-uzela dvě adresářové položky (. a ..)
toto jsou tvrdé odkazy na vlastní i-uzel a na i-uzel nadřízeneého adr.
čísla i-uzlů se jmény adresářů zjistíme příkazem:
ls -ild
používají se častěji než tvrdé odkazy
příkazem ln -s vytvoříme symbolický odkaz jméno2 následovně:
ln -s jméno1 jméno2
tuto situaci lze zobrazit následovně:
použití symbolického odkazu znamená textovou náhradu jména odkazu jeho obsahem
příklad :
ln jméno2 jméno3
změní situaci následovně:
příkaz:
rm jméno2
situace se změní následovně:
speciální soubor představuje rozhraní ovladače zařízení. Ovladače (drivery) zařízení jsou
součástí jádra systému a byly do něj zařazeny v růběhu kompilace. Speciální soubor ukazuje na
i-uzel dvou možných typů:
i-uze pro blokové zařízení
i-uzel pro znakové zařízení
bloková zařízení (block device)
zařízení s přímým přístupem, která přenášejí data po blocích (disk)
znaková zařízení (character device)
přenášejí data po znacích (sériová linka)
rozhraní jádra vůči ovladačům zařízení popisuje tabulka blokových a tabulka znakových
zařízení.
Administrátor vytváří speciální soubor příkazem mknod:
mknod /dev/ttyS1 c 4 65
Příkaz vytvoří speciální soubor ttyS1 v adr. /dev, určí, že jde o znakové zařízení (c),
tomuto zařízení je přiděleno hlavní číslo (major number) 4 vedlejší číslo (minor number) 65.
Hlavní číslo koresponduje s příslušným záznamem v tabulce zařízení a vedlejší číslo indikuje
jednotku zařízení
Speciální soubor se zpravidla umisťuje do adresáře /dev.
Příklad typických spec. souborů v Linuxu:
/dev/console konzola počítače (obrazovka a klávesnice)
/dev/fd0 disketa č. 0
/dev/hda1 první IDE disk a jeho první oblast
/dev/lp1 paralelní rozhraní odpovídající LPT1
/dev/tty1 první virtuální konzola
Pojmenovaná roura (FIFO)
Pojmenovaná roura (pipe) patří mezi speciální soubory. Používá se pro přenos dat a
synchronizaci mezi dvěma procesy. Struktura je frontou FIFO.
Rouru vytváříme příkazem:
mknod jméno p
mknod trubka p
vyzkoušíme:
man mknod > trubka & přesměrování výstupu do trubky
more trubka
rm trubka
Kompletní systém souborů obsahuje tyto komponenty:
zaváděcí blok - může obsahovat zaváděcí program
superblok - popisuje systém souborů
seznam i-uzlů
datové bloky
Struktura typického adresářového stromu
Částečně obecný přehled:
/ kořen adr. stromu
/vmlinuz, /linux, /unix soubor s obrazem jádra systému zaváděného do paměti
/bin obsahuje základní příkazya systémové příkazy
/boot obsahuje programy nezbytné pro zavedení OS
/dev adresář speciálních souborů
/etc adresář většinou konfiguračních souborů
/home adresář domovských adresářů uživatelů
/lib adresář sdílených knihoven a modulů jádra
/mnt pomocný adr. pro dočasné připojování jiných syst. souborů
/proc
/root domovský adr. uživatele root
/sbin adresář se syst. programy nezbytnými pro zavedení a zákl. údržbu
systému
/tmp veřejný adr. pro pomocné dočasné soubory
/usr adresář se soubory, kt. jsou typicky neměnné a nejsou potřebné pro
zavedení syst.
bin další, převážně uživatelské programy
etc konfig. adr. pro progray uložené v systému souborů /usr
include hlavičkové .h soubory pro C překladač
lib knihovny a kompilátory, příp. spustitelné soubory
local programy lokálně instalované v rámci instituce
man manuálové stránky
sbin syst. programy
src zdrojové soubory
X11 X-Windows
/var pracovní a administrativní soubory systému
pro vlastníka souboru
pro skupinu vlastníka
pro ostatní
informace zapsané v i-uzlu pro vyhodnocení přístupových práv:
vlastník souboru - číslo UID uživatele, kt. soubor vytvořil
skupina vlastníka - číselné GID skupiny, do které byl uživatel v okamžiku vytváření
souboru přihlášen
přístupová práva - jsou uložena ve 12 bitech
Přístupová práva se specifikují pro 3 různé kategorie:
vlastník (user) - co s objeketem může vlastník provádět
skupina (group) - co s objektem mohou provádět uživatelé skupiny, jejíž GID je zapsáno v i-uzlu
ostatní (others) - co s objektem mohou provádět ostatní
Ve všech vlastnických skupinách je možno povolit nebo zakázat stejné oprace rwx.
Rozlišujeme, zda jde o soubor nebo adresář. Pro soubor se operace definují následovně:
r soubor je povoleno číst
w do souboru je povoleno zaoisovat
x soubor je povoleno spustit
pro adresáře:
r adr. je povoleno vypsat
w do adr. je povoleno zapisovat, vytvářet a rusšit soubory
x do adr. je možno vstoupit (pomocí cd), lze zpřístupnit i-uzly souborů, na kt. adr. odkazuje
Zjištění přístupových práv
příkazem ls -l soubor .... výpis tohoto typu:
-rwxr-x--x 1 novak student ....
minus na zač. určuje, že jde o soubor
první trojice (rwx) určuje přístupová práva pro vlastníka
druhá trojice (r-x) určuje práva pro skupinu
třetí trojice (--x) určuje práva pro ostatní
Přístupová práva adresáře zjistíme příkazem:
ls -ld adresář
výsledek:
drwxr-x--x 2 novak student ...
znak d označuje, že jde o adresář
Příklady vyhodnocování přístupových práv:
vytvořit soubor mohu v adr., do kterého mám práva (w) a (x)
zrušit soubor libovolného vlastníka mohu v adr., kam práva (w) a (x)
číst soubory mohu tehdy, pokud mám právo vstupu (x) do adr. a právo čtení (r) souboru
zapisovat do souboru mohu tehdy, pokud má právo vstupu (x) do adresáře a právo zápisu
(w) do souboru
spustit soubor mohu tehdy, pokud mám právo vstupu (x) do adresáře a právo spustit (x) soubor.
soubor po spuštění běží pod UID toho, kdo jej spustil
Uložení přístupových práv:
bit význam
4000 SUID bit
2000 SGID bit
1000 sticky bit
0400 čtení pro vlastníka
0200 zápis pro vlastníka
0100 provedení pro vlastníka
0040 čtení pro skupinu
0020 zápis pro skupinu
0010 provedení pro skupinu
0004 čtení pro ostatní
0002 zápis pro ostatní
0001 provedení pro ostatní
Implicitní přístupová práva
příkazem umask se nastaví implicitní práva. Tato práva se použijí při vytváření kadého nového objektu.
Osmičkově se specifikují ty bity, které se nemají nastavovat.
umask 022 touch soubor rw-r--r--
mkdir adresář rwxr-xr-x
umask 27 touch soubor rw-r-----
mkdir adresář rwxr-x---
Změna přístupových práv
Přístupová práva měníme příkazem
chmod.
Pávo měnit přístupová práva má právo pouze vlastník objektu.
Příklady:
chmod go-w soubor skupině a ostatním se odebere právo zápisu
chmod 644 soubor nastaví se přístupová práva ve tvaru rw-r--r--
chmod go+r * skupině a ostatním se u všech položek běžného adr. přidá právo čtení
Změna vlastníka souboru
Vlastníka změníme příkazem
chown
Přihlášení do jiné skupiny
Uživateli se nastaví GID podle záznamu v souboru /etc/passwd. Aktuální GID uživatele se
kdykoli později mění příkazem newgrp:
newgrp [skupina]
Změnit GID se dá pouze na hodnotu povolenou v souboru /ec/group. Bez uvedení skupiny se
nastaví GID podle uživatelského záznamu.
Změna skupiny souboru
Skupina se mění příkazem
chgrp.
Vlastník souboru smí změnit pouze na skupinu uvedenou v souboru /etc/group.