Linux 檔案權限 chmod 實戰教學:一次搞掂讀寫執行

Linux 檔案權限 chmod 實戰教學:一次搞掂讀寫執行 好多新手接觸 Linux 伺服器,第一件撞板嘅嘢通常唔係裝唔到套件,而係「Permission denied」。想改個 config 檔改唔到、想行個 script 行唔到、想入個資料夾入唔到,最後一係亂咁 sudo,一係 chmod 777 一了百了。呢篇就用粵語同你逐層拆解 Linux 檔案權限,等你以後唔使再靠估。 點解要識 ch...

Linux 檔案權限 chmod 實戰教學:一次搞掂讀寫執行

好多新手接觸 Linux 伺服器,第一件撞板嘅嘢通常唔係裝唔到套件,而係「Permission denied」。想改個 config 檔改唔到、想行個 script 行唔到、想入個資料夾入唔到,最後一係亂咁 sudo,一係 chmod 777 一了百了。呢篇就用粵語同你逐層拆解 Linux 檔案權限,等你以後唔使再靠估。

點解要識 chmod?

Linux 係一個多用戶系統,伺服器上面可能同時有 root、你自己、其他服務賬戶(例如 nginx、mysql)一齊讀寫檔案。權限系統嘅目的就係保證每個用戶只可以掂到自己應該掂到嘅嘢。如果一味 chmod 777(所有人都可以讀寫執行),等於將屋企大門同夾萬嘅鎖匙全部擺喺門口,有安全漏洞都係自己惹返嚟。

基本概念:三組權限 × 三種動作

Linux 每個檔案或者資料夾,都會有三組權限,分別對應三類人:

– Owner(擁有者):建立檔案嗰個用戶
– Group(群組):同一個群組嘅用戶
– Others(其他人):其餘所有用戶

而每組權限又分三種動作:

符號 意思 對檔案嘅作用 對資料夾嘅作用
r Read 讀 可以睇內容 可以列出入面嘅檔案
w Write 寫 可以修改內容 可以新增/刪除檔案
x eXecute 執行 可以當程式執行 可以進入(cd)呢個資料夾

用 `ls -l` 睇檔案,最前頭嗰串字就係權限,例如:

-rwxr-xr-x 1 terry staff 4096 Nov 3 13:30 deploy.sh

拆開嚟睇:

– 第一個字 `-`:代表普通檔案(`d` 係資料夾,`l` 係 symbolic link)
– `rwx`:Owner 有讀、寫、執行
– `r-x`:Group 有讀、執行,冇寫
– `r-x`:Others 有讀、執行,冇寫

chmod 兩種寫法:數字同符號

方法一:數字模式(Octal)

將 r、w、x 當成二進制位元,r=4、w=2、x=1,加埋就係一個數字:

chmod 755 deploy.sh   # owner=rwx(7), group=r-x(5), others=r-x(5)
chmod 644 config.txt  # owner=rw-(6), group=r--(4), others=r--(4)
chmod 600 id_rsa      # 私鑰:只有 owner 可以讀寫,最安全

常用組合記住呢幾個就夠用:

– 755:script 或資料夾,人人可讀可執行,但得 owner 可以改
– 644:一般 config 檔,人人可讀,得 owner 可以寫
– 600:敏感檔案(私鑰、密碼檔),只有 owner 掂得
– 700:私人 script 或資料夾,只有 owner 用得到

方法二:符號模式(Symbolic)

用 `u`(user/owner)、`g`(group)、`o`(others)、`a`(all)配合 `+`、`-`、`=` 去加減權限:

chmod u+x deploy.sh     # 加返 owner 執行權
chmod g-w config.txt    # 移除 group 寫權
chmod o= readme.txt     # others 所有權限清空
chmod a+r public.html   # 所有人加讀權

遞迴改權限:-R 要小心用

想一次過改成個資料夾連入面所有嘢,用 `-R`:

chmod -R 755 /var/www/html

但係要小心:資料夾需要 `x` 權先可以進入,檔案一般唔需要 `x`。如果成個資料夾統一 755,普通檔案都會變咗可執行,唔係最佳做法。更好嘅做法係分開處理:

# 資料夾全部 755,檔案全部 644
find /var/www/html -type d -exec chmod 755 {} \;
find /var/www/html -type f -exec chmod 644 {} \;

進階:chown 改擁有者 + chgrp 改群組

權限啱,但擁有者錯,一樣會撞板。例如 nginx 服務要讀網站檔案,但你用 root 建立咗個檔案:

chown www-data:www-data /var/www/html/index.html   # 改擁有者同群組
chown -R terry:staff /home/terry/project            # 遞迴改
chgrp developers deploy.sh                          # 只改群組

實戰:部署一個網站嘅正確權限設定

假設你要部署一個網站,用戶係 `www-data`,目錄係 `/var/www/myapp`。正確做法:

# 1. 建立目錄並設定擁有者
sudo mkdir -p /var/www/myapp
sudo chown www-data:www-data /var/www/myapp

2. 目錄 755,檔案 644

sudo find /var/www/myapp -type d -exec chmod 755 {} \; sudo find /var/www/myapp -type f -exec chmod 644 {} \;

3. 有需要執行嘅 script 先加 x

sudo chmod u+x /var/www/myapp/deploy.sh

咁樣設定,`www-data` 可以正常運作,而其他用戶(包括透過網頁嘅攻擊者)都唔可以隨意改寫你嘅檔案。

總結

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

記住三件事:r 睇、w 改、x 行;owner、group、others 三組人;數字 755/644/600 係你最好嘅朋友。唔好再 chmod 777,揀啱權限先係真正嘅 Linux 基本功。下次再撞 Permission denied,先諗清楚係邊組人缺邊個權,而唔係即刻 sudo 或者 777 搞掂。

#安全 #IT教學 #技術分享 #部署 #Linux

Linux 檔案權限 chmod 實戰教學:一次搞掂讀寫執行 - 文章重點速覽 infographic