V operačních systémech Linux a Unix jsou všechny nové soubory vytvářeny s výchozí sadou oprávnění. umask
utilita umožňuje zobrazit nebo nastavit masku vytváření režimu souborů, která určuje bity oprávnění pro nově vytvořené soubory nebo adresáře.
Používají ho příkazy mkdir, touch, tee a další, které vytvářejí nové soubory a adresáře.
Oprávnění pro Linux #
Než půjdeme dále, pojďme si krátce vysvětlit 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.
- Všichni ostatní.
Pro každou třídu existují tři typy oprávnění:
- 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.
Chcete-li zobrazit oprávnění k souboru, použijte ls
příkaz:
ls -l dirname
drwxr-xr-x 12 linuxize users 4.0K Apr 8 20:51 dirname
|[-][-][-] [------] [---]
| | | | | |
| | | | | +-----------> Group
| | | | +-------------------> Owner
| | | +----------------------------> Others Permissions
| | +-------------------------------> Group Permissions
| +----------------------------------> Owner Permissions
+------------------------------------> File Type
První znak představuje typ souboru, kterým může 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í, tři sady po třech znacích. První sada zobrazuje oprávnění vlastníka, druhá oprávnění skupiny a poslední sada zobrazuje oprávnění všech ostatních.
Znak r
s osmičkovou hodnotou 4
znamená čtení, w
s osmičkovou hodnotou 2
pro zápis x
s osmičkovou hodnotou 1
pro oprávnění ke spuštění a (-
) s osmičkovou hodnotou 0
bez oprávnění.
Existují také tři další speciální typy oprávnění k souborům:setuid
, setgid,
a Sticky Bit
.
Ve výše uvedeném příkladu (rwxr-xr-x
) znamená, že vlastník má oprávnění ke čtení, zápisu a spouštění (rwx
), skupina a ostatní mají oprávnění ke čtení a spouštění.
Pokud zastupujeme oprávnění souboru pomocí číselného zápisu, dojdeme k číslu 755
:
- Vlastník:
rwx
=4+2+1 = 7
- Skupina:
r-x
=4+0+1 = 5
- Jiné:
r-x
=4+0+1 = 5
Jsou-li oprávnění uvedena v číselném zápisu, mohou mít tři nebo čtyři osmičkové číslice (0-7). První číslice představuje speciální oprávnění, a pokud je vynechána, znamená to, že pro soubor nejsou nastavena žádná zvláštní oprávnění. V našem příkladu 755
je stejný jako 0755
. První číslice může být kombinací 4
pro setuid
, 2
pro setgid
a 1
pro Sticky Bit
.
Oprávnění k souboru lze změnit pomocí chmod
příkaz a vlastnictví pomocí chown
příkaz.
Porozumění umask #
Ve výchozím nastavení jsou v systémech Linux výchozí oprávnění k vytváření 666
pro soubory, které udělují oprávnění ke čtení a zápisu uživateli, skupině a dalším, a na 777
pro adresáře, což znamená oprávnění ke čtení, zápisu a spouštění pro uživatele, skupiny a další. Linux neumožňuje vytvoření souboru s oprávněním ke spuštění.
Výchozí oprávnění k vytváření lze upravit pomocí umask
utility.
umask
ovlivňuje pouze aktuální prostředí shellu. Ve většině distribucí Linuxu je výchozí hodnota umask pro celý systém nastavena v pam_umask.so
nebo /etc/profile
soubor.
Pokud chcete zadat jinou hodnotu pro jednotlivé uživatele, upravte konfigurační soubory uživatelského prostředí, například ~/.bashrc
nebo ~/.zshrc
. Můžete také změnit aktuální relaci umask
hodnotu spuštěním umask
následovaná požadovanou hodnotou.
Chcete-li zobrazit aktuální hodnotu masky, jednoduše napište umask
bez jakýchkoli argumentů:
umask
Výstup bude obsahovat
022
umask
value obsahuje bity oprávnění, které NE nastavit na nově vytvořené soubory a adresáře.
Jak jsme již uvedli, výchozí oprávnění k vytváření souborů jsou 666
a pro adresáře 777
. Chcete-li vypočítat bity oprávnění pro nové soubory, odečtěte hodnotu umask od výchozí hodnoty.
Například pro výpočet umask 022
ovlivní nově vytvořené soubory a adresáře, použijte:
- Soubory:
666 - 022 = 644
. Vlastník může číst a upravovat soubory. Skupina a ostatní mohou soubory pouze číst. - Adresáře:
777 - 022 = 755
.Vlastník můžecd
do adresáře a vypisovat, číst, upravovat, vytvářet nebo mazat soubory v adresáři. Skupina a ostatní mohoucd
do adresáře a seznam a čtení souborů.
Hodnotu masky můžete také zobrazit v symbolickém zápisu pomocí -S
možnost:
umask -S
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. Aby byly změny trvalé, nastavte nový umask
hodnotu v globálním konfiguračním souboru jako /etc/profile
soubor, který ovlivní všechny uživatele nebo v konfiguračních souborech uživatelského prostředí, jako je ~/.profile
, ~/.bashrc
nebo ~/.zshrc
, což 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 má oprávnění ke čtení, zápisu a spouštění všech nově vytvořených souborů.
Ř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
hodnotu, 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í vašeho textového editoru:
sudo nano /etc/profile
a změňte nebo přidejte následující řádek na začátek souboru:
/etc/profileumask 027
Aby se změny projevily, spusťte následující source
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í mkdir
a touch
:
mkdir newdir
touch newfile
Pokud zkontrolujete oprávnění pomocí ls
všimnete si, že nový soubor má 640
a nový adresář 750
oprávnění, jak jsme chtěli:
drwxr-x--- 2 linuxize users 4096 Jul 4 18:14 newdir
-rw-r----- 1 linuxize users 0 Jul 4 18:14 newfile
Dalším způsobem, jak nastavit masku 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.
Pro více informací napište man umask
ve vašem terminálu.
Pokud máte nějaké dotazy, zanechte prosím níže komentář.