Appearance
Filesystem
Pokud jste si linux nainstalovali, nejspíš už jste si všimli, že vaše disky fungují jinak než na windows, nemají písmenka a když instalujete programy, počítač se vás neptá kam program chcete uložit. Na linuxu je jeden filesystem začínající kořenovou složkou /, pod ní se nachází strom, ve kterém jsou všechny soubory, všechny složky i zařízení, do tohoto filesystemu jsou pak v jednotlivých složkách připojeny data z disků. Pro lidi zvyklé z windowsu, místo toho aby se po připojení flash disku zobrazil nový disk s jiným písmenem, obsah připojeného disku bude ve dříve uživatelem / systémem vybrané složce. (většinou /mnt, /mnt/<další podsložka>)
Organizace kořenové složky
Filesystém linuxu je velmi organizovaný, každá složka pod kořenovou složkou má nějáký význam, zde je jejich list.
| Lokace | Popis |
|---|---|
| /bin | Nacházejí se v něm binární spustitelné soubory přístupné všemi uživateli (nyní je symlinkem na /usr/bin) |
| /boot | Obsahuje soubory bootloaderu a komprimovaný obraz jádra (- vmlinuz.img) |
| /dev | Obsahuje soubory zařízení (devices) a odhaluje je uživateli |
| /etc | Obsahuje konfigurační soubory systému (nesmějí být spustitelné) |
| /lib | Obsahuje sdílené systémové knihovny a linker (nyní symlinkem na /usr/lib) |
| /mnt | Na tento adresář se obvykle připojují oddělitelná média jakéhokoliv typu |
| /sbin | Nacházejí se v něm systémové binární soubory – nutné pro správu systému (nyní symlinkem na /usr/bin) |
| /srv | Obsahuje data pro servisy poskytované počítačem/serverem |
| /usr | Adresář pouze pro čtení, přístupný všem uživatelům (v dávných dobách obsahoval ) |
| /var | Obsahuje soubory kterým se za běhu systému bude měnit velikost (mailbox, logy, ), pro zachování |
| /proc | Obsahuje složku s informacemi pro každý běžící proces |
| /sys | Adresář odhalující hardware a jeho nastavení |
| /run | Obsahuje systémové informace o běhu |
| /tmp | Dočasné soubory uložené v paměti |
| /home/[user] | Obsahuje domovské adresáře uživatelů na systému (v nich jim náležící soubory, konfigurace...) - mít /home na oddělené cestě usnadňuje zálohování (případně na jiném oddílu disku - soubory se mohou zachovat i po přeinstalaci systému) |
| /root | Podobné jako /home, ale pro root účet |
| /opt | Doslova optional - adresář pro volitelné soubory |
Oprávnění
Narozdíl od windowsu, kde se s oprávněními souborů nesetkáváme často, pouze když stahujeme aplikace a vyskočí na nás hláška spustit jako administrátor?, na linuxu se s oprávněními setkáme mnohem častěji, dále si vysvětlíme jak oprávnění na linuxu fungují.
Uživatelé
Abyste se do systému mohli přihlásit, musíte mít vytvořený účet. Při zapnutí počítače na vás nejspíše vyskočí přihlašovací obrazovka, kam musíte zadat své heslo, aby se do počítače nedostal nikdo jiný než vy. Mimo jmého a heslo však každý uživatel má uživatelské id (UID; většinou 1000) a skupiny (jednu primární), domácí složku (kde se nacházíte, když spustíte terminálový emulátor, cesta kam směřuje ~) a shell (o tom později)
Root
V kapitole instalace softwaru jsme se bavili o spouštení příkazu jako administrátor, na linuxu se nepoužívá uživatel pojmenovaný Administrátor, ale používá se tzv. root. Root uživatel je uživatel s id 0 a skupinou root (také id 0).
Jelikož není chytré spouštět každý příkaz s administrátorskými oprávněními (security by obscurity) většinou se používá vlastní uživatel, který má přístup k příkazu sudo (super user do). Tento příkaz se zeptá na vaše heslo a poté příkaz spusí jako root.
Samozřejmě každý uživatel nemá oprávnění spouštět příkaz sudo (systémoví administrátoři jsou uživatelé, kteří k tomuto příkazu mají přístup), sudo můžou spouštět uživatelé ve skupině sudoers, nebo speciálně nastavení uživatelé / skupiny.
Skupiny
Jak bylo řečeno dříve, každý uživatel má nějáké skupiny (těch může mít víc) a ty často rozhodují co smí dělat. (např. se skupinou sudoers uživatel může spouštět příkaz sudo) Stejně jako u uživatelů, skupina má také své id. (GID)
Oprávnění souborů
Každý soubor si skladuje 2 informace, jaký uživatel ho vlastní a jaká skupina ho vlastní. Dále si ukládá módy v jakých uživatel může k souboru přistupovat r - read, w - write, x - execute. Tyto módy jsou uložené pro majitele souboru, skupinu vlastnící soubor a pro všechny ostatní. (v tomto pořadí) Soubory mohou být nastaveny tak, že k nim má přístup pouze vlastnící uživatel rwx------, nebo třeba vlastnící uživatel a vlastnící skupina smí soubor pouze číst rwx-r-----.
Pokud použijeme příkaz ls s argumentem -l, oprávnění budou hned v prvním sloupci ve stejném formátu jako výše (rwxrwxrwx, kde pokud uživatel, skupina nebo ostatní nemají daný mód oprávnění, je písmeno nahrazené za -), pokud přeskočíme druhý sloupec, kde je velikost souboru, ve třetím sloupci můžeme vidět uživatele, který soubor vlastní a ve čtvrtém sloupci uvidíme vlastnící skupinu.
Změna oprávnění
Nyní se naučíme další příkazy, které můžeme využít na změnu vlastníků a módů oprávnění souborů.
bash
# Pomocí příkazu chown můžeme změnit vlastníka souboru, první argument je uživatel a skupina, kteří po spuštění příkazu
# budou vlastníky a druhým argumentem je soubor, pro který chceme oprávnění změnit
chown root:root flag.txt
# Příkaz chmod mění módy oprávnění souboru. Stejně jako u chown, nejdříve příkazu předáme informace jaké mají být nové
# oprávnění souboru a poté vybereme soubor.
# Zápis je však narozdíl od výpisu v ls jiný, můžeme buď použít číselný zápis (3 čísla - vzácně 4, 0-7, sečtené módy
# r = 4; w = 2; x = 1; rwx = 7; První číslo označuje mód uživatele, druhé skupiny, třetí ostatních) nebo zápis bližší
# tomu co známe z ls (u=rwx,g=rx,o=r - vybereme komu měníme mód a nastavíme ho na rwx hodnotu za =, také místo = můžeme
# použít +, abychom mód přidali nebo - abychom mód odebrali)
chmod 770 flag.txt
chmod +x flag.txt
chmod o-rwx flag.txt
chmod g= flag.txt
chmod u=rwx,o= flag.txt