Kako umask radi
Kada program pravi datoteku, traži mod, gotovo uvek 666 (rw-rw-rw-) za datoteke i 777 za direktorijume. Kernel zatim briše svaki bit koji je postavljen u umask-u procesa. Sa uobičajenim 022, uklanjaju se bitovi za pisanje za grupu i ostale: datoteke postaju 644, direktorijumi 755. Sa 077 grupi i ostalima odlazi sve: 600 i 700. Maska može samo da uklanja dozvole, nikad da ih dodaje; datoteka nikad ne dobija izvršavanje od umask-a, jer ga 666 nikad nije ni imao.
Aritmetika je mod & ~umask, bitovsko I sa invertovanom maskom, a ne oduzimanje, pa umask 027 nad 666 daje 640, a ne 639.
Uobičajene vrednosti
| umask | Datoteke | Direktorijumi | Koristi se za |
|---|---|---|---|
| 022 | 644 | 755 | Podrazumevano na većini distribucija; ostali mogu da čitaju. |
| 002 | 664 | 775 | Debian/Ubuntu za korisnike sa privatnom grupom; članovi grupe mogu da pišu. |
| 077 | 600 | 700 | Privatno po podrazumevanom: serveri, home direktorijumi sa tajnama. |
| 027 | 640 | 750 | Grupa može da čita, ostali ništa; uobičajena osnova za hardening (CIS). |
Gde se postavlja
- Školjka:
umaskga ispisuje,umask 027ga postavlja za sesiju; stavite ga u~/.profileili/etc/profile.umask -Sga prikazuje simbolički. - Prijava:
/etc/login.defs(UMASK) ipam_umaskpostavljaju vrednost pre nego što se školjka pokrene;/etc/profilena Debianu je izvodi iz toga da li korisnik ima privatnu grupu. - systemd servisi:
UMask=0077u sekciji[Service]; servisi ne čitaju profile školjke. - cron: poslovi se izvršavaju sa
022bez obzira na podešavanja korisnikove školjke; postavite ga unutar skripte. - Docker: podrazumevano u kontejneru je
022; promenite ga u entrypoint-u ili saumasku komandi.
Pitanja
Zašto moje nove datoteke imaju 644 kad želim 664?
Vaš umask je 022. Postavite umask 002 (i proverite da je grupa direktorijuma ona koju želite, sa setgid bitom na direktorijumu da bi je nove datoteke nasledile).
Da li umask utiče na chmod?
Ne. chmod postavlja tačne bitove. umask se primenjuje samo kada se datoteka pravi bez eksplicitnog moda, što je gotovo uvek.
Zašto direktorijum dobija izvršavanje, a datoteka ne?
Direktorijumi se prave sa 777 pre maske, datoteke sa 666. Izvršavanje na direktorijumu znači „može se ući“; datotekama treba eksplicitan chmod +x.
Da li je četvorocifreni umask drugačiji?
Vodeća 0 (0022) je samo oktalna notacija. Prva cifra bi maskirala setuid/setgid/sticky, koje procesi koji prave datoteke nikad ne traže, pa u praksi nema efekta.