Linux
Název školy | Vyšší odborná škola obalové techniky a Střední škola, Štětí, příspěvková organizace | ||
Adresa školky | Kostelní 134, 411 08 Štětí | ||
IČ | 46773509 | ||
Název operačního programu | OP Vzdělávání pro konkurenceschopnost | ||
Registrační číslo | CZ.1.07/1.5.00/34.1006 | ||
Označení vzdělávacího materiálu | VY_32_INOVACE_21_PSS_408 | ||
Název tématické oblasti (sady) | Operační systémy | ||
Název materiálu | Práva k souborům | ||
Anotace | Představení systému přístupových práv v Linuxových systémech. Popis funkcionality UGO – RWX. Praktická část je zaměřena na nastavování práv k souborům a adresářům s akcentem na mírné odlišnosti mezi souborem a adresářem. | ||
Autor | Ivan Pomykacz | Jazyk | český |
Očekávaný výstup | Rozumí problematice přístupových práv. Odlišuje jednotlivé složky UGO. Interpretuje rozdíl RWX u souborů a adresářů. Aplikuje nový mód na soubor dle zadání/situace za účelem odepření nebo nabytí přístupu ke zdroji. | ||
Klíčová slova | UGO, vlastník, skupina, ostatní, RWX, čtení, zápis, spuštění, mód souboru | ||
Druh výukového zdroje | Výklad | Věková skupina žáků | 17+ |
Typ interakce | aktivita | Ročník | 3. |
Speciální vzdělávací potřeby | žádné | ||
Zhotoveno, (datum/období) | 26.11.2013 | Celková velikost |
Obsah
V Debianu je implementována technika přístupových práv k souborům dle standardu POSIX. Takže všechny POSIXové systémy mají stejný způsob řízení přístupových práv, tzn. všechny Linuxy, Unixy, Androidi a třeba i MAC OS (jež je založený na UNIXu).
UGO
Každý soubor nese informaci o vlastníkovi (User) a skupině (Group), který jej vytvořil. Takže když uživatel vytvoří soubor, automaticky bude vlastníkem a jako skupina se u souboru nastaví primární skupina tohoto uživatele. To o skupině nemusí platit vždy, vizte setgid.
Poslední písmenko ve zkratce UGO jsou tzv. ostatní (Others). To doslova znamená všichni ostatní uživatelé v systému.
RWX
Další trojicí písmenek lze definovat, jaká konrétní oprávnění má mít k souboru vlastník nebo skupina nebo ostatní. Trošku posunutý význam RWX mají oproti souborům adresáře, i když adresář je vlastně jen soubor s příznakem, že je adresářem.
Uvádím proto význam RWX nejprve pro soubory.
Soubory
R .. Read (čtení)
W .. Write (zápis)
X .. eXecute (spuštění)
Jak ste si nejspíš právě odvodili, právo Read znamená číst obsah souboru, právo Write umožňuje měnit obsah souboru a poslední právo Execute dovolí soubor spustit (má samozřejmě význam u souborů, které jsou určené pro spouštění).
Adresáře
Mají stejná oprávnění v podobě UGO-RWX jako soubory, jen význam je přenesený s ohledem na to, že jde o adresář, který slouží jako konteiner pro soubory.
R .. čtení obsahu adresáře (informace o souborech)
W .. vytváření nových souborů (a tedy i adresářů)
X .. procházení (vstup do adresáře)
Příklad se souborem
Vytvořme soubor pokus.txt příkazem touch
.
tux@wheezy:~$ touch pokus.txt
Nyní příkazem ls -l
si vypíšeme obsah adresáře, kde se objeví i právě vytvořený soubor.
Parametr -l
se postará o podrobný výpis, ze kterého budeme moci vyčíst vlastníka souboru, skupinu a práva.
tux@wheezy:~$ ls -l celkem 0 -rw-r--r-- 1 tux tux 0 pro 24 10:40 pokus.txt
Nenechte se zmást informací v úvodu: celkem 0, nejde o počet souborů, ale počet alokovaných bloků u všech souborů ve výpisu.
Náš soubor má nulovou velikost, proto 0 (vizte ls -l -s
).
Co je pro nás ale momentálně důležitější, je řádek popisující soubor pokus.txt. Začněme zleva.
Mód souboru
První znak, ve výpisu pomlčka (z celé sekvence -rw-r--r--
), znamená, že jde o regulérní soubor.
Na této pozici se může objevit např. l - symbolický odkaz, c - znakové zařízení, b - blokové zařízení nebo d - adresář.
Po prvním znaku následuje sekvence tří trojic (můžete je spočítat) znaků, kde se objevuje (zpravidla) jedno z písmenek RWX nebo zase pomlčka.
V našem případě to je rw-r--r--
.
Když bychom sekvenci rozepsali po trojicích, dostaneme rw-
, r--
a r--
.
A znamená to, že první uvedená trojice rw-
platí pro vlastníka (User), druhá r--
pro skupinu (Group) a třetí r--
pro ostatní (Others).
Pokud bych volně přeložil význam rw-
, pak vlastník může soubor pokus.txt číst (zjistit, co je v něm) a upravovat (měnit jeho obsah).
Nemůže jej však spustit (na třetí pozici je totiž -
), protože chybí právo x
.
Skupina a ostatní mají stejná práva. Mohou pouze číst obsah souboru (a tím jej třeba i zkopírovat).
Vlastnictví souboru
Z výpisu ls -l
lze dále vyčíst, kdo je vlastníkem souboru a jakou má přidělenu skupinu.
Jak již bylo popsáno výše, za běžných okolností se u vytvářených souborů nastavuje vlastník a skupina uživatele, který soubor vytvořil.
-rw-r--r-- 1 tux tux 0 pro 24 10:43 pokus.txt
Nenechte se zmást, že se výpisu objevuje dvakrát tux. V prvním případě jde o vlastníka a v druhém s skupinu. Připomeňme si id, ze kterého lze vyčíst jméno vlastníka (uživatele) a primární skupinu.
tux@wheezy:~$ id uid=1000(tux) gid=1000(tux) skupiny=1000(tux),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev)
Příklad s adresářem
Podívejme se, jak vypadá obsah kořenového adresáře.
tux@wheezy:~$ ls -l / celkem 76 drwxr-xr-x 2 root root 4096 dub 21 18:55 bin drwxr-xr-x 3 root root 4096 dub 21 18:56 boot drwxr-xr-x 13 root root 3040 kvě 24 07:37 dev drwxr-xr-x 76 root root 4096 kvě 23 13:27 etc drwxr-xr-x 3 root root 4096 kvě 23 13:27 home lrwxrwxrwx 1 root root 28 dub 21 18:48 initrd.img -> /boot/initrd.img-3.2.0-4-486 drwxr-xr-x 14 root root 4096 dub 21 18:51 lib drwx------ 2 root root 16384 dub 21 18:47 lost+found drwxr-xr-x 3 root root 4096 dub 21 18:47 media drwxr-xr-x 2 root root 4096 úno 3 10:24 mnt drwxr-xr-x 2 root root 4096 dub 21 18:47 opt dr-xr-xr-x 72 root root 0 kvě 24 07:37 proc drwx------ 3 root root 4096 kvě 23 10:34 root drwxr-xr-x 12 root root 560 kvě 24 07:37 run drwxr-xr-x 2 root root 4096 dub 21 18:59 sbin drwxr-xr-x 2 root root 4096 čen 10 2012 selinux drwxr-xr-x 2 root root 4096 dub 21 18:47 srv drwxr-xr-x 12 root root 0 kvě 24 07:37 sys drwxrwxrwt 4 root root 4096 kvě 24 12:15 tmp drwxr-xr-x 10 root root 4096 dub 21 18:47 usr drwxr-xr-x 11 root root 4096 dub 21 18:47 var lrwxrwxrwx 1 root root 24 dub 21 18:48 vmlinuz -> boot/vmlinuz-3.2.0-4-486
Nyní si můžete všimnout, že většina položek ve výpisu jsou adresáře (písmenko "d"). Až na dvě výjimky, což jsou případy symlinků (symbolický odkaz).
Za všimnutí rovněž stojí i to, že všechny adresáře mají vždy kombinaci práv r-x
, někdy rwx
.
V případě adresářů by použití samotného r
nebo x
nemělo moc význam.
Uvažte, jak by to vypadalo, kdybychom mohli číst obsah adresáře, ale nemohli jej procházet?
Vytvořme adresář a podívejme se, jaká se mu nastaví práva.
tux@wheezy:~$ ls -l celkem 4 drwxr-xr-x 2 tux tux 4096 pro 24 12:29 hokus -rw-r--r-- 1 tux tux 0 pro 24 10:43 pokus.txt
Téměř stejné jako u souboru, jen x
je zde navíc.
Změna módu
Přidání nebo odebrání některého z práv (rwx) vlastníkovi, skupině nebo ostatním lze provést příkazem chmod
.
Příkaz chmod
má poněkud barvitou syntaxi.
Různé věci lze nastavovat různě složitě.
V ukázce níže odebereme všechna přidělená práva ostatním u adresáře hokus.
tux@wheezy:~$ chmod o=-r-x hokus/ tux@wheezy:~$ ls -l celkem 4 drwxr-x--- 2 tux tux 4096 pro 24 12:29 hokus -rw-r--r-- 1 tux tux 0 pro 24 10:43 pokus.txt
Na pozici ostatních jsou nyní tři pomlčky ---
.
Obdobně bychom mohli odebrat práva i skupině.
tux@wheezy:~$ chmod g=-r-x hokus/ tux@wheezy:~$ ls -l celkem 4 drwx------ 2 tux tux 4096 kvě 24 12:29 hokus -rw-r--r-- 1 tux tux 0 kvě 24 10:43 pokus.txt
Kdybychom naopak chtěli vše vrátit zpátky:
tux@wheezy:~$ chmod g=+r+x,o=+r+x hokus/ tux@wheezy:~$ ls -l celkem 4 drwxr-xr-x 2 tux tux 4096 kvě 24 12:29 hokus -rw-r--r-- 1 tux tux 0 kvě 24 10:43 pokus.txt