Linux 權限模型基於「用戶/組/其他」三元組與「讀/寫/執行」三權。本文系統講解 chmod 雙模式 (符號/八進制)、chown 所有權變更、chgrp 組變更、umask 默認掩碼,附圖解實戰範例。
chmod [ugoа][+-=][rwx] 文件/目錄
# 對象: u=user(擁有者), g=group(群組), o=others(其他), a=all(全部)
# 操作: +=添加, -=移除, =設定為
# 權限: r=讀, w=寫, x=執行/進入目錄
# 所有用戶增加寫權限
chmod a+w t2.tmp
# 擁有者全權,群組讀執行,其他無權限
chmod u=rwx,g=rx,o= t2.tmp
# 遞歸應用到目錄樹
chmod -R u+rwX,go-rwx /path/to/dir # X: 目錄加 x, 檔案不加

chmod MODE 文件/目錄
# 權重: r=4, w=2, x=1
# MODE = 用戶*64 + 群組*8 + 其他
# 例: 750 = u(4+2+1)=7, g(4+0+1)=5, o(0)=0
| 八進制 | 二進制 | 符號 | 含義 |
|---|---|---|---|
| 7 | 111 | rwx | 讀寫執行 |
| 6 | 110 | rw- | 讀寫 |
| 5 | 101 | r-x | 讀執行 |
| 4 | 100 | r-- | 唯讀 |
| 0 | 000 | --- | 無權限 |
# 擁有者 rwx, 群組 r-x, 其他 ---
chmod 750 t2.tmp
# 目錄典型: 755 (擁有者全權, 其他可進入讀取)
# 檔案典型: 644 (擁有者可寫, 其他唯讀)
# 私密檔案: 600 (僅擁有者讀寫)
# 腳本/可執行檔: 755


chown [新擁有者][:新群組] 文件/目錄
# 僅改擁有者
chown lenve t2.tmp
# 同時改擁有者與群組
chown lenve:developers t2.tmp
# 僅改群組 (冒號前留空)
chown :admins t2.tmp
# 遞歸
chown -R www-data:www-data /var/www/html

chgrp 新群組 文件/目錄
chgrp developers t2.tmp
chgrp -R www-data /var/www/html

666,目錄默認 777,實際權限 = 默認 & ~umask
umask # 顯示八進制 (如 0022)
umask -S # 顯示符號模式 (u=rwx,g=rx,o=rx)
# 臨時修改 (當前 Shell)
umask 027 # 新檔: 640, 新目錄: 750
# 永久修改 (~/.bashrc / /etc/profile)
echo "umask 027" >> ~/.bashrc

| 位 | 八進制 | 符號 | 檔案效果 | 目錄效果 |
|---|---|---|---|---|
| Setuid | 4000 | u+s | 執行時獲得檔案擁有者權限 | 無 |
| Setgid | 2000 | g+s | 執行時獲得檔案群組權限 | 新建檔案繼承目錄群組 |
| Sticky | 1000 | o+t | 無 | 僅擁有者/root 可刪除檔案 (/tmp) |
安全原則:最小權限原則 — 檔案 644/600,目錄 755/750/700,嚴禁 777。敏感配置 (含密鑰) 必須 600 或 400。