Pomocí příkazu chmod v Linuxu určete, kdo může přistupovat k souborům, prohledávat adresáře a spouštět skripty. Tento příkaz upravuje oprávnění souborů Linux, která na první pohled vypadají složitě, ale ve skutečnosti jsou docela jednoduchá, jakmile víte, jak fungují.
Table of Contents
chmod Upravuje oprávnění k souboru
V Linuxu je to, kdo co může dělat se souborem nebo adresářem, řízeno pomocí sad oprávnění. Existují tři sady oprávnění. Jedna sada pro vlastníka souboru, další sada pro členy skupiny souboru a konečná sada pro všechny ostatní.
Oprávnění řídí akce, které lze se souborem nebo adresářem provést. Buď povolují, nebo zabraňují čtení, úpravě souboru nebo, pokud se jedná o skript nebo program, spuštění. V případě adresáře oprávnění určují, kdo může cd do adresáře a kdo může vytvářet nebo upravovat soubory v adresáři.
K tomu použijete příkaz chmod nastavte každé z těchto oprávnění. Na podívejte se, jaká oprávnění byla nastavena na soubor nebo adresář můžeme použít ls.
Zobrazení a pochopení oprávnění souborů
Můžeme použít volbu -l (dlouhý formát), aby ls vypsal souborová oprávnění pro soubory a adresáře.
ls -l
Na každém řádku první znak označuje typ záznamu, který je uveden. Pokud je to pomlčka (-), jedná se o soubor. Pokud je to písmeno d, jedná se o adresář.
Následující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ý soubor vlastní (uživatelská oprávnění).
Prostřední tři znaky zobrazují oprávnění pro členy skupiny souboru (skupinová oprávnění).
Poslední tři znaky zobrazují oprávnění pro každého, kdo není v prvních dvou kategoriích (jiná 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 znakem pomlčka, znamená to, že povolení nebylo uděleno. Pokud je znakem r, w nebo x, bylo toto oprávnění uděleno.
Písmena představují:
r: Oprávnění ke čtení. Soubor lze otevřít a zobrazit jeho obsah.
w: Oprávnění k zápisu. Soubor lze upravovat, upravovat a mazat.
x: Spuštění oprávnění. Pokud je soubor skript nebo program, lze jej spustit (spustit).
Například:
— znamená, že nebyla udělena vůbec žádná oprávnění.
rwx znamená, že byla udělena plná oprávnění. Všechny indikátory čtení, zápisu a provádění jsou přítomny.
Na našem snímku obrazovky začíná první řádek písmenem 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ář. Ty ukazují, že vlastník má plná oprávnění. Všechny znaky r, w a x jsou přítomny. To znamená, že uživatel dave má pro tento adresář oprávnění ke čtení, zápisu a spouštění.
Druhá sada tří znaků jsou oprávnění skupiny, to jsou rx. Ty ukazují, že členové skupiny dave mají oprávnění ke čtení a spouštění pro tento adresář. To znamená, že mohou vypsat soubory a jejich obsah v adresáři a mohou do tohoto adresáře cd (spouštět). Nemají oprávnění k zápisu, takže nemohou vytvářet, upravovat ani mazat soubory.
Poslední sada tří postav je také rx. Tato oprávnění se vztahují na osoby, které se neřídí prvními dvěma sadami oprávnění. Tito lidé (nazývaní „ostatní“) mají oprávnění ke čtení a spouštění v tomto adresáři.
Abychom to shrnuli, členové skupiny a ostatní mají oprávnění ke čtení a spouštění. Vlastník, uživatel zvaný dave, má také oprávnění k zápisu.
U všech ostatních souborů (kromě souboru skriptu mh.sh) mají dave a členové skupiny dave vlastnosti souborů pro čtení a zápis a ostatní mají oprávnění pouze ke čtení.
Ve speciálním případě souboru skriptu mh.sh mají vlastník dave a členové skupiny oprávnění ke čtení, zápisu a spouštění a ostatní mají oprávnění pouze ke čtení a spouštění.
Pochopení syntaxe oprávnění
Chcete-li použít chmod k nastavení oprávnění, musíme mu říct:
Kdo: Komu 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 reprezentaci těchto hodnot používáme indikátory a tvoříme krátká „příkazy o oprávnění“, jako je u+x, kde „u“ 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:
u: Uživatel, což znamená vlastníka souboru.
g: Skupina, což znamená členy skupiny, do které soubor patří.
o: Ostatní, což znamená osoby, které se neřídí oprávněními u a g.
a: All, což znamená vše výše uvedené.
Pokud není použito žádné z nich, chmod se chová, jako by bylo použito „a“.
Hodnoty „jaké“ můžeme použít:
–: Znaménko mínus. Odebere oprávnění.
+: Znaménko plus. Uděluje povolení. Oprávnění se přidá ke stávajícím oprávněním. Pokud chcete mít toto oprávnění a nastavit pouze toto oprávnění, použijte volbu = popsanou níže.
=: Rovnítko. Nastavte oprávnění a odeberte ostatní.
Hodnoty „které“ můžeme použít:
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 new_ file.txt
Chceme, aby uživatel dave měl oprávnění ke čtení a zápisu a skupina a ostatní uživatelé měli oprávnění pouze 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 vymažeme všechna existující oprávnění a poté nastavíme ta specifikovaná.
zkontrolujeme nové oprávnění k tomuto souboru:
ls -l new_file.txt
Stávající oprávnění byla odebrána a nová oprávnění byla nastavena, jak jsme očekávali.
Co takhle přidat oprávnění bez odstranění stávajících nastavení oprávnění? To můžeme také snadno udělat.
Řekněme, že máme soubor skriptu, který jsme dokončili. Potřebujeme, aby byl spustitelný pro všechny uživatele. Jeho aktuální oprávnění vypadají takto:
ls -l new_script.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 svém místě.
ls -l new_script.sh
Mohli bychom dosáhnout stejné věci bez „a“ v prohlášení „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í pro více souborů najednou.
Toto jsou soubory v aktuálním adresáři:
ls -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 o-r *.page
Podívejme se, jaký to mělo účinek:
ls -l
Jak vidíme, oprávnění ke čtení bylo odebráno ze souborů „.page“ pro kategorii uživatelů „ostatní“. Žádné další soubory nebyly ovlivněny.
Pokud bychom chtěli zahrnout soubory do podadresářů, mohli jsme použít volbu -R (rekurzivní).
chmod -R o-r *.page
Číselná zkratka
Dalším způsobem, jak použít chmod, je poskytnout oprávnění, která chcete udělit vlastníkovi, skupině a dalším, jako třímístné čí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í.
Číslice, které můžete použít a co představují, jsou uvedeny zde:
0: (000) Žádné povolení.
1: (001) Povolení k provedení.
2: (010) Povolení k zápisu.
3: (011) Oprávnění k zápisu a spouštění.
4: (100) Oprávnění ke čtení.
5: (101) Oprávnění ke čtení a spouštění.
6: (110) Oprávnění ke čtení a zápisu.
7: (111) Oprávnění ke čtení, zápisu a spouštění.
Každé ze tří oprávnění je reprezentováno jedním z bitů v binárním ekvivalentu dekadického čísla. Takže 5, což je 101 v binárním kódu, znamená čtení a provádění. 2, což je 010 v binárním tvaru, by znamenalo oprávnění k zápisu.
Pomocí této metody nastavíte oprávnění, která chcete mít; tato oprávnění nepřidáte ke stávajícím oprávněním. Takže pokud již byla oprávnění ke čtení a zápisu na místě, museli byste k přidání oprávnění ke spuštění použít 7 (111). Použití 1 (001) odebere oprávnění ke čtení a zápisu a přidá oprávnění ke spuštění.
Pojďme přidat oprávnění ke čtení zpět do souborů „.page“ pro kategorii ostatních uživatelů. Musíme také nastavit uživatelská a skupinová oprávnění, takže je musíme nastavit na to, co již jsou. Tito uživatelé již mají oprávnění ke čtení a zápisu, což je 6 (110). Chceme, aby „ostatní“ měli čtení a oprávnění, takže je třeba je nastavit na 4 (100).
To provede následující příkaz:
chmod 664 *.page
Tím nastavíte oprávnění, která požadujeme pro uživatele, členy skupiny a další, na to, co požadujeme. Uživatelé a členové skupiny mají svá oprávnění resetována na to, co již měli, a ostatní mají oprávnění ke čtení obnoveno.
ls -l
Pokročilé možnosti
jestli ty přečtěte si manuálovou stránku pro 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 bitu „sticky“.
V 99 % případů, kdy budete potřebovat chmod, zde popsané možnosti vám pomohou.