Linux (po vzoru Unixu) nabízí naprosto skvělou správu a skvělé možnosti oprávnění. Můžeme nastavit, kdo se kam a na co může podívat nebo naopak nesmí. A to jak na úrovni souborů, tak i jednotlivých adresářů a podadresářů.
Linuxová souborová oprávnění jsou prezentována buď symbolickým zápisem ("rwxrw-r-x") nebo číselným zápisem ("765") v osmičkové soustavě.
U každého souboru a adresáře máme tři skupiny uživatelských oprávnění po čtyřech různých stavech. Tyto stavy jsou :
- r (4) - readable (čtecí právo)
- w (2) - writable (zapisovací právo)
- x (1) - executable (spouštěcí právo)
- - (0) - denied (žádné oprávnění)
A skupiny uživatelských oprávnění jsou tyto:
- user permission - oprávnění uživatele (vlastníka souboru/adresáře)
- group permission - oprávnění skupiny (uživatelů se stejnými právy)
- others permission - oprávnění ostatních (uživatelů v systému)
Chceme-li změnit oprávnění k souboru, a umožnit jeho úpravu všemi uživateli počítače, použijeme příkaz chmod:
chmod 766 run.py
nebo
chmod o+w run.py
Na další infografice můžeme vidět možnost sestavení kódu buď symbolicky, binárně nebo číselně s tím, že binární kód odpovídá číselnému (111 = 7).
Číselný zápis:
- 7 (4 + 2 + 1) - rwx (všechna práva)
- 6 (4 + 2) - rw- (čtení a zápis)
- 5 (4 + 1) - r-x (čtení a spuštění)
- 4 (4) - r-- (pouze čtení)
- 3 (2 + 1) - -wx (zápis a spuštění)
- 2 (2) - -w- (pouze zápis)
- 1 (1) - --x (pouze spuštění)
A pak tu máme speciální oprávnění:
- SUID (4000) - Spuštění souboru pod uživatelem, který jej vlastní.
- SGID (2000) - Soubor získá skupinu adresáře.
- Sticky bit (1000) - Soubory může mazat pouze jejich vlastník (často bývají v /tmp adresáři)
Změnu oprávnění děláme pomocí příkazu:
chmod 765 nazev.souboru
Stejné je to i pro adresáře. Pokud chceme stejná oprávnění nastavit i vnořeným adresářům, přidáme přepínač -R:
chmod -R 765 nazev.adresare
Kromě běžných typů (- soubor nebo d adresář) známe i speciální typy položek:
c - znakové zařízení
Komunikace zde probíhá po znacích, bez vyrovnávací paměti.
Typické příklady:
- /dev/tty (terminál)
- /dev/random
- /dev/zero
Používá se pro zařízení, která posílají data postupně.
b - blokové zařízení
Přístup probíhá po blocích.
Typické příklady:
- /dev/sda (disk)
- /dev/nvme0n1
- /dev/mmcblk0
p - pipa (pojmenovaná roura)
Umožňuje jednosměrnou komunikaci mezi procesy.
michal@zorin:~$ ls -l
prw-r--r-- 1 michal dev 0 Mar 29 20:15 moje_roura
s - socket
Umožňuje obousměrnou komunikaci mezi procesy.
Používá se pro:
- lokální komunikaci (Unix sockety)
- služby systemd
- databáze (např. /var/run/mysqld/mysqld.sock)
l - symbolický link (odkaz)
Ukazuje na jiný soubor.
michal@zorin:~$ ls -l
lrwxrwxr-x 1 michal dev 0 Mar 29 20:30 link -> soubor
Dá se říct, že v Linuxu je řízení práv značně komlexní a po zažití i velice snadné. Chce to jen potrénovat a nebát se to používat.