GNU/Linux >> Znalost Linux >  >> Linux

Příkaz Chmod v Linuxu (oprávnění k souboru)

V Linuxu je přístup k souborům spravován prostřednictvím oprávnění k souboru, atributů a vlastnictví. To zajišťuje, že k souborům a adresářům mají přístup pouze oprávnění uživatelé a procesy.

Tento tutoriál popisuje, jak používat chmod příkaz ke změně přístupových oprávnění k souborům a adresářům.

Oprávnění souborů Linux #

Než půjdeme dále, vysvětlíme si základní model oprávnění pro Linux.

V Linuxu je každý soubor spojen s vlastníkem a skupinou a jsou mu přiřazena přístupová práva pro tři různé třídy uživatelů:

  • Vlastník souboru.
  • Členové skupiny.
  • Ostatní (všichni ostatní).

Vlastnictví souboru lze změnit pomocí chown a chgrp příkazy.

Existují tři typy oprávnění k souborům, které platí pro každou třídu:

  • Oprávnění ke čtení.
  • Povolení k zápisu.
  • Povolení ke spuštění.

Tento koncept vám umožňuje určit, kteří uživatelé mohou číst soubor, zapisovat do souboru nebo soubor spouštět.

Oprávnění k souboru lze zobrazit pomocí ls příkaz:

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 ukazuje typ souboru. Může to být 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í 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. 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í oprávnění pouze ke čtení (r-- ).

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 nastavuje 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)

V Linuxu jsou adresáře speciální typy souborů, které obsahují 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 je nastaven na adresář, nové soubory v něm vytvořené 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.

Pomocí chmod #

chmod příkaz má následující obecný tvar:

chmod [OPTIONS] MODE FILE...

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 si podrobněji vysvětlíme dále v tomto článku. Příkaz může přijmout jeden nebo více souborů a/nebo adresářů oddělených mezerou jako argumenty.

Pouze root, vlastník souboru nebo uživatel s právy sudo může změnit oprávnění souboru. Při používání chmod buďte zvlášť opatrní , zejména při rekurzivní změně oprávnění.

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, kterým třídám uživatelů se změ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í jako ugo .

Pokud je příznak uživatele vynechán, výchozí je a a oprávnění nastavená umaskare nejsou ovlivněna.

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 zadána žádná oprávnění symbol, všechna oprávnění ze zadané třídy uživatele jsou odebrána.

Oprávnění (perms... ) lze explicitně nastavit pomocí nuly 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).

Níže je několik příkladů použití chmod příkaz v symbolickém režimu:

  • Dejte členům skupiny oprávnění číst soubor, ale ne jej zapisovat a spouštět:

    chmod g=r filename
  • Odeberte oprávnění ke spuštění pro všechny uživatele:

    chmod a-x filename
  • Rekurzivně odeberte oprávnění k zápisu ostatním uživatelům:

    chmod -R o-w 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
  • Přidejte oprávnění vlastníka souboru k oprávněním, která mají členové skupiny souboru:

    chmod g+u filename
  • Přidejte lepivý bit do daného adresáře:

    chmod o+t dirname

Numerická metoda #

Syntaxe chmod příkaz při použití numerické metody 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ě.

NUMBER 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) =4
  • w (zapsat) =2
  • x (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 všechny třídy 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žívají č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" filename
644

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

Použití referenčního souboru #

--reference=ref_file možnost umožňuje nastavit oprávnění souboru tak, aby byla stejná jako oprávnění 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í souboru file1 do file2

chmod --reference=file1 file2

Rekurzivně změnit oprávnění souboru #

Chcete-li rekurzivně pracovat se všemi soubory a adresáři v daném adresáři, použijte -R (--recursive ) možnost:

chmod -R MODE DIRECTORY

Chcete-li například změnit oprávnění všech souborů a podadresářů pod /var/www adresář na 755 byste použili:

chmod -R 755 /var/www

Symbolické odkazy mají vždy 777 oprávnění.

Ve výchozím nastavení při změně oprávnění symbolického odkazu chmod 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 ‚symlinku‘:Povolení odepřeno“.

K chybě dochází, protože ve výchozím nastavení jsou ve většině distribucí Linuxu symbolické odkazy chráněny a s cílovými soubory nelze pracovat. Tato možnost je specifikována v /proc/sys/fs/protected_symlinks . 1 znamená povoleno a 0 zakázáno. Doporučuje se nevypínat ochranu symbolických odkazů.

Hromadná změna oprávnění k souboru #

Někdy nastanou situace, kdy budete muset hromadně změnit oprávnění souborů a adresářů.

Nejběžnějším scénářem je rekurzivně změnit oprávnění souboru webu 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 {} \;

find příkaz vyhledá soubory a adresáře pod /var/www/my_website a předat každý nalezený soubor a adresář do chmod příkaz pro nastavení oprávnění.

Závěr č.

chmod příkaz změ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.

Pokud máte nějaké dotazy nebo zpětnou vazbu, neváhejte zanechat komentář.


Linux
  1. Oprávnění pro Linux:Úvod do chmod

  2. Linuxový příkaz grep

  3. Příkaz chmod pro Linux

  1. 9 Příklady příkazů Quick chmod v Linuxu

  2. Základy oprávnění k souborům Linux

  3. Příkaz wc pro Linux

  1. Vysvětlení oprávnění souborů v systému Linux

  2. Linux Tail Command

  3. Linux Touch Command