Systém UNIX (1970) byl od prvopočátku navržen jako víceuživatelský. Tuto vlastnost převzal i systém Linux (1992). Windows byl ještě v roce 1998 stále jednouživatelský. Technicky podporoval více uživatelů, ale bez jakékoliv ochrany dat. Podpora více uživatelů přišla až v roce 2000 s Windows 2000.
Standard POSIX definuje systém oprávnění, který používají všechny unixové systémy (UNIX, GNU/Linux, macOS, iOS, Android, WebOS, Tizen...). Ten umožňuje definovat pravidla přístupových práv, aby uživatelé nemohli přistupovat k citlivým datům jiných uživatelů, zajišťuje maximální bezpečnost systému atp.
Systémy Windows si přístupová oprávní řeší po svém – tedy úplně jiným způsobem nekompatibilním se standardem POSIX.
Každý soubor a adresář má přidělena různá oprávnění (i ty skryté). Ty se vztahují na tři kategorie uživatelů: vlastníka, skupinu a ostatní. Jsou vidět v podrobném výpisu adresáře (přepínač -l
):
$ ls -l
$ ls -la
Výpis by mohl vypadat například takto (toto je pouze ukázkový příklad, který by ve skutečnosti těžko nastal):
První znak zobrazuje typ souboru. Znaků je víc. Pro běžné potřeby stačí znát tyto tři:
Znak | Význam |
---|---|
- |
(pomlčka) běžný soubor |
d |
adresář (directory) |
l |
symbolický odkaz (něco jako Zástupce ve Windows) |
Zbylých devět znaků definuje oprávnění pro tři skupiny uživatelů:
První znak každé trojice je r
čtení (read), druhý w
zápis (write), třetí je x
spouštění (executable). Písmeno x
u adresáře znamená právo jej "otevírat" (vstupovat do něj).
Pokud je na příslušném místě místo nich znak -
(pomlčka), je příslušné oprávnění odepřeno.
Právo | Význam u souboru | Význam u adresáře |
---|---|---|
r |
Čtení souboru | Čtení názvů obsažených položek |
w |
Zápis do souboru | Vytváření souborů a adresářů |
x |
Spuštění souboru | Vstup do adresáře |
To jsou ty dva sloupce se jmény.
U vlastních souborů se skupina jmenuje stejně jako vlastník a jediným členem jste pouze vy.
Změny oprávnění může provádět pouze vlastník. Ve výchozím nastavení jsou všechna nastavena tak, aby je nebylo nutné měnit. V některých konkrétních případech jsou naopak změny nezbytné (např. spouštění skriptů). Základní syntaxe je:
$ chmod <cislo> <soubor|adresar>
Parametr <cislo>
je trojciferné vyjádření oprávnění v intervalu 000
až 777
. První cifra je vlastník, druhá skupina, třetí ostatní. Oprávnění tvoří součet čísel 4
, 2
a 1
.
Příklady některých běžných oprávnění:
rwx------ 700
rw------- 600
rw-r--r-- 644
rw-rw---- 660
rwxr-wr-x 755
rwxrwx--- 770
rwxrwxrwx 777
rw-rw-rw- 666
💡 Vlastník si ke svým souborům může práva upravovat bez omezení – rizika, že si je po odebrání práv nebude moci přidat.
Práva se kódují v oktalové číselné soustavě. Minimální je kód 000
, maximální 777
. Kolik to je možností?
Čísla 1
, 2
a 4
jsou mocniny řádů: 20 = 1, 21 = 2, 22 = 4.
Zajímavý je tento pohled:
DEC BIN odpovídá
0 000 ---
1 001 --x
2 010 -w-
3 011 -wx
4 100 r--
5 101 r-x
6 110 rw-
7 111 rwx
Tento způsob je oproti číselnému praktičtější:
Několik příkladů:
$ chmod +x soubor
$ chmod g+r soubor
$ chmod go-w soubor
$ chmod o+rw soubor
u
= user (vlastník), g
= group (skupina), o
= other (ostatní), a
= all (všichni, ekvivalent ugo
).+
oprávnění přidává, -
oprávnění odebírá.
Tento způsob se nejčastěji využívá pro přidání oprávnění spouštění (+x
).
Pokud chybí písmeno "komu", přidá se všem (viz první ukázkový příklad).
Tyto změny běžný uživatel provádět nesmí. Na to má oprávnění pouze root nebo uživatel s právy sudo. Pro ně se práva nekontrolují. Jsou zde uvedeny pouze pro úplnost.
$ chown <nazev> <soubor>
$ chgrp <nazev> <soubor>
Seznam uživatelů je v souboru /etc/passwd
, seznam skupin v souboru /etc/group
.
Linuxový terminál nabízí bohatý příkazový aparát pro správu těchto kategorií. Existují příkazy jako groups
, adduser
a řada dalších.
r
,w
,x
číselné oprávnění NNN.-rw-rw-r--
(nebo jiné)./root
?x
u adresáře?x
u souboru?Vytvořte adresář ~/prava1
a přesuňte se do něj. Další činnosti provádějte v něm.
/etc/apt/sources.list
pod novým názvem zdroje
.ascii –d
do souboru ascii.txt
.prg.c
a přidejte právo spouštění pouze sobě..config
zapište v číselném vyjádření jeho oprávnění.zaloha
a nastavte mu práva rwx------
.Vytvořte adresář ~/prava2
a přesuňte se do něj. Další činnosti provádějte v něm.
/etc/fstab
.rw-------
.disky
.config
.web
přesměrujte výpis adresáře /etc/apache2
./etc/bind
si zobrazíte, pokud budete členem skupiny root? Odpověď (číslo) zapište do nového souboru bind
.Vytvořte adresář ~/prava3
, v něm soubor pr3
. Do něj pište pouze číslované odpovědi:
rw-r--rw-
?rwxr-x---
souboru ~/skript.sh
.750
? Vypište způsobem rwx
. Výsledkem bude 10 znaků:...soubor.txt
z obrázku níže:www-data
do souboru s právy -rw-r--rw-
(Ano | Ne)-rwxr-x---
-rwxr-xrw-
drwxr-xr-x
-rwxr-xr--
650
? Vypište způsobem rwx...
drwxr-x---
adresáři ~/abc