Umask е механизъм по който може да се задава новосъздадените файлове в Unix/Linux системи с какви права да са.
Стандартно файловете се създават с 666 права (rw-rw-rw) а директориите с 777 (rwxrwxrwx). Тук идва и функцията на umask. Ето как става:
1. създава се файл с права за достъп 666.
2. взема се текущата umask от обкръжението (примерно umask е 022).
3. прави се логически NOT на umask.
4. след това се прави логически AND между първоначалните права на файла (666 или ако е дир 777) и инверсната umask.
5. получената стойност са правата за достъп на файла.
пример:
umask 023
file с права за достъп - 666
Обръщаме всичко от осмична в двоична система.
110 110 110 (666)
000 010 011 (023)
Инвертираме umask:
110 110 110 (666)
111 101 100 (!023)
След това правим логически AND между 2те стойности (получава се 1 когато и двете стойности са 1)
110 110 110 (666)
AND
111 101 100 (!023)
--------------------
110 100 100 (644)
(дано не съм объркал нещо, защото това го писах една сутрин докато се събуждах с кафето)