dum | žák

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í
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

pdf icon
Práva k souborům

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