技術文章 · IT 指令工具箱

chmod、chown、umask、ACL:Linux 權限設定與檢查

整理 chmod 數字與符號模式、chown、chgrp、umask、getfacl、setfacl 常用指令,並說明目錄 x 權限、遞迴修改與 Web 服務權限。

作者 Steve Chen · 發布  · 約 4 分鐘閱讀

IT 指令工具箱 — 廷皓技術專欄插圖

權限問題先分清楚擁有者、群組、mode 與 ACL。把所有東西改成 777 看似省事,實際上會把問題藏起來,也可能讓其他帳號能寫入。

21 組範例LinuxmacOS(ACL 指令不同)查核日期:2026-08-11
動手前:遞迴 chmod 或 chown 會影響整棵目錄。先用 find、namei、ls -ld 與 getfacl 盤點;正式站不要直接把檔案和目錄套同一組數字。

查看權限

看檔案權限與擁有者Linux/macOS

ls -l app.conf

第一欄是類型與 mode,後面是擁有者與群組。

看目錄本身權限Linux/macOS

ls -ld /var/www/app

避免 ls 展開目錄內容。

看 Linux 路徑每一層權限Linux

namei -l /var/www/app/config.yml

可找出是哪一層缺少 x 權限。

看 POSIX ACLLinux

getfacl /srv/share

ACL 可能讓實際權限超出 ls -l 的基本三組。

看目前 umaskLinux/macOS

umask

新檔權限會被 umask 扣除。

chmod 常用設定

一般文字檔設 644Linux/macOS

chmod 0644 app.conf

擁有者可讀寫,其他人唯讀;敏感檔不一定適用。

私密設定檔設 600Linux/macOS

chmod 0600 secrets.conf

只有擁有者可讀寫。

一般目錄設 755Linux/macOS

chmod 0755 public-dir

其他人可進入與讀清單,但不能寫。

私有目錄設 700Linux/macOS

chmod 0700 private-dir

只有擁有者可以進入與操作。

替腳本加執行權Linux/macOS

chmod u+x deploy.sh

只替擁有者增加 x,不改其他位元。

移除其他人的寫入權Linux/macOS

chmod o-w shared-file

符號模式較容易看出只改哪一部分。

讓群組可以寫目錄Linux/macOS

chmod g+rwx team-dir

仍要確認目錄群組正確。

讓新檔繼承目錄群組Linux/macOS

chmod g+s team-dir

setgid 套在目錄可讓新項目繼承群組。

擁有者、umask 與 ACL

修改擁有者Linux/macOS

chown appuser app.conf

通常需要擁有者或系統管理權限。

同時改擁有者與群組Linux/macOS

chown appuser:appgroup app.conf

macOS 與 Linux 都常見此格式。

只修改群組Linux/macOS

chgrp appgroup app.conf

不改擁有者。

遞迴改擁有者前先預覽Linux/macOS

find /srv/app -maxdepth 2 -printf '%u:%g %p\n' 2>/dev/null

GNU find 才有 -printf;macOS 可改用 find 搭配 ls。

設定較保守的 umaskLinux/macOS

umask 027

新建檔通常不給 others 權限;只影響目前 shell 與其子程序。

給單一帳號目錄讀寫執行Linux ACL

setfacl -m u:alice:rwx /srv/share

不改基本擁有者/群組;完成後 getfacl 驗證。

設定目錄預設 ACLLinux ACL

setfacl -m d:u:alice:rwx /srv/share

只影響之後新建項目,既有檔案不會自動變更。

移除單一 ACL 項目Linux ACL

setfacl -x u:alice /srv/share

先保存 getfacl 輸出,方便回復。

怎麼確認有做對

  • 用 ls -ld、stat 與 getfacl 重新讀取實際權限。
  • 以目標服務帳號做最小讀寫測試。
  • 確認 Web、備份與部署程序仍能工作,且不必要帳號無法寫入。

常見錯誤

  • 檔案與目錄全部套 777。
  • 遞迴 chown 跟進符號連結或改到掛載點外。
  • 只看 mode,忽略 ACL、SELinux 或 AppArmor。
  • 把服務需要讀取誤寫成服務需要擁有全部檔案。

版本與官方文件

參數會隨工具版本與作業系統實作改變。正式環境先用 --help、-h 或系統內建說明確認,再以當版官方文件為準。

聯絡廷皓討論 看更多文章