Menu

Oprávnění

Upozornění: Domovské adresáře v labu jsou umístěny na síťovém filesystému AFS, který používá jiný systém práv, než popisuji dále (konkrétně ACL). Všechny pokusy a cvičení s právy tedy doporučuji provádět v adresáři /tmp, který je umístěn na lokálním disku a práva na něm fungují dle očekávání.

Každý soubor v UNIXu má nastavena práva, která určují kdo může se souborem manipulovat a jak. Každý soubor má nějakého vlastníka (owner), obvykle je jím ten, kdo soubor vytvořil, a skupinu (group). Vlastníka a skupinu, stejně jako práva souboru zjistíme pomocí ls -l soubor:

musilekj@u-pl0:~$ ls -ld /etc/passwd /etc/shadow /dev/null /tmp ~
drwxr-xr-x 53 musilekj nofiles    6144 23. úno 22.32 /afs/ms/u/m/musilekj
-rwxr-xr-x  1 root     root     693240 18. kvě  2013 /bin/bash
crwxrwxrwx  1 root     root       1, 3 25. zář  2006 /dev/null
-rw-r--r--  1 root     root       4151 10. říj 16.30 /etc/passwd
-rw-------  1 root     root       1351 10. říj 16.30 /etc/shadow
drwxrwxrwt 61 root     root  196317184 23. úno 22.34 /tmp

Třetí pole výpisu určuje vlastníka (musilekj, příp. root), čtvrté pole skupinu. root je speciální uživatel, správce systému, který má oproti ostatním uživatelům výjimečné pravomoci. K práci s ním se ale v labu nedostaneme.

Z hlediska oprávnění nás bude zajímat první pole výpisu, skládající se z deseti znaků. První z nich určuje typ souboru – - značí obyčejný soubor, d je adresář, c speciální znakové zařízení. Existují i další, postupem času se s nimi seznámíme. Z následujících devíti znaků určují první tři oprávnění vlastníka, další tři oprávnění skupiny a poslední tři oprávnění všech ostatních (tedy uživatelů, kteří nejsou vlastníkem daného souboru, ani nejsou ve skupině). Interpretace písmenek je následující:

normální soubory
r – právo ke čtení
w – právo k zápisu
x – právo ke spuštění
s – setuid / setgid bit – program bude spuštěn s právy vlastníka / skupiny

adresáře
r – právo vypsat obsah adresáře
w – právo vytvářet a mazat soubory v adresáři
x – právo vstoupit do adresáře
s – setgid bit – nově vytvořené soubory budou mít stejnou skupinu 
                 jako adresář
t – sticky bit – soubory v adresáři může mazat či přesouvat pouze 
                 jejich vlastník a root

Z bezpečnostních důvodů není možné vzdát se vlastnictví souboru. Jediný kdo může změnit vlastníka souboru je root. Vlastník souboru může změnit jeho skupinu příkazem chgrp, na některých UNIXech je ale nutné, aby byl sám členem skupiny, do které soubor přiřazuje. Seznam skupin, ve kterých jste zařazeni získáte zavoláním příkazu groups (není v POSIXu). Práva změníme pomocí příkazu chmod:

chmod kdo[+-=]práva

kdo: u – vlastník, g – skupina, o – ostatní, a – všichni
+-=: + – přidej práva, - – odeber práva, = – nastav práva
práva: r w x s t – viz výše

Alternativně můžeme změnu práv zapsat pomocí čísla. Jedna číslice je pak součtem oprávnění a vyjadřuje postupně nastavení setuid, setgid a sticky bitu, práva pro vlastníka, skupinu a ostatní. Pokud nenastavujeme setuid, setgid ani sticky bit, můžeme první číslici vynechat.

setuid bit – 4     r – 4
setgid bit – 2     w – 2
sticky bit – 1     x – 1

Příklad:
rwxr-xr-x = 755
rw-r----- = 640
rwxrwxrwt = 1777
rwsrwsrwt = 7777