萬盛學電腦網

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

Linux chmod 命令詳解:權限模式、字符法/數字法、特殊權限、遞歸操作、ACL 入門

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 = 可執行

二、字符設定法(Symbolic Mode)


chmod [who][+|-|=][mode] 文件...
操作符含義範例效果
+增加權限chmod g+w file組加寫權限
-移除權限chmod o-x file其他去執行權限
=精確設置(覆蓋)chmod u=rx file擁有者恰為 r-x

多變更用逗號分隔:chmod ug+w,o-rx file

三、數字設定法(Octal Mode)

三位八進制數,順序 u g o,每位 = r(4)+w(2)+x(1)

範例:chmod 755 script.sh(擁有者全權、組/他讀執行)

四、特殊權限位(第 4 位八進制)

數字二進制權限典型場景
7111rwx腳本、可執行文件、目錄
6110rw-普通文件、配置文件
5101r-x只讀腳本、只讀目錄
4100r--只讀文件
0000---無權限

設置範例:chmod 4755 /usr/local/bin/myapp(SUID)、chmod 2775 /shared(SGID)、chmod 1777 /tmp(Sticky)

五、常用參數

位八進制字符位對象效果
SUID4擁有者 x 位顯示 s可執行文件執行時進程擁有者 = 文件擁有者(如 /usr/bin/passwd)
SGID2組 x 位顯示 s可執行文件/目錄文件:進程組 = 文件組;目錄:新建文件繼承目錄組
Sticky1其他 x 位顯示 t目錄僅擁有者/root 可刪除文件(如 /tmp)
參數說明
-R, --recursive遞歸修改目錄樹
-v, --verbose顯示變更詳情
-c, --changes僅顯示被修改的
-f, --silent抑制錯誤
--reference=文件同步參考文件權限

六、實戰範例

  • 給所有用戶加執行權:chmod a+x script.sh
  • 去除所有執行權:chmod a-x file.txt
  • 擁有者 rwx、組 rw、其他 r:chmod 764 file 或 chmod u=rwx,g=rw,o=r file
  • 遞歸給目錄 755、文件 644(經典 Web 部署):
    find /var/www -type d -exec chmod 755 {} +
    find /var/www -type f -exec chmod 644 {} +
  • 參考文件同步:chmod --reference=ref.conf target.conf

七、ACL 進階權限(突破 u/g/o 限制)

當需要「特定用戶/組」擁有不同權限時,啟用 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--+

chmod 權限模型示意圖

copyright © 萬盛學電腦網 all rights reserved