在多使用者(Multi-user)與伺服器環境中,資安防線的第一道關卡就是「檔案權限」。如果權限設定過於寬鬆(例如直接給予 777 權限),任何未授權的使用者或惡意程式都能隨意修改、刪除你的設定檔或資料庫;反之,若權限設定過緊,服務(如 Nginx、MySQL)可能就會因為「Permission denied」而無法正常運作。
因此掌握 chmod 與 chown 這兩大權限控制的方法極為重要
拆解 10 位元權限字串(rwxr-xr-x)
當我們執行 ls -l 時,最左側會看到一串 10 個字元的符號(例如 -rw-r--r-- 或 drwxr-xr-x),這 10 個位置代表不同的意義:
| 位元位置 | 意義 | 常見範例 | 說明 |
|---|---|---|---|
| 第 1 位 | 檔案類型 | -(普通檔案)d(目錄 Directory)l(連結檔 Link) | 區分這是檔案還是資料夾。 |
| 第 2~4 位 | Owner(擁有者權限) | rwx | 檔案建立者/擁有者擁有的權限。 |
| 第 5~7 位 | Group(群組權限) | r-x | 同一群組成員擁有的權限。 |
| 第 8~10 位 | Others(其他使用者權限) | r-- | 其他非擁有者且非群組成員的權限。 |
權限三大元素與二進位數字對照表
r (Read, 讀取)、w (Write, 寫入)、x (Execute, 執行) 在系統底層是以二進位表示,進而組合出我們常用的八進位數字表示法:
| 權限代碼 | 權限名稱 | 對應數值 | 對檔案的影響 | 對目錄的影響 |
|---|---|---|---|---|
| r | Read(讀取) | 4 | 可以檢視檔案內容(如 cat) | 可以列出目錄內的檔案清單(如 ls) |
| w | Write(寫入) | 2 | 可以修改檔案內容 | 可以新增、刪除、重新命名目錄內的檔案 |
| x | Execute(執行) | 1 | 可以將檔案當成程式/腳本執行 | 可以 cd 進入該目錄 |
權限數字計算範例:
rwx = 4 + 2 + 1 = 7(完全控制)rw- = 4 + 2 + 0 = 6(可讀寫、不可執行)r-x = 4 + 0 + 1 = 5(可讀與執行、不可修改)r-- = 4 + 0 + 0 = 4(唯讀)
常用設定:chmod 755 script.sh(擁有者 7: rwx,群組 5: r-x,其他人 5: r-x)。
權限與擁有者修改工具:chmod 與 chown
| 指令 | 英文全稱 | 常用語法與參數 | 實務應用情境與範例 |
|---|---|---|---|
| chmod | Change Mode | chmod 數字 檔案 或chmod u+x 檔案 | 修改檔案或目錄的讀寫執行權限。例:chmod +x deploy.sh(賦予執行權) |
| chown | Change Owner | chown 使用者:群組 檔案(加上 -R 可遞迴修改目錄) | 變更檔案的擁有者與所屬群組。例:sudo chown -R www-data:www-data /var/www |
權限提升與身份切換:sudo 與 su
在 Linux 中,最高管理者帳號稱為 root(俗稱 Superuser)。root 擁有系統的絕對控制權。
下圖為在 Multipass 虛擬機中,實際驗證 Linux 檔案權限修改(chmod)與執行權限變化的完整過程:
1.建立測試腳本與預設權限檢視:
建立 day04 資料夾並寫入測試腳本 test.sh。
執行 ls -l test.sh 查看預設權限為 -rw-rw-r--(代表沒有 x 執行權限)。
2.觸發權限拒絕(Permission denied):
直接執行 ./test.sh,系統提示 -bash: ./test.sh: Permission denied,驗證了缺少執行權限時無法執行程式。
3.賦予執行權限(chmod +x):
執行 chmod +x test.sh 為檔案加上執行權限,權限字串變更為 -rwxrwxr-x(檔名也變為綠色標示)。
再次執行 ./test.sh,成功在螢幕上印出 Hello Linux Day 04!。
4.使用數字表示法重置權限(chmod 644):
執行 chmod 644 test.sh 將權限精準設為 644(rw-r--r--)。
用 ls -l 確認權限已還原為擁有者可讀寫、其餘人僅可讀取,且剝奪了執行權限。