Linux 檔案權限管理教學:從入門到精通嘅實戰指南

# Linux 檔案權限管理教學:從入門到精通嘅實戰指南 今日同大家分享一個 IT 人必定要識嘅基本功 — **Linux權限** 管理。無論你係 DevOps、SRE 定係後端 developer,Linux權限 都係每日對住嘅嘢。可惜好多人只係識 `chmod 777` 一招走天涯,呢個習慣其實好危險。今日呢篇教學會由淺入深,帶你掌握 Linux權限 嘅核心概念同實戰技巧。 ## Linux權...

Linux 檔案權限管理教學:從入門到精通嘅實戰指南 - 文章重點速覽 infographic

Linux 檔案權限管理教學:從入門到精通嘅實戰指南

今日同大家分享一個 IT 人必定要識嘅基本功 — **Linux權限** 管理。無論你係 DevOps、SRE 定係後端 developer,Linux權限 都係每日對住嘅嘢。可惜好多人只係識 `chmod 777` 一招走天涯,呢個習慣其實好危險。今日呢篇教學會由淺入深,帶你掌握 Linux權限 嘅核心概念同實戰技巧。

Linux權限嘅基本概念:rwx 係咩嚟㗎?

Linux 系統入面,每一個檔案同目錄都有三組 **Linux權限** 設定,分別對應三種角色:

| 角色 | 縮寫 | 說明 |
|——|——|——|
| Owner (擁有者) | u | 檔案嘅建立者 |
| Group (群組) | g | 所屬群組嘅成員 |
| Others (其他人) | o | 上面兩種以外嘅所有人 |

每一組 Linux權限 由三個字母組成:`r`(read 讀取)、`w`(write 寫入)、`x`(execute 執行)。用 `ls -l` 就可以睇到:

ls -l /etc/passwd
# -rw-r--r-- 1 root root 3152 Jun  3 10:00 /etc/passwd

呢行嘅第一個欄位 `-rw-r–r–` 就係 **Linux權限** 字串。拆開佢:

– 第一個 `-`:普通檔案(`d` 就係 directory)
– `rw-`:owner (root) 有 read + write 權限
– `r–`:group 有 read 權限
– `r–`:others 有 read 權限

Linux權限數字模式:chmod 數字點計出嚟?

好多人都知 `chmod 755`、`chmod 644` 呢啲數字模式,但唔知背後點計。其實好簡單 — 每個 Linux權限 對應一個數字:

# r = 4
# w = 2
# x = 1
# 加埋就係你見到嘅數字

# 例如:
# rwx = 4+2+1 = 7
# rw- = 4+2+0 = 6
# r-x = 4+0+1 = 5
# r-- = 4+0+0 = 4

常用嘅 Linux權限 組合:

chmod 755 script.sh    # owner:rwx, group:r-x, others:r-x (可執行 script)
chmod 644 config.ini   # owner:rw-, group:r--, others:r-- (一般設定檔)
chmod 600 id_rsa       # owner:rw-, group:---, others:--- (SSH 私鑰)
chmod 750 /var/log/app # owner:rwx, group:r-x, others:--- (應用程式日誌)

⚠️ **千祈唔好用 `chmod 777`!** 等於俾全世界讀寫執行你嘅檔案,係好嚴重嘅安全漏洞。特別係 web server 上面,777 嘅 upload folder 等於俾黑客任意寫入惡意 script。

Linux權限實戰:chown 同特殊權限

除咗 `chmod`,`chown` 都係 Linux權限 管理嘅重要工具:

# 改擁有者
chown john app.log

# 改擁有者+群組
chown john:developers app.log

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

仲有三個特殊 Linux權限 你要識:

# SUID (Set User ID) — 執行時用 owner 身份
chmod u+s /usr/bin/passwd
# 見到 ls -l 會顯示 rws 而唔係 rwx

# SGID (Set Group ID) — 檔案繼承目錄嘅 group
chmod g+s /shared/project/
# 任何人喺呢個目錄開新檔案,group 都會自動跟返目錄設定

# Sticky Bit — 只准 owner 刪除自己嘅檔案
chmod +t /tmp
# 見到 ls -ld /tmp 會顯示 rwxrwxrwt(最尾係 t)

Linux權限排查大法:搵出權限問題

日常工作中遇到 “Permission denied”,你要識得快速排查 Linux權限 問題:

# 第一步:睇檔案嘅權限
ls -la /path/to/file

# 第二步:睇你而家係咩身份
whoami
id

# 第三步:睇你屬於咩 group
groups

# 第四步:檢查父目錄權限(目錄冇 x 權限 = 入唔到去!)
ls -ld /path/to /path

記住一個重點:**要讀取檔案,你唔只需要檔案本身嘅 r 權限,仲需要所有父目錄嘅 x(執行)權限!** 呢個係新手最常忽略嘅 Linux權限 細節。

# 例如 /var/www/html/index.html
# 就算 index.html 係 777
# 如果 /var/www 係 700(owner 先入到)
# 你用 nobody 身份一樣 access 唔到
# 因為你入唔到 /var/www 呢個目錄!

Linux權限進階:ACL 精細控制

基本 Linux權限 只支援一個 owner + 一個 group,如果你需要俾特定 user 額外權限,就要用到 ACL:

# 安裝 ACL(大部分 distribution 預設有)
sudo apt install acl    # Debian/Ubuntu
sudo yum install acl    # RHEL/CentOS

# 俾 user 'mary' read 權限
setfacl -m u:mary:r /etc/app/config.yml

# 俾 group 'auditors' read+execute
setfacl -m g:auditors:rx /opt/scripts/

# 查看 ACL 設定
getfacl /etc/app/config.yml
# 有 "+" 號嘅檔案代表有 ACL:
# -rw-r--r--+ 1 root root 3152 ...

# 移除 ACL
setfacl -b /etc/app/config.yml

ACL 係 Linux權限 嘅強大擴展,喺 multi-tenant server 環境入面特別有用,唔使下下靠 `chmod` 同 group 去模擬複雜嘅權限結構。

總結:Linux權限管理最佳實踐

管理 Linux權限 有幾個原則要記住:

1. **最小權限原則** — 只俾佢需要嘅權限,唔好貪方便用 `777`
2. **定期審計** — 用 `find` 檢查異常權限:

   # 搵出所有 world-writable 檔案
   find /etc /var -type f -perm -o+w 2>/dev/null
   # 搵出所有 SUID 檔案
   find / -type f -perm -4000 2>/dev/null

3. **umask 設定** — 喺 `/etc/profile` 或 `~/.bashrc` 設定預設權限:

   umask 022  # 新檔案預設 644, 新目錄 755
   umask 027  # 新檔案預設 640, 新目錄 750(更安全)

4. **文檔化** — 記低邊個目錄用咩 Linux權限 同原因,方便 team member 接手

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

Linux權限 係系統安全嘅第一道防線。掌握咗上面嘅概念同指令,你嘅 server 就唔會因為權限設定不當而中門大開。下次遇到 Permission denied,你唔會再盲目 `chmod 777`,而係有系統咁去排查同解決問題!

#Linux #Linux權限 #系統管理 #資訊安全 #DevOps