V Linuxu řídí oprávnění k souborům, atributy a vlastnictví úroveň přístupu, kterou mají systémové procesy a uživatelé k souborům. To zajišťuje, že ke konkrétním souborům a adresářům mají přístup pouze oprávnění uživatelé a procesy.
Oprávnění souborů Linux #
Základní model oprávnění systému Linux funguje tak, že každý systémový soubor přiřadí vlastníkovi a skupině a přiřadí přístupová práva třem různým třídám uživatelů:
- Vlastník souboru.
- Členové skupiny.
- Ostatní (všichni ostatní).
Vlastnictví souboru lze změnit pomocí chown
a chgrp
příkazy.
Pro každou třídu uživatelů platí tři typy oprávnění k souborům:
- Oprávnění ke čtení.
- Povolení k zápisu.
- Povolení ke spuštění.
Tento koncept vám umožňuje řídit, kteří uživatelé mohou číst soubor, zapisovat do souboru nebo soubor spustit.
Chcete-li zobrazit oprávnění k souboru, použijte ls
příkaz:
ls -l file_name
-rw-r--r-- 12 linuxize users 12.0K Apr 28 10:10 file_name
|[-][-][-]- [------] [---]
| | | | | | |
| | | | | | +-----------> 7. Group
| | | | | +-------------------> 6. Owner
| | | | +--------------------------> 5. Alternate Access Method
| | | +----------------------------> 4. Others Permissions
| | +-------------------------------> 3. Group Permissions
| +----------------------------------> 2. Owner Permissions
+------------------------------------> 1. File Type
První znak označuje typ souboru. Může to být běžný soubor (-
), adresář (d
), symbolický odkaz (l
), nebo jiné speciální typy souborů. Následujících devět znaků představuje oprávnění k souboru, tři trojice po třech znacích. První trojice zobrazuje oprávnění vlastníka, druhá oprávnění skupiny a poslední trojice zobrazuje oprávnění všech ostatních.
Ve výše uvedeném příkladu (rw-r--r--
) znamená, že vlastník souboru má oprávnění ke čtení a zápisu (rw-
), skupina a další mají oprávnění pouze ke čtení (r--
).
Oprávnění k souboru mají různý význam v závislosti na typu souboru.
Každý ze tří trojic oprávnění může být sestaven z následujících znaků a má různé účinky v závislosti na tom, zda jsou nastaveny na soubor nebo adresář:
Vliv oprávnění na soubory
Povolení | Postava | Význam v souboru |
---|---|---|
Přečíst | - | Soubor není čitelný. Nemůžete zobrazit obsah souboru. |
r | Soubor je čitelný. | |
Napište | - | Soubor nelze změnit ani upravit. |
w | Soubor lze změnit nebo upravit. | |
Provést | - | Soubor nelze spustit. |
x | Soubor lze spustit. | |
s | Pokud je nalezen v user triplet, nastaví setuid bit. Pokud se nachází ve group triplet, nastaví setgid bit. Znamená to také, že x je nastaven příznak.Když je setuid nebo setgid příznaky jsou nastaveny u spustitelného souboru, soubor se spustí s právy vlastníka souboru a/nebo skupiny. | |
S | Stejné jako s , ale x příznak není nastaven. Tento příznak se u souborů používá zřídka. | |
t | Pokud se nachází v others triplet, nastaví sticky bit.To také znamená, že x vlajka je nastavena. Tento příznak je u souborů k ničemu. | |
T | Stejné jako t ale x příznak není nastaven. Tento příznak je u souborů k ničemu. |
Vliv oprávnění na adresáře (složky)
Adresáře jsou speciální typy souborů, které mohou obsahovat další soubory a adresáře.
Povolení | Postava | Význam v adresáři |
---|---|---|
Přečíst | - | Obsah adresáře nelze zobrazit. |
r | Je možné zobrazit obsah adresáře. (např. Soubory v adresáři můžete vypsat pomocí ls .) | |
Napište | - | Obsah adresáře nelze změnit. |
w | Obsah adresáře lze změnit. (např. můžete vytvářet nové soubory, mazat soubory atd.) | |
Provést | - | Adresář nelze změnit na. |
x | V adresáři lze procházet pomocí cd . | |
s | Pokud je nalezen v user triplet, nastaví setuid bit. Pokud se nachází ve group triplet nastavuje setgid bit. Znamená to také, že x vlajka je nastavena. Když setgid příznak nastaven na adresář, nové soubory vytvořené v něm zdědí ID skupiny adresářů (GID) namísto ID primární skupiny uživatele, který soubor vytvořil.setuid nemá žádný vliv na adresáře. | |
S | Stejné jako s , ale x příznak není nastaven. Tento příznak je v adresářích k ničemu. | |
t | Pokud se nachází v others triplet, nastaví sticky bit.To také znamená, že x vlajka je nastavena. Když je v adresáři nastaven fixní bit, může soubory v adresáři odstranit nebo přejmenovat pouze vlastník souboru, vlastník adresáře nebo administrátor. | |
T | Stejné jako t , ale x příznak není nastaven. Tento příznak je v adresářích k ničemu. |
Změna oprávnění k souboru #
Oprávnění k souboru lze změnit pomocí chmod
příkaz. Oprávnění souboru může změnit pouze uživatel root, vlastník souboru nebo uživatel s právy sudo. Při používání chmod
buďte zvlášť opatrní , zejména při rekurzivní změně oprávnění. Příkaz může přijmout jeden nebo více souborů a/nebo adresářů oddělených mezerou jako argumenty.
Oprávnění lze zadat pomocí symbolického režimu, číselného režimu nebo referenčního souboru.
Symbolická (textová) metoda #
Syntaxe chmod
příkaz při použití symbolického režimu má následující formát:
chmod [OPTIONS] [ugoa…][-+=]perms…[,…] FILE...
První sada příznaků ([ugoa…]
), uživatelské příznaky, definuje třídy uživatelů, pro které se mění oprávnění k souboru.
u
- Vlastník souboru.g
– Uživatelé, kteří jsou členy skupiny.o
– Všichni ostatní uživatelé.a
- Všichni uživatelé, identičtí jakougo
.
Když je příznak uživatele vynechán, výchozí je a
.
Druhá sada příznaků ([-+=]
), příznaky operace, definují, zda mají být oprávnění odebrána, přidána nebo nastavena:
-
– Odebere zadaná oprávnění.+
- Přidá specifikovaná oprávnění.=
- Změní aktuální oprávnění na zadaná oprávnění. Pokud za=
nejsou udělena žádná oprávnění symbol, všechna oprávnění ze zadané třídy uživatele jsou odebrána.
Oprávnění (perms...
) jsou explicitně nastaveny pomocí nula nebo jednoho či více z následujících písmen:r
, w
, x
, X
, s
a t
. Použijte jedno písmeno z množiny u
, g
a o
při kopírování oprávnění z jedné třídy uživatelů do jiné.
Při nastavování oprávnění pro více než jednu třídu uživatelů ([,…]
), použijte k oddělení symbolických režimů čárky (bez mezer).
Zde je několik příkladů použití chmod
příkaz v symbolickém režimu:
-
Dejte členům skupiny oprávnění ke spuštění souboru, ale ne ke čtení a zápisu do něj:
chmod g=x filename
-
Odeberte všem uživatelům oprávnění k zápisu:
chmod a-w filename
-
Rekurzivně odeberte oprávnění ke spuštění pro ostatní uživatele:
chmod -R o-x dirname
-
Odeberte oprávnění ke čtení, zápisu a spouštění všem uživatelům kromě vlastníka souboru:
chmod og-rwx filename
Totéž lze také provést pomocí následujícího formuláře:
chmod og= filename
-
Udělte oprávnění ke čtení, zápisu a spouštění vlastníkovi souboru, oprávnění ke čtení skupině souboru a žádná oprávnění všem ostatním uživatelům:
chmod u=rwx,g=r,o= filename
Numerická metoda #
Syntaxe chmod
příkaz při použití symbolického režimu má následující formát:
chmod [OPTIONS] NUMBER FILE...
Při použití numerického režimu můžete nastavit oprávnění pro všechny tři třídy uživatelů (vlastník, skupina a všechny ostatní) současně.
Číslo oprávnění může být 3 nebo 4místné číslo. Když je použito 3místné číslo, první číslice představuje oprávnění vlastníka souboru, druhá představuje skupinu souboru a poslední číslice všech ostatních uživatelů.
Každé oprávnění k zápisu, čtení a spouštění má následující číselnou hodnotu:
r
(přečteno) =4w
(zapsat) =2x
(provést) =1- žádná oprávnění =0
Číslo oprávnění konkrétní třídy uživatelů je reprezentováno součtem hodnot oprávnění pro danou skupinu.
Chcete-li zjistit oprávnění souboru v numerickém režimu, jednoduše spočítejte součty pro třídy všech uživatelů. Chcete-li například udělit oprávnění ke čtení, zápisu a spouštění vlastníkovi souboru, oprávnění ke čtení a spouštění skupině souboru a oprávnění pouze ke čtení všem ostatním uživatelům, postupujte takto:
- Vlastník:rwx=4+2+1=7
- Skupina:r-x=4+0+1=5
- Ostatní:r-x=4+0+0=4
Pomocí výše uvedené metody dojdeme k číslu 754
, což představuje požadovaná oprávnění.
Chcete-li nastavit setuid
, setgid
a sticky bit
příznaky, použijte čtyřmístné číslo.
Při použití 4místného čísla má první číslice následující význam:
- setuid=4
- setgid=2
- sticky=1
- žádné změny =0
Další tři číslice mají stejný význam jako při použití třímístného čísla.
Pokud je první číslice 0, lze ji vynechat a režim lze reprezentovat 3 číslicemi. Číselný režim 0755
je stejný jako 755
.
Pro výpočet numerického režimu můžete použít i jinou metodu (binární metodu), ale ta je trochu složitější. Pro většinu uživatelů stačí vědět, jak vypočítat číselný režim pomocí 4, 2 a 1.
Oprávnění souboru můžete zkontrolovat v číselném zápisu pomocí stat
příkaz:
stat -c "%a" file_name
Zde je několik příkladů použití chmod
příkaz v numerickém režimu:
-
Udělte vlastníkovi souboru oprávnění ke čtení a zápisu a oprávnění ke čtení pouze členům skupiny a všem ostatním uživatelům:
chmod 644 dirname
-
Udělte vlastníkovi souboru oprávnění ke čtení, zápisu a spouštění, ke čtení a spouštění členům skupiny a žádná oprávnění ke všem ostatním uživatelům:
chmod 750 dirname
-
Přidělte danému adresáři oprávnění ke čtení, zápisu a spouštění a lepivý bit:
chmod 1777 dirname
-
Rekurzivně nastavená oprávnění ke čtení, zápisu a spouštění pro vlastníka souboru a žádná oprávnění pro všechny ostatní uživatele v daném adresáři:
chmod -R 700 dirname
Závěr č.
V Linuxu je přístup k souborům omezen pomocí oprávnění k souboru, atributů a vlastnictví. Chcete-li změnit oprávnění souboru, použijte chmod
příkaz.