Umask - Umask
tento článek potřebuje další citace pro ověření.Březen 2017) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
Příklad umask příkaz | |
První vydání | 1978 |
---|---|
Operační systém | Unix a Unixový |
Typ | Příkaz |
Ve výpočetní technice, umask
je příkaz, který určuje nastavení a maska který řídí jak oprávnění souboru jsou nastaveny pro nově vytvořené soubory. Může to také ovlivnit, jak se explicitně změní oprávnění k souboru. umask
je také a funkce která nastavuje masku, nebo může odkazovat na samotnou masku, která je formálně známá jako maska vytvoření režimu souboru. Maska je seskupením bity, z nichž každý omezuje způsob, jakým je nastaveno odpovídající oprávnění pro nově vytvořené soubory. Bity v masce lze změnit vyvoláním umask
příkaz.
Přehled
v Unixový Každý soubor má sadu atributů, které určují, kdo jej může číst, zapisovat nebo spouštět. Když program vytvoří soubor, oprávnění souboru jsou omezena maskou. Pokud má maska bit nastaven na „1“, bude odpovídající počáteční oprávnění souboru zakázán. Bit nastavený na „0“ v masce znamená, že bude odpovídající oprávnění určeno programem a souborový systém. Jinými slovy, maska funguje jako filtr poslední fáze, který odstraňuje oprávnění při vytváření souboru; každý bit, který je nastaven na „1“, odstraní odpovídající oprávnění. Oprávnění mohou uživatelé a programy, které používají, později změnit chmod
.
Každý program (odborně nazývaný a proces ) má vlastní masku a je schopen změnit své nastavení pomocí volání funkce. Když je proces a skořápka, maska je nastavena pomocí umask
příkaz. Když prostředí nebo proces spustí nový proces, podřízený proces zdědí masku od svého nadřazeného procesu. Maska obecně ovlivňuje pouze oprávnění k souborům během vytváření nových souborů a nemá žádný účinek, když se změní oprávnění k souborům v existujících souborech; nicméně chmod
příkaz zkontroluje masku, když jsou možnosti režimu zadány pomocí symbolického režimu a není zadán odkaz na třídu uživatelů.
Maska je uložena jako skupina bitů. Může být reprezentován jako binární, osmičkový nebo symbolický notace. The umask
příkaz umožňuje nastavit masku jako osmičkovou (např. 0754
) nebo symbolické (např. u =, g = w, o = wx
) notace.
The umask
příkaz se používá s Unixový operační systémy a umask
funkce je definována v POSIX.1 Specifikace.
Dějiny
Maska umask
velení a umask
funkce nebyly součástí původní implementace UNIX. Operační systém se vyvinul v relativně malém prostředí počítačového centra, kde bezpečnost nebyla problémem. Nakonec se rozrostla a sloužila stovkám uživatelů z různých organizací. Zpočátku vývojáři zpřísnili režimy vytváření klíčových souborů, zejména pro případy skutečných narušení zabezpečení, ale nejednalo se o obecné řešení. Maska a umask
velení byly představeny kolem roku 1978, v sedmém vydání operačního systému,[1] mohlo by to umožnit webům, skupinám a jednotlivcům zvolit si vlastní výchozí hodnoty. Maska byla od té doby implementována ve většině, ne-li ve všech, současných implementacích unixových operačních systémů.
Příkaz prostředí
V prostředí je maska nastavena pomocí umask
příkaz. Syntaxe příkazu je:[2]
umask [-S ] [výraz masky]
(Položky v závorkách jsou volitelné.)
Zobrazení aktuální masky
Pokud umask
příkaz je vyvolán bez jakýchkoli argumentů, zobrazí aktuální masku. Výstup bude v obou osmičkový nebo symbolický notace, v závislosti na OS.[3]
Ve většině mušle, ale ne C shell, -S
argument (tj. umask -S
) bude instruovat umask
zobrazit pomocí symbolické notace. Například:
$ umask # zobrazit aktuální hodnotu (jako osmičkovou)0022$ umask -S # zobrazí aktuální hodnotu symbolickyu=rwx, g=rx, o=rx
Nastavení masky pomocí osmičkové notace
Pokud umask
příkaz je vyvolán osmičkovým argumentem, nastaví přímo bity masky na tento argument:
$ umask 007 # nastavte masku na 007$ umask # zobrazit masku (v osmičkovém)0007 # 0 - speciální oprávnění (setuid | setgid | lepkavý) # 0 - (u) ser / vlastnická část masky # 0 - (g) seskupte část masky # 7 - (o) její / ne-skupinová část masky$ umask -S # zobrazí symbolicky maskuu=rwx, g=rwx, o=
Pokud jsou zadány méně než 4 číslice, předpokládají se úvodní nuly. Pokud argument není platné osmičkové číslo nebo pokud má více než 4 číslice, dojde k chybě.[4] Tři osmičkové číslice zcela vpravo adresují uživatelské třídy „vlastník“, „skupina“ a „ostatní“. Pokud je k dispozici čtvrtá číslice, číslice zleva (nejvyššího řádu) adresuje tři další atributy, nastavený bit, nastavený bit a lepkavý kousek.
Osmičkové kódy
Osmičková čísliceumask příkaz | Oprávnění, která maska udělá zakázat nastavení během vytváření souboru |
---|---|
0 | lze nastavit jakékoli oprávnění (číst, zapisovat, spouštět) |
1 | nastavení oprávnění ke spuštění je zakázáno (čtení a zápis) |
2 | nastavení oprávnění k zápisu je zakázáno (číst a spouštět) |
3 | nastavení oprávnění pro zápis a spuštění je zakázáno (pouze pro čtení) |
4 | nastavení oprávnění ke čtení je zakázáno (zapisovat a spouštět) |
5 | nastavení oprávnění ke čtení a spouštění je zakázáno (pouze pro zápis) |
6 | nastavení oprávnění ke čtení a zápisu je zakázáno (pouze spuštění) |
7 | nastavení všech oprávnění je zakázáno (žádná oprávnění) |
Nastavení masky pomocí symbolické notace
Když umask
je vyvolána pomocí symbolické notace, upraví nebo nastaví příznaky podle specifikace výraz masky se syntaxí:
Všimněte si, že tato syntaxe nefunguje při použití C shell kvůli odlišnému chování jeho vestavěné umask
příkaz.
Násobek výrazy masky jsou odděleny čárkami.
Mezera končí výraz masky(s).
The oprávnění jsou aplikovány na různé třídy uživatelů:
Dopis | Třída | Popis |
---|---|---|
u | uživatel | vlastník |
G | skupina | uživatelé, kteří jsou členy skupiny souboru |
Ó | ostatní | uživatelé, kteří nejsou vlastníkem souboru nebo členy skupiny |
A | Všechno | všechny tři výše uvedené, stejné jako ugo . (Výchozí, pokud ne písmena uživatelské třídy jsou specifikovány v výraz masky.) |
The operátor určuje, jak by měly být režimy povolení masky upraveny.
Operátor | Vliv na masku |
---|---|
+ | zadaná oprávnění jsou povolena, oprávnění, která nejsou zadána, se nezmění. |
- | zadaná oprávnění jsou zakázána, oprávnění, která nejsou zadána, se nezmění. |
= | zadaná oprávnění jsou povolena, povolení, která nejsou uvedena, je zakázána. |
The symboly oprávnění uveďte, které nastavení oprávnění k souboru má maska povolit nebo zakázat.
Symbol | název | Popis |
---|---|---|
r | číst | rčtěte soubor nebo vypsejte obsah adresáře |
w | psát si | write do souboru nebo adresáře |
X | vykonat | EXrozbalte soubor nebo opakujte adresářový strom |
X | speciální provedení | Vidět Symbolické režimy. |
s | setuid / gid | Vidět Oprávnění k souborům. |
t | lepkavý | Viz Oprávnění souborů. |
Například:
umask u-w
Zakázat wpovolení obřadu pro nastavení user. Zbytek příznaků v masce se nezmění.
Příklad několika změn:
umask u-w, g=r, o + r
To by nastavilo masku tak, aby:
- zakázat wpovolení obřadu pro nastavení user, zatímco ostatní vlajky zůstávají beze změny;
- povolit rpovolení k povolení pro Group, zatímco zakazuje wobřad a eXzvláštní povolení pro Group;
- povolit rpovolení k povolení pro Óa přitom ponechat zbytek Ódalší příznaky beze změny.
Příklady příkazového řádku
Zde je více příkladů použití umask
příkaz pro změnu masky:
umask příkaz vydán | Jak maska ovlivní oprávnění následně vytvořené soubory / adresáře |
---|---|
umask a + r | umožňuje povolení oprávnění ke čtení pro všechny třídy uživatelů; zbytek bitů masky se nezmění |
umask a-x | zakazuje povolení oprávnění ke spuštění pro všechny třídy uživatelů; zbytek bitů masky se nezmění |
umask a + rw | umožňuje povolení čtení a zápisu pro všechny třídy uživatelů; zbytek bitů masky se nezmění |
umask + rwx | umožňuje povolení pro čtení, zápis nebo spuštění pro všechny třídy uživatelů. (Poznámka: Na některých platformách UNIX se tím maska obnoví na výchozí.) |
umask u = rw, go = | povolit vlastníkovi povolení ke čtení a zápisu a zároveň zakázat vlastníkovi povolení k provádění; zakázat povolení jakýchkoli oprávnění pro skupinu a další |
umask u + w, go-w | povolit vlastníkovi povolení k zápisu; zakázat povolení povolení zápisu pro skupinu a ostatní; |
umask -S | zobrazí aktuální masku v symbolickém zápisu |
umask 777 | zakázat čtení, zápis a provádění oprávnění pro všechny (pravděpodobně to není užitečné, protože ani vlastník nemůže číst soubory vytvořené pomocí této masky!) |
umask 000 | povolit čtení, zápis a provádění oprávnění pro všechny (potenciální bezpečnostní riziko) |
umask 077 | povolit oprávnění ke čtení, zápisu a provádění pro vlastníka souboru, ale zakázat oprávnění ke čtení, zápisu a provádění pro všechny ostatní |
umask 113 | umožnit vlastníkovi a skupině povolení povolení ke čtení nebo zápisu, ale oprávnění neprovádět; povolit povolení ke čtení ostatním, ale ne zapisovat nebo spouštět oprávnění |
umask 0755 | ekvivalentní u-rwx, go = w . (The 0 specifikuje, že speciální režimy (setuid, setgid, sticky) mohou být povoleny.) |
Příklad ukazující účinek umask
:
$ umask -S # Zobrazit (často počáteční) nastavení u = rwx, g = rx, o = rx$ gcc ahoj.c # zkompilujte a vytvořte spustitelný soubor a.out$ Je -l a.out -rwxr-xr-x 1 vývojář 6010 10. července 17:10 a.out $ # umask zakázané oprávnění k zápisu pro skupinu a další$ ls> listOfMyFiles # výstupní soubor vytvořený přesměrováním se nepokouší nastavit eXecute$ ls -l listOfMyFiles-rw-r - r-- 1 vývojář 6010 10. července 17:14 listOfMyFiles $ # umask zakázané oprávnění k zápisu pro skupinu a další$ ############################################################$ umask u-w # odebrat uživateli oprávnění k zápisu z umask$ umask -Su = rx, g = rx, o = rx$ ls> protectedListOfFiles$ ls -l protectedListOfFiles-r - r - r-- 1 vývojář 6010 10 července 10 17:15 protectedListOfFiles $ rm protectedListOfFilespřepsat r - r - r-- já / vývojář pro protectedListOfFiles? $ # varování, že protectedListOfFiles nelze zapisovat, odpovědí Y soubor odstraníte$ #####################################################################################$ umask g-r, o-r # odstraněno skupinové čtení a další čtení z masky$ umask -Su = rx, g = x, o = x$ ls> secretListOfFiles$ ls -l secretListOfFiles-r -------- 1 vývojář 6010 10 července 10 17:16 secretListOfFiles
Maskový efekt
Maska se použije při každém vytvoření souboru. Pokud má maska bit nastaven na „1“, znamená to, že odpovídající oprávnění k souboru bude vždy zakázán když jsou soubory následně vytvořeny. Bit nastavený na „0“ v masce znamená, že bude odpovídající oprávnění určeno žádajícím procesem a OS když jsou soubory následně vytvořeny. Jinými slovy, maska funguje jako filtr poslední fáze, který odstraňuje oprávnění při vytváření souboru; každý bit, který je nastaven na „1“, odstraní odpovídající oprávnění pro soubor.
Pravdivá tabulka
Zde je pravdivostní tabulka pro maskovací logiku. Každý bit v režimu žádajícího procesu o povolení souboru je provozován maskou pomocí této logiky, čímž se získá režim oprávnění, který se použije na soubor při jeho vytváření. ('p' je bit v požadovaném režimu oprávnění souboru procesu, který vytváří soubor; 'q' je bit v masce; 'r' je výsledný bit v režimu oprávnění vytvořeného souboru)
p | q | r |
---|---|---|
T | T | F |
T | F | T |
F | T | F |
F | F | F |
Jak se maska aplikuje
Osmičková čísliceumask příkaz | Binární vstup maska | Negace masky | Logické AND s požadavkem "rwx"[5] |
---|---|---|---|
0 | 000 | 111 | rwx |
1 | 001 | 110 | rw- |
2 | 010 | 101 | r-x |
3 | 011 | 100 | r-- |
4 | 100 | 011 | -wx |
5 | 101 | 010 | -w- |
6 | 110 | 001 | --X |
7 | 111 | 000 | --- |
Programově je maska aplikována operačním systémem tak, že masku nejprve neguje (doplňuje) a poté provede logické AND s požadovaným režimem souboru. V [pravděpodobně] prvním manuálu k UNIXu, který popisuje jeho funkci,[6] manuál říká,
skutečný režim ... nově vytvořeného souboru je logický a daného režimu a doplňku argumentu. Podílí se pouze 9 bitů masky (ochranné bity) nízkého řádu. Jinými slovy, maska zobrazuje [označuje] bity, které se mají vypnout při vytváření souborů.
— Příručka pro osmé vydání UNIX, Bell Labs UNIX (manuální), AT&T Laboratories
v logická logika aplikace masky může být reprezentována jako:C: (P & (~ Q))
To říká, že režim oprávnění souboru (C) je výsledkem logiky A operace mezi negace masky (Q) a proces „požadovaného nastavení režimu povolení (P).
Výjimky
Mnoho operačních systémů neumožňuje vytvoření souboru s oprávněními ke spuštění. V těchto prostředích budou mít nově vytvořené soubory vždy vypnuté oprávnění ke spuštění pro všechny uživatele.
Maska se obecně aplikuje pouze na funkce, které vytvářejí nový soubor; existují však výjimky. Například při použití UNIX a GNU verze chmod
Chcete-li nastavit oprávnění souboru, použije se symbolická notace a není zadán žádný uživatel, pak se maska použije na požadovaná oprávnění, než se použijí na soubor. Například:
$ umask 0000$ chmod + rwx název souboru$ ls -l název souboru-rwxrwxrwx název souboru$ umask 0022$ chmod + rwx název souboru$ ls -l název souboru-rwxr-xr-x název souboru
Procesy
Každý proces má vlastní masku, která se použije vždy, když proces vytvoří nový soubor. Když shell nebo jakýkoli jiný proces vytvoří nový proces, podřízený proces zdědí masku od svého nadřazeného procesu.[7] Když je proces a skořápka, maska je změněna pomocí umask
příkaz. Stejně jako u jiných procesů, jakýkoli proces spuštěný z prostředí zdědí masku tohoto prostředí.
Možnost montáže
V Linuxové jádro, Tlustý
, hfs
, hpfs
, ntfs
, a udf
souborový systém ovladače podporují a umask
možnost připojení, která určuje, jak jsou informace o disku mapovány na oprávnění. To není stejné jako výše popsaná maska pro jednotlivé procesy, i když se oprávnění počítají podobným způsobem. Některé z těchto ovladačů systému souborů také podporují samostatné masky pro soubory a adresáře pomocí možností připojení, jako je maska
.
Viz také
Reference
- ^ „Manuál pro UNIX 7. vydání, Bell Labs UNIX“. Manuál. Laboratoře AT&T. Citováno 2019-05-14.
- ^ Olczak, Anatole (09.06.2019). „Korn Shell: Programovací příručka pro Unix a Linux“. Oreilly. Addison-Wesley Professional. Citováno 2013-01-14.
- ^ "umask", Single UNIX Specification, verze 2 (manuální), The Open Group, 1997, vyvoláno 2013-01-14
- ^ Poznámka: Některé programovací jazyky vyžadují před osmičkovou notaci symbol předpony, například číslici 0 nebo písmena o nebo q. The
umask
příkaz nepoužívá tento typ předpony - používají se pouze osmičkové číslice. - ^ Poznámka: Operační systémy obvykle také zruší oprávnění k provádění nově vytvořených souborů.
- ^ „Manuál 8. vydání pro UNIX, Bell Labs UNIX“. Manuál. Laboratoře AT&T. Citováno 2013-01-14.
- ^ "umask (2)", Linux Programmer's Manual release 3.32 (manual), Linux man-pages project, 9. ledna 2008, vyvoláno 2013-01-01