chmod — 變更檔案或目錄的存取權限

修改檔案或目錄的擁有者、群組與其他人的讀/寫/執行權限。

語法

chmod [選項] 模式 檔案...

常用選項

選項 說明 範例
-R, --recursive 遞迴套用到目錄及其所有內容 chmod -R 755 /var/www/
-v, --verbose 顯示每個已處理的檔案 chmod -v 644 config.txt
-c, --changes 只顯示有實際變更的檔案 chmod -c 644 *.txt
--reference=檔 使用參考檔的權限作為模式 chmod --reference=model.txt file.txt

使用範例

範例 1:數字模式:設定 755 權限

755 = rwxr-xr-x:擁有者可讀/寫/執行,群組和其他人可讀/執行。適合目錄與可執行腳本。 • 7 (rwx) = 4+2+1 = 擁有者 • 5 (r-x) = 4+0+1 = 群組 • 5 (r-x) = 4+0+1 = 其他人

$ chmod 755 deploy.sh
範例 2:數字模式:設定 644 權限

644 = rw-r--r--:擁有者可讀/寫,群組和其他人只可讀。適合一般設定檔與資料檔。

$ chmod 644 config.yml
範例 3:符號模式:新增執行權限

u+x 表示給擁有者(u)新增(+)執行(x)權限,不影響其他已有的權限。

$ chmod u+x script.sh
範例 4:符號模式:移除寫入權限

go-w 表示移除群組(g)和其他人(o)的寫入(w)權限。

$ chmod go-w sensitive.conf
範例 5:符號模式:給所有人新增讀取權限

a+r(或 +r)表示給所有人(a = u+g+o)新增讀取(r)權限。

$ chmod a+r public-readme.txt
範例 6:遞迴設定目錄權限

遞迴套用到整個 /var/www/html 目錄,適合設定 Web 伺服器根目錄。

$ chmod -R 755 /var/www/html/
注意:通常應避免對私密設定檔使用 755,以免敏感內容被其他使用者讀取。
範例 7:設定私密金鑰檔案權限

600 = rw-------:只有擁有者可讀/寫,其他任何人都無法存取。SSH 私鑰必須如此設定。

$ chmod 600 ~/.ssh/id_rsa

常見錯誤與排錯

chmod: changing permissions of 'file': Operation not permitted
原因
沒有修改此檔案權限的權力(非擁有者也非 root)。
解法
使用 sudo chmod,或以檔案擁有者身份執行。
WARNING: UNPROTECTED PRIVATE KEY FILE! (ssh 連線時出現)
原因
SSH 私鑰檔案的權限過於開放(應為 600,不可被他人讀取)。
解法
執行 chmod 600 ~/.ssh/id_rsa 修復私鑰權限。

延伸閱讀