umask 決定新建檔案/目錄的預設權限,理解其運算邏輯對系統安全與團隊協作至關重要。
umask 以四位八進制表示(如 0022),對應 SUID/SGID/Sticky、擁有者、群組、其他人四類權限的遮罩位(1 表移除、0 表保留)。
777(rwxrwxrwx)減去 umask666(rw-rw-rw-)減去 umask(註:檔案預設無執行權限)| umask | 目錄權限 | 檔案權限 | 適用場景 |
|---|---|---|---|
| 0022 | 755 (rwxr-xr-x) | 644 (rw-r--r--) | 預設值,多人共用系統 |
| 0002 | 775 (rwxrwxr-x) | 664 (rw-rw-r--) | 群組協作專案目錄 |
| 0077 | 700 (rwx------) | 600 (rw-------) | 高安全性、個人私密資料 |
| 0027 | 750 (rwxr-x---) | 640 (rw-r-----) | 部門隔離、群組內共享 |
umask 0002(僅影響目前 shell 及其子進程)~/.bashrc 或 ~/.profile 加入 umask 0002/etc/profile、/etc/login.defs(UMASK 002)或 /etc/pam.d/common-session(session optional pam_umask.so umask=0002)umask # 顯示八進制
umask -S # 顯示符號模式 (u=rwx,g=rx,o=rx)
touch testfile && mkdir testdir
ls -l # 實際觀察權限
open(..., 0777) 建立檔案時,umask 仍生效;若程式指定 0700 則不受 umask 影響setfacl/getfacl)可覆蓋 umask 限制,提供更細粒度控制UMask=0027正確設定 umask 能在檔案建立之初即落實最小權限原則,減少事後 chmod 修正的風險與管理成本。