Jak používat příkaz chmod v systému Linux

Pomocí příkazu systému Linux můžete ovládat, kdo má přístup k souborům, prohledávat adresáře a spouštět skripty chmod. Tento příkaz upravuje oprávnění souborů Linux, která vypadají na první pohled komplikovaně, ale ve skutečnosti jsou docela jednoduchá, jakmile víte, jak fungují.

chmod Upravuje oprávnění souborů

V Linuxu, kdo může dělat co do souboru nebo adresáře, je řízen sadami oprávnění. Existují tři sady oprávnění. Jedna sada pro vlastníka souboru, druhá sada pro členy skupiny souboru a konečná sada pro všechny ostatní.

Oprávnění řídí akce, které lze provést se souborem nebo adresářem. Umožní nebo zabrání tomu, aby byl soubor přečten, upraven nebo spuštěn, pokud se jedná o skript nebo program. U adresáře určují oprávnění, kdo může cddo adresáře a kdo může vytvářet nebo upravovat soubory v adresáři.

Pomocí  chmod příkazu nastavíte každé z těchto oprávnění. Chcete-li zjistit, jaká oprávnění byla nastavena pro soubor nebo adresář, můžeme použít ls.

Zobrazení a pochopení oprávnění k souborům

Můžeme použít možnost -l(dlouhý formát), abychom měli lsseznam oprávnění souborů pro soubory a adresáře.

je -l

Na každém řádku první znak identifikuje typ položky, která je uvedena. Pokud se jedná o pomlčku ( -), jedná se o soubor. Pokud je to písmeno d , je to adresář.

Dalších devět znaků představuje nastavení pro tři sady oprávnění.

  • První tři znaky ukazují oprávnění pro uživatele, který vlastní soubor ( uživatelská oprávnění ).
  • Prostřední tři znaky ukazují oprávnění pro členy skupiny souboru ( oprávnění skupiny ).
  • Poslední tři znaky zobrazují oprávnění pro kohokoli, kdo není v prvních dvou kategoriích ( další oprávnění ).

V každé sadě oprávnění jsou tři znaky. Znaky jsou indikátory přítomnosti nebo nepřítomnosti jednoho z oprávnění. Jsou to buď pomlčka ( -) nebo písmeno. Pokud je znak pomlčka, znamená to, že oprávnění není uděleno. V případě, že charakter je r, w, nebo x, že povolení bylo uděleno.

Písmena představují:

  • r : Číst oprávnění. Soubor lze otevřít a zobrazit jeho obsah.
  • w : Oprávnění k zápisu. Soubor lze upravovat, upravovat a mazat.
  • x : Provádět oprávnění. Pokud je souborem skript nebo program, lze jej spustit (spustit).

Například:

  •  --- znamená, že vůbec nebyla udělena žádná oprávnění.
  •  rwxznamená, že byla udělena plná oprávnění. Indikátory čtení, zápisu a spuštění jsou přítomny.

Na našem snímku obrazovky začíná první řádek s d. Tento řádek odkazuje na adresář s názvem „archiv“. Vlastníkem adresáře je „dave“ a název skupiny, do které adresář patří, se také nazývá „dave“.

Další tři znaky jsou uživatelská oprávnění pro tento adresář. Ukazují, že vlastník má úplná oprávnění. Tyto r, wa xznaky jsou všechny přítomné. To znamená, že uživatel dave má oprávnění pro čtení, zápis a provádění pro tento adresář.

Druhá sada tří znaků jsou oprávnění skupiny, to jsou r-x. Ukazují, že členové skupiny dave mají oprávnění pro čtení a provádění tohoto adresáře. To znamená, že mohou vypsat soubory a jejich obsah v adresáři a mohou cd(spouštět) do tohoto adresáře. Nemají oprávnění k zápisu, takže nemohou vytvářet, upravovat ani mazat soubory.

Konečná sada tří postav je také  r-x. Tato oprávnění se vztahují na lidi, kteří se neřídí prvními dvěma sadami oprávnění. Tito lidé (nazývaní „ostatní“) si přečetli a provedli oprávnění v tomto adresáři.

Abychom to shrnuli, členové skupiny a další si přečetli a provedli oprávnění. Vlastník, uživatel s názvem dave, má také oprávnění k zápisu.

Pro všechny ostatní soubory (kromě souboru skriptu mh.sh) mají dave a členové skupiny dave vlastnosti pro čtení a zápis v souborech a ostatní mají pouze oprávnění ke čtení.

Ve zvláštním případě souboru skriptu mh.sh vlastník dave a členové skupiny mají oprávnění ke čtení, zápisu a provádění a ostatní mají pouze oprávnění ke čtení a spouštění.

Principy syntaxe oprávnění

Chcete-li použít chmod k nastavení oprávnění, musíme to říct:

  • Kdo: Pro  koho nastavujeme oprávnění.
  • Co : Jakou změnu děláme? Přidáváme nebo odebíráme oprávnění?
  • Která : Která z oprávnění nastavujeme?

K vyjádření těchto hodnot používáme indikátory a vytváříme krátká „prohlášení o oprávnění“, například u+x„kde“ znamená „uživatel“ (kdo), „+“ znamená přidat (co) a „x“ znamená oprávnění ke spuštění (které) .

Hodnoty „kdo“ můžeme použít, jsou:

  • u : Uživatel, tj. vlastník souboru.
  • g : Skupina, což znamená členy skupiny, do které soubor patří.
  • o : Ostatní, což znamená lidi, kteří se neřídí ua goprávněními.
  • a : All, což znamená všechny výše uvedené.

