neděle 29. března 2026

Linux: Oprávnění souborového systému

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:

  1. user permission - oprávnění uživatele (vlastníka souboru/adresáře)
  2. group permission - oprávnění skupiny (uživatelů se stejnými právy)
  3. others permission -  oprávnění ostatních (uživatelů v systému)
Advice
V infografice můžeme vidět, že soubor run.py má nastavena práva "rwxrw-r--. Z toho vyplývá, že soubor run.py je čitelný a zapisovatelný pro uživatele michal a členy skupiny dev a pouze čitelný pro všechny ostatní uživatele, ale spustitelný pouze pro uživatele michal.
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.