umask – Maska użytkownika (ang. user mask)
Polecenie umask jest odpowiedzialne za ograniczenie praw dostępu (chmod). W jaki sposób to działa? A więc na początku zastanówmy się nad jedną rzeczą, a mianowicie podczas tworzenia pliku (katalogu) nadawane są jakieś uprawnienia dla tego pliku (katalogu). No dobrze, to jakie są te uprawnienia? Tutaj właśnie wchodzi rola polecenia umask. Standardowo w systemie Linux uprawnienia dla tworzonego pliku są rw-rw-rw- (ósemkowo 666) jeśli maska jest wyłączona. Z kolei jeśli tworzymy katalog i maska również jest wyłączona, to katalog posiadać będzie uprawnienia rwxrwxrwx (ósemkowo 777). Sprawdzenie wartości maski realizuje się używając polecenia umask, bez dodatkowych argumentów (rysunek 1). Wartość maski standardowo jest ustawiona na 022 (co to znaczy dowiesz się w dalszej części).
Rys 1. Wartość maski
Aby ustawić inną wartość maski po nazwie polecenia dodajemy wartość ósemkową bez lub z poprzedzającym zerem (ma to związek oczywiście z prawami dostępu). Poniższy rysunek prezentuje jak wyzerować maskę. Ogólnie jeśli wyświetlamy wartość maski to dostajemy jedno dodatkowe zero na początku, które oznacza, że wartość jest zapisana w systemie ósemkowym.
Rys 2. Ustawienie wartości maski
Jeśli nie zmieniałeś wartości maski i załóżmy, że jest ona równa 022 to podczas tworzenia pliku dostaniesz uprawnienia inne, a mianowicie rw-r–r– (rysunek 3). Dlaczego się tak dzieje? Odpowiedź znajdziesz poniżej.
Rys 3. Tworzenie pliku i sprawdzenie praw dostępu
Dzieje się tak ponieważ przyznawane uprawnienia przechodzą logiczną koniunkcję z zanegowaną wartością maski. Bramka AND (logiczna koniunkcja) przedstawiona została na rysunku 4. Rozłóżmy naszą ósemkową liczbę praw dostępu przyznawaną podczas tworzenie pliku przez system dla zerowej maski (rw-rw-rw-). Pamiętamy o tym, że każda z tych części jest traktowana osobno, dlatego też 666 rozkładamy na 110 110 110 (Liczba 666 binarnie była by inną liczbą). Następnie każdą z 9 cyfr zapisujemy jako X1 bramki AND, a jako X2 zanegowaną wartość maski (rys. 5) – oczywiście na odpowiadającej jej pozycji (rys. 6).
Rys 4. Logiczna bramka AND
Rys 5. Wartości używane do tworzenia maski binarnie i zanegowana wartość
Jeśli nasza maska równa się 022 (tutaj tak samo jak w przypadku praw, każda z części traktowana jest osobno) to po rozłożeniu jej i zapisaniu binarnie będzie się równać 000 010 010, a po negacji 111 101 101, dlatego też ostateczne prawo dostępu do pliku, które otrzymamy będzie rw-r–r–, co zostało udowodnione na poniższym rysunku.
Rys 6. Zastosowanie maski
Analogicznie dzieje się dla różnych wartości masek. Maska, za pomocą której odbierzemy wszystkie prawa podczas tworzenia pliku to 777. Warto sobie przeanalizować dlaczego. To samo jest w przypadku katalogów, z tą różnicą, że katalog podczas tworzenia dostaje prawa dostępu 777 (rwxrwxrwx), dlatego też w przypadku maski 022 otrzyma uprawnienia rwxr-xr-x.
źródło: https://www.arturpyszczuk.pl/commands-umask.html