2016年3月25日 星期五

在 Linux 或其他 Unix 作業系統, 每個檔案及目錄都會有一個權限, 這個權限會定義誰可以存取, 寫入及執行該檔案。
一般上權限的數值分為 3 組, 分別是 owner, 群組用戶, 其他用戶, 這 3 組權限可以用數字或者英文字代號設定, 以下是各數字及字母伐號的意思:
r: 可讀權限, 數字是 4
w: 寫入權限, 數字是 2
x: 執行權限, 數字是 1
-: 刪除權限, 數字是 0
s: setuid 權限
例如我要設定檔案 file.txt 的權限, owner 可以讀/寫/執行; 群組用戶可以讀/執行; 其他用戶只可以讀, 指令是這樣:
$ chmod u=rwx,g=rx,o=r file.txt
如果覺得上面的語法很麻煩, 可以用數字代替字母代號:
$ chmod 754 file.txt
上面看到有 3 組數字, 分別是代表 owner (7); 群組用戶 (5); 其他用戶 (4)。而這個 754 是這樣算出的:
7 = 4 (讀) + 2 (寫) + 1 (執行)
5 = 4 (讀) + 1 (執行)
4 = 4 (讀)
以下是 chmod 其他一些使用例子:
設定 file.txt 的權限為: owner 可讀/寫/執行; 群組用戶可讀; 其他用戶可讀:
$ chmod 644 file.txt
設定 file.txt 的權限為: owner 可讀/寫, 群組用戶及其他用戶的權限不變:
$ chmod u=rw file.txt
一般 CGI 程式要用 755, 表示設定 test.cgi 的權限為: owner 可讀/寫/執行, 群組用戶及其他用戶可讀/執行:
$ chmod 755 test.cgi
一般 PHP 及 CGI 程式要上傳檔案或寫入檔案, 要將目錄設定 777, owner, 群組用戶及其他用戶可讀/寫/執行:
$ chmod 777 uploads
使用 s 是 setuid 權限, 所有人存取樣案 file.txt 會用 owner 的身份, 如果這個用在可執行的 root 用戶檔案很危險:
$ chmod u+s file.txt
將檔案 file.txt 的 setuid 權限刪除:
$ chmod u-s file.txt

沒有留言:

張貼留言