萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Linux umask 權限遮罩機制深度解析

umask 決定新建檔案/目錄的預設權限,理解其運算邏輯對系統安全與團隊協作至關重要。

umask 數值含義

umask 以四位八進制表示(如 0022),對應 SUID/SGID/Sticky、擁有者、群組、其他人四類權限的遮罩位(1 表移除、0 表保留)。

預設權限計算公式

  • 目錄:基礎權限 777(rwxrwxrwx)減去 umask
  • 檔案:基礎權限 666(rw-rw-rw-)減去 umask(註:檔案預設無執行權限)

常見 umask 值與結果

umask目錄權限檔案權限適用場景
0022755 (rwxr-xr-x)644 (rw-r--r--)預設值,多人共用系統
0002775 (rwxrwxr-x)664 (rw-rw-r--)群組協作專案目錄
0077700 (rwx------)600 (rw-------)高安全性、個人私密資料
0027750 (rwxr-x---)640 (rw-r-----)部門隔離、群組內共享

修改 umask 方式

  • 暫時生效: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 影響
  • ACL(setfacl/getfacl)可覆蓋 umask 限制,提供更細粒度控制
  • systemd 服務的 umask 可在 Service 區段設定 UMask=0027

正確設定 umask 能在檔案建立之初即落實最小權限原則,減少事後 chmod 修正的風險與管理成本。

copyright © 萬盛學電腦網 all rights reserved