umask(user file-creation mode mask)決定建立新檔案/目錄時的**預設權限**。理解其計算邏輯,能避免權限過鬆導致安全風險。
查看目前 umask
umask
# 輸出範例:0022
四位數字含義
| 位置 | 代表 | 範例值 | 說明 |
| 第 1 位 | 特殊權限 | 0 | SUID/SGID/Sticky bit,通常 0 |
| 第 2 位 | 擁有者 | 0 | 捨棄權限:0=全保留(檔案不含 x) |
| 第 3 位 | 群組 | 2 | 捨棄權限:2=寫入權限(檔案同時捨棄 x) |
| 第 4 位 | 其他人 | 2 | 捨棄權限:2=寫入權限(檔案同時捨棄 x) |
預設權限計算公式
- 目錄基礎權限:
777(rwxrwxrwx)
- 檔案基礎權限:
666(rw-rw-rw-),**檔案預設無執行權限**
- 最終權限 = 基礎權限 - umask(按位減法,非數值減法)
實例:umask 0022
| 類型 | 基礎權限 | umask | 結果權限 | 符號表示 |
| 目錄 | 777 | 022 | 755 | rwxr-xr-x |
| 檔案 | 666 | 022 | 644 | rw-r--r-- |
修改 umask
暫時生效(當前 Shell)
umask 002 # 目錄 775、檔案 664,群組可寫
永久生效
- 全系統:編輯
/etc/profile 或 /etc/bashrc 加入 umask 002
- 單用戶:編輯
~/.bashrc 或 ~/.bash_profile 加入
安全建議
- 預設
022 較安全(他人不可寫)。
- 團隊協作目錄可設
002(群組可寫),並配合 SGID:chmod g+s dir。
- 嚴格環境可設
077(僅擁有者可存取)。