umask
Příkaz umask (zkratka z anglického user file creation mode mask) slouží v systému Unix k nastavení implicitní masky práv nově vytvořených souborů.
Typ softwaru | standardní UNIXová utilita |
---|---|
Některá data mohou pocházet z datové položky. |
Bez parametru vypíše aktuální nastavení práv, pokud parametr přidáme, dochází ke změně nastavení. Parametr se nastavuje tak, že zapíšeme tři osmičková čísla jako při příkazu chmod s tím rozdílem, že zadáme ta práva, která budou novému souboru nebo adresáři chybět.
Efekty příkazu umask
umask pouze omezuje práva; nemůže přidat žádná další práva, pokud nejsou specifikována programem, který vytváří soubor nebo adresář. Když programy vytváří soubory, většinou jsou práva pro čtení a zápis souboru přidělena všem uživatelům, práva pro spuštění souboru nejsou přidělena (rw-rw-rw- nebo osmičkově 666 v tradiční unixové notaci). Soubory vytvořené tímto způsobem nebudou spustitelné, i kdyby to maska povolovala.
Na druhou stranu, pokud programy vytváří adresáře, povolí všechna práva (rwxrwxrwx nebo osmičkově 777). Takto vytvořené adresáře mohou procházet všichni uživatelé, pokud práva neomezí maska.
Příkaz shellu
Příkaz shellu umask mění umask procesu shellu, všech jeho dceřiných procesů a procesů následně z tohoto shellu spuštěných. Nové nastavení umask je ztraceno po ukončení shellu (po odhlášení uživatele). Pokud chcete umask změnit permanentně, musíte příkaz umask zapsat do přihlašovacího skriptu.
Moderní unixové systémy umožňují definici masky dvěma způsoby:
- Výchozími právy, nazývanými jako symbolická umaska, např. u=rwx,g=rwx,o=
- Číslem v osmičkové soustavě, které určuje, která práva budou maskována (nenastavena) pro jakýkoli nově vytvořený soubor nebo adresář, např. 0700
Číselné masky
Obvyklou hodnotou pro umask je 022 (maskující skupinová a ostatní práva pro zápis), což zajišťuje, že nově vytvořené soubory může měnit pouze jejich vlastník (tj. uživatel, který je vytvořil). Další obvyklá hodnota umask je 002, která ponechává práva pro zápis i skupině uživatelů. Tato maska může být používána pro sdílená data, kdy několik uživatelů pracuje se stejnými soubory.
hodnota | maskovaná práva |
---|---|
0 | --- |
1 | --x |
2 | -w- |
3 | -wx |
4 | r-- |
5 | r-x |
6 | rw- |
7 | rwx |
Příklady číselných masek
V bashi:
$ umask 0174 $ mkdir foo $ touch bar $ ls -al drw-----wx 2 dave dave 512 Sep 1 20:59 foo -rw-----w- 1 dave dave 0 Sep 1 20:59 bar
Použijete-li masku uvedenou výše, osmičková 1 zamezí nastavení spouštěcích práv pro uživatele, osmičková 7 zamezí nastavení jakýchkoli práv pro skupinu a osmičková 4 zamezí nastavení čtecích práv pro ostatní uživatele.