umask

Wyświetla lub ustawia domyślną maskę uprawnień dla nowo tworzonych plików.

umask to wbudowane polecenie powłoki, które ustawia (albo wyświetla) maskę uprawnień dla nowo tworzonych plików i katalogów. Nie zmienia uprawnień istniejących plików — działa tylko na to, co dopiero powstanie. Zasada jest odwrotna niż w chmod: umask to bity, które mają zostać odjęte z uprawnień domyślnych. System startuje od 666 dla plików (rw dla wszystkich, bez wykonywalności) i 777 dla katalogów, a potem odejmuje maskę. Przy typowej masce 022 nowy plik dostaje 644, a katalog 755.

Składnia i najważniejsze opcje

Podstawowa forma: umask [-p] [-S] [maska]

  • umask — bez argumentów wyświetla aktualną maskę w notacji ósemkowej (np. 0022).
  • -S — pokazuje maskę w notacji symbolicznej (np. u=rwx,g=rx,o=rx). Uwaga: symbolika pokazuje uprawnienia, które zostaną nadane, a nie te odjęte.
  • -p — wypisuje maskę w formie gotowej do ponownego użycia jako komenda (z przedrostkiem umask), przydatne do zapisania do skryptu.
  • maska ósemkowa — np. umask 027 ustawia maskę na trzy cyfry ósemkowe.
  • maska symboliczna — np. umask u=rwx,g=rx,o= ustawia to samo, tylko czytelniej.

Przykłady użycia

  • umask — sprawdzasz, jaka maska obowiązuje w bieżącej sesji.
  • umask -S — to samo, ale w wersji symbolicznej, gdy nie chcesz w głowie liczyć 666 - maska.
  • umask 022 — standard: nowe pliki dostają 644, katalogi 755. Grupa i inni mogą czytać.
  • umask 077 — tryb prywatny: nowe pliki 600, katalogi 700. Nikt poza właścicielem nie zajrzy. Dobre dla katalogów z sekretami.
  • umask -p — wypisze coś w stylu umask 0022, co możesz wprost wkleić do ~/.bashrc.

Częste błędy i pułapki

Najczęstsza pomyłka to traktowanie umask jak chmod — to odejmowanie, nie ustawianie. Maska 022 nie znaczy „uprawnienia 022″, tylko „odejmij prawa zapisu grupie i innym”.

Druga pułapka: umask nie dodaje bitu wykonywalności. Pliki startują od 666, więc żadna maska nie zrobi z nowego pliku wykonywalnego — dlatego świeży skrypt i tak trzeba chmod +x.

Trzecia: umask to polecenie wbudowane powłoki, nie samodzielny program w /bin. Ustawienie działa tylko w bieżącej sesji i jej procesach potomnych. Żeby przetrwało reboot i nowe logowania, wpisz je do ~/.bashrc, ~/.profile albo systemowo (np. /etc/login.defs, /etc/profile). Wartość i sposób konfiguracji różnią się między dystrybucjami — Debian/Ubuntu i RHEL potrafią mieć inne domyślne maski (często 022, ale bywa 002 przy „user private groups”).

Powiązane komendy: chmod, chown, ls -l, stat, id.