UMASK v systémech Linux nebo Unix je známý jako User Mask nebo také jako User file creation Mask. Toto je základní oprávnění nebo výchozí oprávnění, když je v počítači se systémem Linux vytvořen nový soubor nebo složka.
V Linuxu se používá pro více příkazů, jako je mkdir, touch, tee a další příkazy, které vytvářejí soubory a adresáře. Zapojí se do každého kroku, když se vytvoří nový soubor nebo adresář.
Oprávnění k souboru:
Než se pustíme do hlubokého ponoru a pochopení umasku, pojďme si nejprve stručně porozumět oprávněním souborů.
Linux je známý svou bezpečností. Každý soubor nebo adresář v Linuxu má specifickou sadu oprávnění a vlastnictví. Podívejme se na třídu uživatelů níže.
Každý soubor v Linuxu bude mít přidruženy pod tři uživatelské třídy.
- Uživatel – Uživatel, který je vlastníkem souboru – ve výchozím nastavení označuje, kdo soubor vytvořil, pokud jej nezměníte.
- Skupina – Označuje, že lidé ve skupině budou mít přiřazena oprávnění k souboru.
- Ostatní – Toto omezí ostatní uživatele, kteří nejsou vlastníkem nebo nejsou v přiřazené skupině.
Pro každou uživatelskou třídu zmíněnou výše existují tři typy přístupu k souborům.
- r – oprávnění ke čtení – možnost číst obsah souboru
- w – oprávnění k zápisu – možnost měnit obsah souboru
- x – oprávnění ke spuštění – možnost spustit soubor jako program
Výše uvedený koncept vám říká, kdo smí číst obsah souboru, upravovat obsah souboru nebo spouštět program.
Oprávnění k prohlížení – symbolický režim:
Podívejme se níže na vlastnictví souboru. Informace můžete na svém počítači se systémem Linux načíst zadáním příkazu ls -l.
První znak na obrázku výše ukazuje typ souboru. V Linuxu mohou být různé typy souborů, jak je uvedeno níže.
- | Označuje jednoduchý běžný soubor s různými příponami jako .txt, .json, .sh, .py, .rb atd. |
d | Označuje adresář/složku |
l | Označuje symbolický odkaz nebo symbolický odkaz nebo měkký odkaz |
c | Označuje soubor znakového zařízení |
b | Označuje soubor blokového zařízení |
Následujících devět symbolů je rozděleno do tří částí, jak je uvedeno níže.
rwx | Vlastník souboru může číst obsah, upravovat obsah a spouštět soubor jako program |
r-x | Členové ve skupině „uživatelé“ mohou číst obsah a spouštět soubor jako program, ale nemohou upravovat obsah souboru |
r-x | Ten, kdo není vlastníkem, také není členem skupiny, tj. jiný , může také číst obsah souboru a spustit soubor jako program, ale nemůže upravovat obsah souboru |
Oprávnění k prohlížení – číselný režim:
Existuje další způsob, jak vyjádřit oprávnění pomocí čísel, která se nazývají Numerický režim.
Podívejme se na níže uvedenou tabulku oprávnění pro numerické soubory.
0 | --- | Žádné oprávnění |
1 | --x | Pouze oprávnění k provedení |
2 | -w- | Pouze oprávnění k zápisu |
3 | -wx | Oprávnění k zápisu a spouštění |
4 | r-- | Oprávnění pouze ke čtení |
5 | r-x | Oprávnění ke čtení a spouštění |
6 | rw- | Oprávnění ke čtení a zápisu |
7 | rwx | Oprávnění ke čtení, zápisu a spouštění |
Pokud odkážu na tuto tabulku číselných oprávnění a použiji ji na stejný adresář uvedený na obrázku výše, oprávnění bude vypadat níže.
rwx | 4+2+1 | 7 |
r-x | 4+0+1 | 5 |
r-x | 4+0+1 | 5 |
Číselné oprávnění adresáře testdir je tedy 755.
Porozumění UMASK:
Spuštěním níže uvedeného příkazu vytvoříme nový soubor a nový adresář.
$ touch testfile
$ mkdir testdir
Podívejme se na oprávnění testfile a testdir spuštěním příkazu ls -l.
$ ls -l
Output:
drwxr-xr-x 2 niteshb users 4096 Mar 21 22:43 testdir
-rw-r--r-- 1 niteshb users 0 Mar 21 22:43 testfile
Všimli jste si oprávnění? Jsou jiní, že? To je způsobeno výchozí hodnotou umask, která je nastavena v počítači se systémem Linux.
Ve výchozím nastavení je na počítači Linux výchozí oprávnění k vytvoření souboru 666, které dává oprávnění ke čtení a zápisu vlastníkovi, skupině a dalším, a 777 pro adresář, což znamená oprávnění ke čtení, zápisu a spouštění vlastníkovi, skupině a ostatní.
Jak víme, adresáře nemohou být spustitelné. Proč tedy adresář potřebuje oprávnění ke spuštění? Oprávnění ke spuštění k adresáři je povolení přístupu k obsahu v adresáři. Pokud pomocí příkazu chmod změníme oprávnění adresáře na 666 a pokusíme se přejít do adresáře příkazem cd, zobrazí se chyba oprávnění odepřeno.
Ve většině distribucí Linuxu je výchozí hodnota pro celý systém nastavena v pam_umask.so nebo v souboru /etc/profile. Přidáním hodnoty do souboru ~/.bashrc do domovského adresáře uživatele můžeme vytvořit hodnotu umask specifickou pro uživatele.
Chcete-li zkontrolovat hodnotu umask, spusťte příkaz umask.
$umask
Výstup:
0022
Úplně první 0 z výše čtyř čísel můžeme prozatím ignorovat. Je součástí pokročilého oprávnění v Linuxu. Což může zabránit úpravě souboru, i když máte oprávnění k zápisu, nebo můžeme zabránit smazání souboru, i když jste uživatel root. V tomto blogu se zaměříme pouze na další tři čísla.
Chcete-li změnit aktuální hodnotu umask relace, proveďte níže uvedený příkaz následovaný požadovanou hodnotou.
$umask 0044
Jak soubory a adresáře získávají svá oprávnění:
Hodnota spojená s umask NENÍ oprávnění, které získáte pro své soubory a adresáře.
Existuje velmi jednoduchý výpočet. Jak jsme uvedli výše, výchozí hodnota pro soubor je 666 a pro adresář je to 777. Chcete-li vypočítat bity oprávnění pro nové soubory nebo adresáře, odečtěte hodnotu umask od výchozí hodnoty.
Spočítejme si například, jak ovlivní nové oprávnění k souboru nebo adresáři kvůli umask.
- Soubory:666 - 022 =644. Podle oprávnění může vlastník soubor číst a spouštět. Skupiny a ostatní mohou číst soubor.
- Adresář:777 - 022 =755. To znamená, že vlastník bude mít všechna oprávnění ke čtení, zápisu a cd do adresáře. Skupina a ostatní mohou číst a vypisovat obsah adresáře a cd do adresáře.
Hodnotu umask můžete také zobrazit v číselné podobě provedením níže uvedeného příkazu.
$umask
Výstup:
u=rwx,g=rx,o=rx
Na rozdíl od číselného zápisu obsahuje hodnota symbolického zápisu bity oprávnění, které budou nastaveny pro nově vytvořené soubory a adresáře.
Nastavení hodnoty masky:
Masku vytvoření souboru lze nastavit pomocí osmičkového nebo symbolického zápisu. Chcete-li, aby byly změny trvalé, nastavte novou hodnotu umask v globálním konfiguračním souboru, jako je soubor /etc/profile, který ovlivní všechny uživatele, nebo v konfiguračních souborech uživatelského prostředí, jako jsou ~/.profile, ~/.bashrc nebo ~/.zshrc, které ovlivní pouze uživatele. Uživatelské soubory mají přednost před globálními soubory.
Před provedením změn v umask
hodnotu, ujistěte se, že nová hodnota nepředstavuje potenciální bezpečnostní riziko. Hodnoty méně omezující než 022
by měl být používán s velkou opatrností. Například umask 000
znamená, že kdokoli bude mít oprávnění ke čtení, zápisu a spouštění pro všechny nově vytvořené soubory.
Řekněme, že chceme nastavit přísnější oprávnění pro nově vytvořené soubory a adresáře, aby ostatní nemohli cd
do adresářů a číst soubory. Požadovaná oprávnění jsou 750
pro adresáře a 640
pro soubory.
Pro výpočet umask
value jednoduše odečtěte požadovaná oprávnění od výchozího:
Hodnota umask:777-750 = 027
Požadovaný umask
hodnota uvedená v číselném zápisu je 027
.
Chcete-li trvale nastavit novou hodnotu v celém systému, otevřete /etc/profile
soubor pomocí textového editoru a změňte nebo přidejte následující řádek na začátek souboru:
umask 0027
Aby se změny projevily, spusťte následující zdrojový příkaz nebo se odhlaste a přihlaste:
$source /etc/profile
Pro ověření nových nastavení vytvoříme jeden nový soubor a adresář pomocí níže uvedených příkazů.
$mkdir newtestdir
$touch newtestfile
Pokud zkontrolujete oprávnění pomocí příkazu ls, všimnete si, že nový soubor má 640
a nový adresář 750
oprávnění, jak jsme chtěli:
drwxr-xr-- 2 niteshb users 4096 Mar 21 22:43 newtestdir
-rw-r----- 1 niteshb users 0 Mar 21 22:43 newtestfile
Dalším způsobem nastavení masky vytvoření souboru je použití symbolického zápisu. Například umask u=rwx,g=rx,o=
je stejný jako umask 027
.
Závěr:
V této příručce jsme vysvětlili oprávnění pro Linux a jak používat umask
příkaz k nastavení bitů oprávnění pro nově vytvořené soubory nebo adresáře.
Další informace získáte zadáním příkazu níže ve svém terminálu.
$man umask