Linux 權限管理基本功:sudo 同 chmod 點樣保護你嘅伺服器
做 IT 嘅朋友一定聽過一句話:「權限係 Linux 安全嘅第一道防線」。無論你管緊一部 VPS 定係成個數據中心,Linux 權限管理都係最基本亦係最重要嘅安全措施。今日就同大家由淺入深,拆解 sudo 同 chmod 嘅正確用法。
👉 延伸閱讀:Linux Server 安全加固 6 步搞掂 — Defense in Depth 實戰指南
點解 Linux 權限管理咁重要?
想像下:你公司有個 junior admin,佢只需要重啟 Apache,但係你俾咗 root 密碼佢。有一日佢唔小心打咗 rm -rf /⋯⋯你明嘅。呢個就係點解Linux 權限管理咁關鍵 — 唔係唔信人,而係要將風險降到最低。
Linux 嘅權限模型分三個層次:使用者(owner)、羣組(group)、其他人(others)。每個檔案同目錄都有 read(r)、write(w)、execute(x)三種權限。理解呢個模型係做好Linux 權限管理嘅第一步。
chmod 實戰:數字模式 vs 符號模式
chmod 有兩種寫法,數字模式(octal)最常用:
# 數字模式 — 最直接
chmod 755 script.sh # owner=rwx, group=r-x, others=r-x
chmod 644 config.ini # owner=rw-, group=r--, others=r--
chmod 600 id_rsa # owner=rw-, group=---, others=---
# 符號模式 — 更靈活
chmod u+x deploy.sh # 俾 owner 加 execute 權限
chmod g-w shared.txt # 移除 group 嘅 write 權限
chmod o= report.csv # 清空 others 所有權限
記住呢個口訣:4=read, 2=write, 1=execute,加埋就係你想要嘅權限。例如 7 = 4+2+1 = rwx,5 = 4+1 = r-x。
實戰貼士:chmod 777 係大忌!除非你 100% 肯定冇安全風險,否則永遠唔好用 777。網上好多教學叫你 chmod 777 解決問題,嗰啲係斬腳趾避沙蟲。
sudo 進階設定:visudo 同 sudoers 規則
sudo 唔係淨係「用 admin 身份行指令」咁簡單。透過 /etc/sudoers 你可以做到極精細嘅Linux 權限管理:
# 編輯 sudoers(一定要用 visudo!)
sudo visudo
# 常用規則範例
# 俾 john 重啟 Apache,唔需要密碼
john ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart apache2
# 俾 dev 羣組行特定 script
%dev ALL=(ALL) /opt/deploy/deploy.sh
# 限制只可以以特定 user 身份行
deployer ALL=(www-data) /usr/bin/git pull
重點:一定要用 visudo 而唔係直接 edit /etc/sudoers!visudo 會幫你檢查語法,避免你 save 咗個錯嘅 sudoers file 之後 lock 死自己。
真實案例:權限配置不當導致嘅災難
上年有個客户嘅 WordPress 網站俾人 hack,原因係 uploads 目錄 set 咗 777,攻擊者 upload 咗一個 PHP webshell 就直接攞到 www-data 權限。如果當初 set 755(directory)同 644(files),再加埋正確嘅 ownership(www-data:www-data),呢個攻擊根本唔會成功。
另一個案例:有間 startup 嘅 DevOps 為咗方便,將成個 team 嘅 sudoers 設成 ALL=(ALL) NOPASSWD: ALL。結果有個同事嘅 laptop 俾人偷咗,SSH key 冇 passphrase,攻擊者直接攞到 root 權限。呢個就係Linux 權限管理做得唔好嘅代價。
最佳實踐 Checklist
做好Linux 權限管理,記住以下幾點:
- ✅ 用
chmod 750俾 directory,640俾 files(default 安全設定) - ✅ 永遠唔好用 777,除非你知自己做緊乜
- ✅ sudoers 規則要精細,唔好俾
ALL=(ALL) ALL - ✅ 定期 audit:
find / -perm /o=w -type f 2>/dev/null揾出 world-writable files - ✅ 用
sudo -l檢查當前 user 有咩 sudo 權限 - ✅ 敏感 files(SSH keys、configs)一定要
chmod 600 - ✅ 考慮用
setfacl做更精細嘅 ACL 控制
🔗 參考資料:NVD NIST 漏洞資料庫
記住:權限設定唔係一次性工作,而係持續嘅安全實踐。每次 deploy 新服務、加新 user,都要重新審視權限係咪合理。做好Linux 權限管理,你嘅伺服器就已經安全咗一大半。
#IT教學 #Linux #技術分享 #安全



