chmod 指令- 修改檔案目錄權限

在 Linux 或其他 Unix 作業系統, 每個檔案及目錄都會有一個權限, 這個權限會定義誰可以存取, 寫入及執行該檔案。

一般上權限的數值分為 3 組, 分別是 owner, 群組用戶, 其他用戶, 這 3 組權限可以用數字或者英文字代號設定, 以下是各數字及字母伐號的意思:

r: 可讀權限, 數字是 4
w: 寫入權限, 數字是 2
x: 執行權限, 數字是 1
-: 刪除權限, 數字是 0
s: setuid 權限

例如我要設定檔案 testfile.txt 的權限, owner 可以讀/寫/執行; 群組用戶可以讀/執行; 其他用戶只可以讀, 指令是這樣:

$ chmod u=rwx,g=rx,o=r testfile.txt

如果覺得上面的語法很麻煩, 可以用數字代替字母代號:

$ chmod 754 testfile.txt

上面看到有 3 組數字, 分別是代表 owner (7); 群組用戶 (5); 其他用戶 (4)。而這個 754 是這樣算出的:

7 = 4 (讀) + 2 (寫) + 1 (執行)
5 = 4 (讀) + 1 (執行)
4 = 4 (讀)


以下是 chmod 其他一些使用例子:

設定 testfile.txt 的權限為: owner 可讀/寫/執行; 群組用戶可讀; 其他用戶可讀:

$ chmod 644 testfile.txt

設定 testfile.txt 的權限為: owner 可讀/寫, 群組用戶及其他用戶的權限不變:

$ chmod u=rw testfile.txt

一般 CGI 程式要用 755, 表示設定 test.cgi 的權限為: owner 可讀/寫/執行, 群組用戶及其他用戶可讀/執行:

$ chmod 755 test.cgi

一般 PHP 及 CGI 程式要上傳檔案或寫入檔案, 要將目錄設定 777, owner, 群組用戶及其他用戶可讀/寫/執行:

$ chmod 777 uploads

使用 s 是 setuid 權限, 所有人存取樣案 testfile.txt 會用 owner 的身份, 如果這個用在可執行的 root 用戶檔案很危險:

$ chmod u+s testfile.txt

將檔案 testfile.txt 的 setuid 權限刪除:

$ chmod u-s testfile.txt


Leave a Reply