Linux 檔案權限完全攻略:chmod、chown、umask 一次搞掂

# Linux 檔案權限完全攻略:chmod、chown、umask 一次搞掂 成日聽人講 Linux 權限好重要,但係 chmod 777 係咩意思?rwx 又係咩嚟?今日就同大家由零開始,拆解 Linux 檔案權限嘅運作原理,等你以後唔使再靠估。 ## 咩係 Linux 檔案權限? Linux 係一個多用戶作業系統,同一部機可以同時有 root、普通用戶、服務帳號一齊行。為咗防止用戶 A 睇到...

# Linux 檔案權限完全攻略:chmod、chown、umask 一次搞掂

成日聽人講 Linux 權限好重要,但係 chmod 777 係咩意思?rwx 又係咩嚟?今日就同大家由零開始,拆解 Linux 檔案權限嘅運作原理,等你以後唔使再靠估。

## 咩係 Linux 檔案權限?

Linux 係一個多用戶作業系統,同一部機可以同時有 root、普通用戶、服務帳號一齊行。為咗防止用戶 A 睇到用戶 B 嘅機密檔案,Linux 設計咗一套權限系統,每個檔案同目錄都有三組權限設定。

用 `ls -l` 就可以睇到:

$ ls -l
-rwxr-xr-- 1 terry staff 4096 Jun 29 13:00 script.sh
drwxr-x--- 2 terry staff 4096 Jun 29 12:00 private_folder

第一欄嗰串 `-rwxr-xr–` 就係權限標記,拆開嚟睇:

| 位置 | 意思 |
|——|——|
| 第 1 位 | 檔案類型(`-`=檔案, `d`=目錄, `l`=symlink) |
| 第 2-4 位 | **擁有者 (Owner)** 權限 |
| 第 5-7 位 | **群組 (Group)** 權限 |
| 第 8-10 位 | **其他人 (Others)** 權限 |

## rwx 三種權限詳解

每個位置有三種可能:

– **r (read)** = 讀取權限,數值 = 4
– **w (write)** = 寫入權限,數值 = 2
– **x (execute)** = 執行權限,數值 = 1
– **- (none)** = 冇權限,數值 = 0

所以 `rwx` = 4+2+1 = **7**,`rw-` = 4+2 = **6**,`r–` = 4,`–x` = 1。

呢個就係 chmod 數字模式嘅由來!

## chmod 實戰:數字模式 vs 符號模式

### 數字模式(最常用)

# 擁有者 rwx,群組 r-x,其他人 r--
chmod 754 script.sh

# 全部人 rwx(極度危險!唔好亂用!)
chmod 777 public_share/

# 常見安全設定:擁有者 rw,群組 r,其他人無權限
chmod 640 config.conf

# 私密檔案:只有擁有者可以讀寫
chmod 600 id_rsa

### 符號模式(更精細控制)

# 加執行權限俾所有人
chmod +x script.sh

# 加寫入權限俾群組
chmod g+w report.txt

# 移除其他人嘅讀取權限
chmod o-r secret.txt

# 精確設定:擁有者=rwx,群組=rx
chmod u=rwx,g=rx secret_folder/

## chown:改檔案擁有者

當你需要將檔案交俾另一個用戶或者服務嘅時候:

# 改擁有者
sudo chown www-data uploads/

# 改擁有者 + 群組
sudo chown terry:developers project/

# 遞迴改整個目錄
sudo chown -R www-data:www-data /var/www/html/

## umask:預設權限遮罩

你有冇發現新建立嘅檔案預設權限係 `644`,目錄係 `755`?呢個係 umask 嘅功勞。

# 睇目前 umask
$ umask
0022

# 計算公式:預設權限 - umask = 實際權限
# 檔案預設 666 - 022 = 644 (rw-r--r--)
# 目錄預設 777 - 022 = 755 (rwxr-xr-x)

# 暫時改 umask(更安全,新檔案預設 600)
umask 077

## 特殊權限:SUID、SGID、Sticky Bit

除咗基本 rwx,仲有三個特殊權限:

# SUID (4xxx):執行時以檔案擁有者身份執行
chmod 4755 /usr/bin/passwd
# ls -l 會顯示 -rwsr-xr-x(注意 s 取代咗 x)

# SGID (2xxx):執行時以群組身份執行;目錄下新檔案繼承目錄群組
chmod 2775 shared_project/
# ls -l 會顯示 drwxrwsr-x

# Sticky Bit (1xxx):只有檔案擁有者可以刪除(常用於 /tmp)
chmod 1777 /tmp
# ls -l 會顯示 drwxrwxrwt(注意 t 取代咗 x)

## 實用技巧:快速檢查同修復權限

# 搵出權限太鬆嘅檔案(others 有 write)
find /var/www -perm -o+w -type f

# 搵出冇權限嘅目錄
find /home -type d ! -perm -755

# 批量修復 WordPress 權限
find /var/www/html -type d -exec chmod 755 {} \;
find /var/www/html -type f -exec chmod 644 {} \;

# 檢查 SSH key 權限(必須係 600!)
stat -c "%a %n" ~/.ssh/id_rsa

## 常見錯誤同解決方法

**錯誤 1:Permission denied**

# 原因:冇 read 或 execute 權限
# 解決:檢查 ls -l,用 chmod 加返權限

**錯誤 2:Cannot execute binary file**

# 原因:冇 execute 權限
chmod +x ./program

**錯誤 3:SSH 話 “Permissions 0644 are too open”**

# 原因:private key 權限太鬆
chmod 600 ~/.ssh/id_rsa

## 總結

Linux 權限係系統安全嘅第一道防線。記住幾個黃金法則:

1. **最小權限原則**:只俾必要嘅權限,唔好貪方便 chmod 777
2. **SSH key 一定要 600**,唔係 SSH 會拒絕連接
3. **Web 目錄**:檔案 644,目錄 755,upload 目錄要小心設定
4. **定期審計**:用 `find` 檢查異常權限

🔗 參考資料:NVD NIST 漏洞資料庫

掌握咗 chmod、chown、umask 呢三件法寶,你嘅 Linux 伺服器安全就已經上咗一個層次。下次再同大家分享更多 Linux 管理技巧!

#IT教學 #SSH #技術分享 #Linux #安全

Linux 檔案權限完全攻略:chmod、chown、umask 一次搞掂 - 文章重點速覽 infographic