Android

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

GNU/Linux - uživatelé, práva, kvoty

GNU/Linux - uživatelé, práva, kvoty

Obsah:

Anonim

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 setuid nebo setgid nastaveny na spustitelném souboru, soubor se spustí s oprávněními vlastníka souboru nebo skupiny.

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 x . Tento příznak je v souborech zbytečný.

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í ls .)

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.

setuid nemá žádný vliv na adresáře.

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 x . Když je lepkavý bit nastaven na adresář, smazat nebo přejmenovat soubory v adresáři mohou pouze vlastník souboru, vlastník adresáře nebo administrativní uživatel.

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 s ugo .

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í) = 4 w (zápis) = 2 x (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

chmod --reference=file1 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:

chmod -R 755 /var/www

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.

terminál chmod