GNU/Linux - uživatelé, práva, kvoty
Obsah:
- Oprávnění k souborům v systému Linux
- Pomocí
chmod
- Symbolická (textová) metoda
- Numerická metoda
- Použití referenčního souboru
- Rekurzivně měnit oprávnění souboru
- Provoz na symbolických odkazech
- Hromadná změna povolení souborů
- Závěr
V systému Linux je přístup k souborům spravován prostřednictvím oprávnění k souborům, atributů a vlastnictví. Tím je zajištěno, že pouze oprávnění uživatelé a procesy mají přístup k souborům a adresářům.
Tento tutoriál popisuje, jak pomocí
chmod
změnit přístupová oprávnění k souborům a adresářům.
Oprávnění k souborům v systému Linux
Než se vydáme dále, vysvětlíme základní model Linuxových oprávnění.
V systému Linux je každý soubor spojen s vlastníkem a skupinou a je jim přidělena přístupová práva pro oprávnění pro tři různé třídy uživatelů:
- Vlastník souboru.Členové skupiny.Ostatní (všichni ostatní).
Vlastnictví souboru lze změnit pomocí příkazů
chown
a
chgrp
.
Pro každou třídu platí tři typy oprávnění k souborům:
- Oprávnění ke čtení. Oprávnění ke psaní. Spuštění oprávnění.
Tento koncept umožňuje určit, kteří uživatelé mohou číst soubor, zapisovat do něj nebo provádět soubor.
Oprávnění k souborům lze zobrazit příkazem
ls
:
ls -l filename.txt
-rw-r--r-- 12 linuxize users 12.0K Apr 8 20:51 filename.txt |- | | | | | | | | | | | | | +-----------> 7. Group | | | | | +-------------------> 6. Owner | | | | +--------------------------> 5. Alternate Access Method | | | +----------------------------> 4. Others Permissions | | +-------------------------------> 3. Group Permissions | +----------------------------------> 2. Owner Permissions +------------------------------------> 1. File Type
První znak zobrazuje typ souboru. Může se jednat o běžný soubor (
-
), adresář (
d
), symbolický odkaz (
l
) nebo jakýkoli jiný speciální typ souboru.
Dalších devět znaků představuje oprávnění k souboru, každá tři trojice ze tří znaků. První triplet zobrazuje oprávnění vlastníka, druhá oprávnění jedné skupiny a poslední triplet zobrazuje oprávnění ostatních. Oprávnění mohou mít různý význam v závislosti na typu souboru.
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í pouze oprávnění ke čtení (
r--
).
Každá ze tří trojice oprávnění může být sestrojena z následujících znaků a může mít různé efekty v závislosti na tom, zda jsou nastaveny na soubor nebo do adresáře:
Vliv oprávnění na soubory
Povolení | Charakter | Význam v souboru |
---|---|---|
Číst |
-
|
Soubor nelze číst. Nelze zobrazit obsah souboru. |
r
|
Soubor je čitelný. | |
Napsat |
-
|
Soubor nelze změnit nebo upravit. |
w
|
Soubor lze změnit nebo upravit. | |
Vykonat |
-
|
Soubor nelze spustit. |
x
|
Soubor lze spustit. | |
s
|
Pokud je nalezen v
user
tripletu, nastaví bit
setuid
. Pokud je nalezen ve
group
triplet, nastaví bit
setgid
. To také znamená, že je nastaven příznak
x
.
Pokud jsou příznaky
|
|
S
|
Stejné jako
s
ale příznak
x
není nastaven. Tento příznak se u souborů používá jen zřídka. |
|
t
|
Pokud je nalezen v
others
tripletech, nastaví
sticky
kousek.
To také znamená, že je nastaven příznak
|
|
T
|
Stejné jako
t
ale příznak
x
není nastaven. Tento příznak je v souborech zbytečný. |
Vliv oprávnění na adresáře (složky)
V Linuxu jsou adresáře speciální typy souborů, které obsahují jiné soubory a adresáře.
Povolení | Charakter | Význam na adresáři |
---|---|---|
Číst |
-
|
Obsah adresáře nelze zobrazit. |
r
|
Lze zobrazit obsah adresáře.
(např. Soubory v adresáři můžete zobrazit pomocí
|
|
Napsat |
-
|
Obsah adresáře nelze změnit. |
w
|
Obsah adresáře lze změnit.
(např. nemůžete vytvářet nové soubory, mazat soubory.. atd.) |
|
Vykonat |
-
|
Adresář nelze změnit na. |
x
|
Adresář lze procházet pomocí
cd
. |
|
s
|
Pokud je nalezen v
user
tripletu, nastaví bit
setuid
. Pokud je nalezen ve
group
triplet, nastaví bit
setgid
. To také znamená, že je nastaven příznak
x
. Když je příznak
setgid
nastaven v adresáři, 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.
|
|
S
|
Stejné jako
s
ale příznak
x
není nastaven. Tato vlajka je v adresářích zbytečná. |
|
t
|
Pokud je nalezen v
others
tripletech, nastaví
sticky
kousek.
To také znamená, že je nastaven příznak
|
|
T
|
Stejné jako
t
ale příznak
x
není nastaven. Tato vlajka je v adresářích zbytečná. |
Pomocí
chmod
Příkaz
chmod
má následující obecnou podobu:
chmod MODE FILE…
Příkaz
chmod
umožňuje změnit oprávnění k souboru pomocí symbolického nebo číselného režimu nebo referenčního souboru. Režimy vysvětlíme podrobněji později. Příkaz může jako argumenty přijmout jeden nebo více souborů a / nebo adresářů oddělených mezerou.
Oprávnění k souboru může měnit pouze root, vlastník souboru nebo uživatel s právy sudo. Buďte zvlášť opatrní při používání
chmod
, zejména při rekurzivní změně oprávnění.
Symbolická (textová) metoda
Syntaxe
chmod
při použití symbolického režimu má následující formát:
chmod perms… FILE…
První sada příznaků (
), uživatelské příznaky, definuje, kteří uživatelé třídy oprávnění ke změně souboru.
-
u
- Vlastník souboru.g
- Uživatelé, kteří jsou členy skupiny.o
- Všichni ostatní uživatelé.a
- Všichni uživatelé,ugo
sugo
.
Pokud je příznak uživatelů vynechán, výchozí je
a
a oprávnění, která jsou nastavena pomocí umask, nejsou ovlivněna.
Druhá sada příznaků (
), příznaky operace, určuje, zda mají být oprávnění odebrána, přidána nebo nastavena:
-
-
Odstraní zadaná oprávnění.+
Přidá zadaná oprávnění.=
Změní aktuální oprávnění na zadaná oprávnění. Pokud po symbolu=
nejsou zadána žádná oprávnění, všechna oprávnění ze zadané třídy uživatelů budou odstraněna.
Oprávnění (
perms…
) lze explicitně nastavit pomocí nula nebo jednoho nebo více z následujících písmen:
r
,
w
,
x
,
X
,
s
,
t
. Při kopírování oprávnění z jedné třídy na druhou použijte jedno písmeno ze sady
u
,
g
o
.
Při nastavování oprávnění pro více než jednu třídu uživatelů (
), oddělte symbolické režimy čárkami (bez mezer).
Níže uvádíme několik příkladů použití
chmod
v symbolickém režimu:
-
Dejte členům skupiny oprávnění ke čtení souboru, ale ne k zápisu a spuštění:
chmod g=r filename
Odebrat oprávnění ke spuštění pro všechny uživatele:
chmod ax filename
Odpůrně odebírat oprávnění k zápisu pro ostatní uživatele:
chmod -R ow dirname
Odeberte oprávnění pro čtení, zápis a spuštění pro všechny uživatele kromě vlastníka souboru:
chmod og-rwx filename
Totéž lze dosáhnout také pomocí následujícího formuláře:
chmod og= filename
Udělte vlastníkovi souboru oprávnění ke čtení, zápisu a spuštění, oprávnění ke čtení souboru skupiny a žádná oprávnění všem ostatním uživatelům:
chmod u=rwx, g=r, o= filename
Přidejte oprávnění vlastníka souboru k oprávnění, která mají členové skupiny souboru:
chmod g+u filename
Do jednoho adresáře přidejte lepkavý kousek:
chmod o+t dirname
Numerická metoda
Syntaxe
chmod
při použití numerické metody má následující formát:
chmod 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íka, skupinu a všechny ostatní) současně.
NUMBER
může být 3 nebo 4 číslice.
Je-li použito 3 číslice, první číslice představuje oprávnění vlastníka souboru, druhé ze skupiny souboru a poslední ze všech ostatních uživatelů.
Každé oprávnění pro zápis, čtení a spuštění má následující hodnotu čísla:
-
r
(čtení) = 4w
(zápis) = 2x
(provedení) = 1no oprávnění = 0
Číslo oprávnění konkrétní třídy uživatelů je reprezentováno součtem hodnot oprávnění pro tuto skupinu.
Chcete-li zjistit oprávnění souboru v numerickém režimu, jednoduše spočítejte součty pro všechny třídy uživatelů. Chcete-li například dát vlastníkovi souboru oprávnění ke čtení, zápisu a spuštění, oprávnění ke čtení a spuštění skupiny souborů a oprávnění ke čtení pouze všem ostatním uživatelům, udělejte následující:
- Vlastník: rwx = 4 + 2 + 1 = 7Skupina: rx = 4 + 0 + 1 = 5Ostatní: rx = 4 + 0 + 0 = 4
Pomocí výše uvedené metody se dostaneme k číslu
754
, což představuje požadovaná oprávnění.
K nastavení příznaků
setuid
,
setgid
a
sticky bit
použijte čtyři číslice.
Je-li použito čtyřmístné číslo, má první číslice následující význam:
- setuid = 4setgid = 2sticky = 1 no changes = 0
Další tři číslice mají stejný význam jako při použití 3 číslic.
Pokud je první číslice 0, lze ji vynechat a režim lze znázornit 3 číslicemi. Číselný režim
0755
je stejný jako režim
755
.
Pro výpočet numerického režimu můžete použít i jinou metodu (binární metoda), ale je to trochu složitější. Pro většinu uživatelů stačí vědět, jak vypočítat numerický režim pomocí 4, 2 a 1.
Oprávnění souboru můžete zkontrolovat v numerickém zápisu pomocí příkazu
stat
:
stat -c "%a" filename
644
Zde je několik příkladů použití
chmod
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 spuštění, ke čtení a provádění oprávnění členům skupiny a všem ostatním uživatelům žádná oprávnění:
chmod 750 dirname
Dej adresáři oprávnění ke čtení, zápisu a spouštění a lepkavému kousku:
chmod 1777 dirname
Rekurzivně nastavit oprávnění pro čtení, zápis a spuštění vlastníka souboru a žádná oprávnění pro všechny ostatní uživatele v daném adresáři:
chmod -R 700 dirname
Použití referenčního souboru
Volba
--reference=ref_file
vám umožňuje nastavit oprávnění souboru stejná jako u zadaného referenčního souboru (
ref_file
).
chmod --reference=REF_FILE FILE
Například následující příkaz přiřadí oprávnění
file1
k
file2
Rekurzivně měnit oprávnění souboru
Chcete-li rekurzivně pracovat se všemi soubory a adresáři v daném adresáři, použijte volbu
-R
(
--recursive
):
chmod -R MODE DIRECTORY
Chcete-li například změnit oprávnění všech souborů a podadresářů v adresáři
/var/www
na
755
měli byste použít:
Provoz na symbolických odkazech
Symbolické odkazy mají vždy
777
oprávnění.
Ve výchozím nastavení
chmod
při změně oprávnění symlink změní oprávnění k souboru, na který odkaz odkazuje.
chmod 755 symlink
Je pravděpodobné, že namísto změny cílového vlastnictví se zobrazí chyba „nelze získat přístup k 'symlink': Oprávnění odepřeno“.
K chybě dochází, protože ve výchozím nastavení je většina linuxových distribucí chráněna symbolickými odkazy a nemůžete pracovat s cílovými soubory. Tato volba je uvedena v
/proc/sys/fs/protected_symlinks
.
1
znamená povoleno a
0
deaktivováno. Doporučuje se nezakazovat ochranu odkazů.
Hromadná změna povolení souborů
Někdy jsou situace, kdy byste museli hromadně měnit oprávnění k souborům a adresářům.
Nejběžnějším scénářem je rekurzivní změna oprávnění souboru webového serveru na
644
a oprávnění adresáře na
755
.
Pomocí numerické metody:
find /var/www/my_website -type d -exec chmod 755 {} ;
find /var/www/my_website -type f -exec chmod 644 {} ;
Pomocí symbolické metody:
find /var/www/my_website -type d -exec chmod u=rwx, go=rx {} ;
find /var/www/my_website -type f -exec chmod u=rw, go=r {} ;
Příkaz
find
vyhledá soubory a adresáře v adresáři
/var/www/my_website
a předá každý nalezený soubor a adresář
chmod
aby nastavil oprávnění.
Závěr
Příkaz
chmod
mění oprávnění souboru. Oprávnění lze nastavit pomocí symbolického nebo číselného režimu.
Chcete-li se dozvědět více o
chmod
navštivte manuálovou stránku chmod.
Jak rekurzivně změnit oprávnění souboru v Linuxu
Linux je víceuživatelský systém a přístup k souborům je řízen prostřednictvím oprávnění k souborům, atributů a vlastnictví. V tomto článku si vysvětlíme, jak rekurzivně měnit oprávnění souborů a adresářů.
Příkaz Cp v Linuxu (kopírování souborů)
cp je obslužný program příkazového řádku pro kopírování souborů a adresářů v systémech Unix a Linux.
Příkaz Fsck v Linuxu (oprava systému souborů)
fsck (kontrola systému souborů) je obslužný program příkazového řádku, který umožňuje provádět kontroly konzistence a interaktivní opravy na jednom nebo více systémech souborů Linux.