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