Pokud nic z toho není použito, chmodchová se, jako by abylo použito „ “.

Hodnoty „jaké“ můžeme použít, jsou:

  • - : Znaménko minus. Odebere oprávnění.
  • + : Znaménko plus. Uděluje povolení. Oprávnění se přidá k existujícím oprávněním. Pokud chcete mít toto oprávnění a nastaveno pouze toto oprávnění, použijte =možnost popsanou níže.
  • = : Znaménko rovná se. Nastavte oprávnění a odeberte ostatní.

„Které“ hodnoty můžeme použít, jsou:

  • r : Oprávnění ke čtení.
  • w : Oprávnění k zápisu.
  • x : Oprávnění ke spuštění.

Nastavení a úprava oprávnění

Řekněme, že máme soubor, ke kterému má každý úplná oprávnění.

ls -l nový_ soubor.txt

Chceme, aby uživatel dave měl oprávnění ke čtení a zápisu a skupina a další uživatelé měli pouze oprávnění ke čtení. Můžeme to udělat pomocí následujícího příkazu:

chmod u = rw, og = r new_file.txt

Použití operátoru „=“ znamená, že odstraníme všechna stávající oprávnění a poté nastavíme zadaná.

zkontrolujeme nové oprávnění k tomuto souboru:

ls -l nový_soubor.txt

Stávající oprávnění byla odebrána a nová oprávnění byla nastavena, jak jsme očekávali.

Co tak přidat oprávnění bez odebrání stávajícího nastavení oprávnění? Můžeme to udělat také snadno.

Řekněme, že máme soubor skriptu, který jsme dokončili. Musíme zajistit, aby byl spustitelný pro všechny uživatele. Jeho aktuální oprávnění vypadají takto:

ls -l nový_skript.sh

Můžeme přidat oprávnění ke spuštění pro každého pomocí následujícího příkazu:

chmod a + x new_script.sh

Pokud se podíváme na oprávnění, uvidíme, že oprávnění ke spuštění je nyní uděleno všem a stávající oprávnění jsou stále na místě.

ls -l nový_skript.sh

Mohli bychom dosáhnout stejné věci bez „a“ ve výrazu „a + x“. Následující příkaz by fungoval stejně dobře.

chmod + x new_script.sh

Nastavení oprávnění pro více souborů

Můžeme použít oprávnění k více souborům najednou.

Jedná se o soubory v aktuálním adresáři:

je -l

Řekněme, že chceme odebrat oprávnění k zápisu pro „ostatní“ uživatele ze souborů, které mají příponu „.page“. Můžeme to udělat pomocí následujícího příkazu:

chmod nebo * .strana

Podívejme se, jaký účinek to mělo:

je -l

Jak vidíme, oprávnění ke čtení bylo odebráno ze souborů „.page“ pro kategorii „other“ uživatelů. Žádné jiné soubory nebyly ovlivněny.

Pokud bychom chtěli zahrnout soubory do podadresářů, mohli jsme použít možnost -R(rekurzivní).

chmod -R nebo * .strana

Numerická zkratka

Dalším způsobem použití chmodje poskytnout oprávnění, která chcete udělit vlastníkovi, skupině a dalším, jako tříciferné číslo. Číslice zcela vlevo představuje oprávnění pro vlastníka. Prostřední číslice představuje oprávnění pro členy skupiny. Číslice zcela vpravo představuje oprávnění pro ostatní.

Zde jsou uvedeny číslice, které můžete použít, a co představují:

  • 0: (000) Žádné povolení.
  • 1: (001) Provést povolení.
  • 2: (010) Oprávnění k zápisu.
  • 3: (011) Zápis a provádění oprávnění.
  • 4: (100) Oprávnění ke čtení.
  • 5: (101) Číst a spouštět oprávnění.
  • 6: (110) Oprávnění ke čtení a zápisu.
  • 7: (111) Čtení, zápis a provádění oprávnění.

Každé ze tří oprávnění je reprezentováno jednou z bitů v binárním ekvivalentu desetinného čísla. Takže 5, což je 101 v binárním formátu, znamená čtení a spuštění. 2, což je 010 v binárním formátu, by znamenalo povolení k zápisu.

Pomocí této metody nastavíte oprávnění, která chcete mít; nepřidáte tato oprávnění k existujícím oprávněním. Takže pokud oprávnění pro čtení a zápis již byla na místě, budete muset použít 7 (111) pro přidání oprávnění ke spuštění. Použití 1 (001) by odstranilo oprávnění ke čtení a zápisu a přidalo oprávnění ke spuštění.

Přidejme oprávnění ke čtení zpět do souborů „.page“ pro ostatní kategorie uživatelů. Musíme také nastavit oprávnění uživatele a skupiny, takže je musíme nastavit na to, čím již jsou. Tito uživatelé již mají oprávnění ke čtení a zápisu, což je 6 (110). Chceme, aby „ostatní“ měli oprávnění ke čtení a oprávnění, takže je třeba je nastavit na 4 (100).

Toho dosáhne následující příkaz:

chmod 664 * .strana

Tím nastavíme oprávnění, která požadujeme od uživatele, členů skupiny a dalších, na to, co požadujeme. Uživatelé a členové skupiny mají svá oprávnění resetovaná na to, čím již byli, a ostatní mají oprávnění ke čtení obnoveno.

je -l

Pokročilé možnosti

Pokud si přečtete manuálovou stránku chmod, uvidíte, že existují některé pokročilé možnosti týkající se bitů SETUID a SETGID a omezeného mazání nebo „lepkavého“ bitu.

V 99% případů, které budete potřebovat chmod, vás zde popsané možnosti pokryjí.