Linux 的檔案權限機制比 Windows 更嚴格有效。Windows 下不同使用者仍可透過某些方式互訪檔案,而 Linux 採用離散式存取控制 (DAC),嚴格區分三類主體與三種權限,構成完整的保護矩陣。
權限主體:三類互斥對象
- user (u):檔案擁有者,通常為建立者。
- group (g):檔案擁有者所屬群組的其他成員(不含擁有者本身)。
- other (o):除擁有者與群組成員外的所有其他使用者。
權限類型:三個二進制位元
| 位元 | 權限 | 符號 | 數值 | 對檔案意義 | 對目錄意義 |
| 第 1 位 | 讀取 | r | 4 (100) | 可讀取檔案內容 | 可列出目錄檔名 (ls) |
| 第 2 位 | 寫入 | w | 2 (010) | 可修改檔案內容 | 可在目錄建立/刪除/重命名檔案 |
| 第 3 位 | 執行 | x | 1 (001) | 可執行程式/腳本 | 可進入目錄 (cd)、存取目錄內檔案 |
查看權限:ls -l 輸出解讀
第一欄共 10 個字元,例如 drwxr-xr--:
- 第 1 字元:
d = 目錄,- = 一般檔案,l = 符號連結等。
- 第 2-4 字元:擁有者 (user) 權限 (rwx)。
- 第 5-7 字元:群組 (group) 權限 (rwx)。
- 第 8-10 字元:其他人 (other) 權限 (rwx)。
- 表示無該權限 (值 0)。
修改權限:chmod 指令
語法:chmod [ugoa][+-=][rwx] 檔案/目錄
| 代碼 | 對象 |
| u | user (擁有者) |
| g | group (群組) |
| o | other (其他人) |
| a | all (全部,等同 ugo) |
| 運算子 | 動作 |
| + | 增加權限 |
| - | 移除權限 |
| = | 設定為唯一權限 (覆蓋) |
範例
chmod u+x script.sh:給擁有者加上執行權限。
chmod go-w file.txt:移除群組與其他人的寫入權限。
chmod a=rwx directory:所有人擁有完整權限 (等同 777)。
數字權限表示法 (八進位)
將三組 rwx 換算為三位八進位數字:
rwx = 4+2+1 = 7
rw- = 4+2+0 = 6
r-x = 4+0+1 = 5
r-- = 4+0+0 = 4
常見組合:
| 符號權限 | 數字權限 | 說明 |
-rw------- | 600 | 僅擁有者可讀寫 |
-rw-r--r-- | 644 | 擁有者讀寫,群組/其他人唯讀 (常見網頁檔案) |
-rwx------ | 700 | 僅擁有者可讀寫執行 (私有腳本) |
-rwxr-xr-x | 755 | 擁有者全權,群組/其他人讀執行 (常見可執行檔/目錄) |
-rwx--x--x | 711 | 擁有者全權,群組/其他人僅執行 |
-rw-rw-rw- | 666 | 所有人可讀寫 (不安全) |
-rwxrwxrwx | 777 | 所有人全權限 (極度不建議) |
進階提示
- 目錄的
x 權限極關鍵:無 x 則無法 cd 進入,也無法存取裡頭檔案(即使有 r)。
umask 決定預設建立檔案/目錄的權限遮罩(預設常為 022,即檔案 644、目錄 755)。
- 特殊權限:
setuid (4)、setgid (2)、sticky bit (1),用於特定執行情境(如 passwd、共享目錄)。
copyright ©
萬盛學電腦網 all rights reserved