chmod(Change Mode)控制文件/目錄的讀/寫/執行權限,是 Linux 權限管理的基石。本文系統講解權限模型、字符設定法與數字設定法、特殊權限、遞歸操作、參考文件同步、ACL 進階權限,並給出生產環境常見配置模板。
-rwxrw-r-- 1 alice dev 4096 Jan 1 10:00 script.sh
│││││││││
││││││└─── 其他:r--
│││││└───── 同組:rw-
││││└────── 擁有者:rwx
│││└─────── 文件類型:- 普通、d 目錄、l 鏈接...
└└└└─────── 保留位
user(擁有者)、group(同組)、others(其他)、all(全部)read(4)、write(2)、execute(1)x = 可 cd 進入、訪問目錄項;文件 x = 可執行
chmod [who][+|-|=][mode] 文件...
| 操作符 | 含義 | 範例 | 效果 |
|---|---|---|---|
+ | 增加權限 | chmod g+w file | 組加寫權限 |
- | 移除權限 | chmod o-x file | 其他去執行權限 |
= | 精確設置(覆蓋) | chmod u=rx file | 擁有者恰為 r-x |
多變更用逗號分隔:chmod ug+w,o-rx file
三位八進制數,順序 u g o,每位 = r(4)+w(2)+x(1)
| 數字 | 二進制 | 權限 | 典型場景 | |
|---|---|---|---|---|
| 7 | 111 | rwx | 腳本、可執行文件、目錄 | |
| 6 | 110 | rw- | 普通文件、配置文件 | |
| 5 | 101 | r-x | 只讀腳本、只讀目錄 | |
| 4 | 100 | r-- | 只讀文件 | |
| 0 | 000 | --- | 無權限 |
| 位 | 八進制 | 字符位 | 對象 | 效果 |
|---|---|---|---|---|
| SUID | 4 | 擁有者 x 位顯示 s | 可執行文件 | 執行時進程擁有者 = 文件擁有者(如 /usr/bin/passwd) |
| SGID | 2 | 組 x 位顯示 s | 可執行文件/目錄 | 文件:進程組 = 文件組;目錄:新建文件繼承目錄組 |
| Sticky | 1 | 其他 x 位顯示 t | 目錄 | 僅擁有者/root 可刪除文件(如 /tmp) |
| 參數 | 說明 |
|---|---|
-R, --recursive | 遞歸修改目錄樹 |
-v, --verbose | 顯示變更詳情 |
-c, --changes | 僅顯示被修改的 |
-f, --silent | 抑制錯誤 |
--reference=文件 | 同步參考文件權限 |
chmod a+x script.shchmod a-x file.txtchmod 764 file 或 chmod u=rwx,g=rw,o=r filefind /var/www -type d -exec chmod 755 {} +find /var/www -type f -exec chmod 644 {} +chmod --reference=ref.conf target.conf當需要「特定用戶/組」擁有不同權限時,啟用 ACL:
# 掛載選項加 acl(現代文件系統預設開啟)
setfacl -m u:bob:rw file.txt # 給 bob 讀寫
setfacl -m g:devops:rwx dir/ # 給 devops 組 rwx
setfacl -d -m g:devops:rwx dir/ # 默認 ACL(新文件繼承)
getfacl file.txt # 查看 ACL
setfacl -x u:bob file.txt # 移除 bob 的 ACL
ls -l 顯示 + 標記表示有 ACL:-rw-rw-r--+
