Linux 檔案權限教學:深入理解 chmod 指令與 -rw-r–r– 實用設定方法

目次

1. 前言

什麼是 Linux 的「存取權限」?

在 Linux 及 Unix 系統中,妥善管理檔案與目錄的「存取權限(Permission)」非常重要。這不僅關係到系統安全,也是系統穩定運作不可或缺的因素。

很多人在終端機顯示檔案清單時,看到像 -rw-r--r-- 這樣陌生的符號時,可能都會好奇:「這代表什麼意思?」

chmod 與 -rw-r–r– 的關係

這些符號,其實就是用來表示檔案存取權限的標記。而設定、變更這些權限時會用到的指令,就是 chmod。也就是說,利用 chmod 給檔案賦予特定權限後,就會顯示像 -rw-r--r-- 這樣的權限標記。

本文目的與適用讀者

本文將淺顯易懂地說明 -rw-r--r-- 的具體意義,以及如何透過 chmod 設定與變更檔案權限,特別適合初學者閱讀。也會針對安全上的注意事項與實際操作範例作說明。

目標族群從剛開始接觸 Linux 的新手,到已經習慣終端機操作的中階用戶,希望協助大家建立實務上可用的基礎知識。

2. 什麼是 chmod?【基礎認識】

chmod 指令的用途

chmod(可唸作「change mode」)是 Linux/Unix 系統中用來更改檔案及目錄存取權限(Permission)的指令。
透過這個指令,可以靈活地設定「誰可以進行什麼操作(讀取、寫入、執行)」。

正確設定檔案與目錄權限,不僅能確保系統安全,還能預防檔案共享或執行時發生問題,因此非常重要。

chmod 的基本語法

chmod [選項] [權限] 檔案名稱

舉例來說:

chmod 644 sample.txt

此指令會將 sample.txt 的權限設定如下:

-rw-r--r--  1 user group 1234 Apr 13 20:00 sample.txt
  • 擁有者(user):可讀寫(rw-)
  • 群組(group):僅可讀(r–)
  • 其他人(others):僅可讀(r–)

數字與符號兩種指定方式

chmod 支援下列兩種權限指定方式:

  • 數字指定(數字模式)
  • 例:chmod 755 script.sh
  • 以數字分別指定不同使用者類型的權限。
  • 符號指定(符號模式)
  • 例:chmod u=rw,g=r,o=r file.txt
  • 用 u(user)、g(group)、o(others)及 r(讀)、w(寫)、x(執行)來指定。

這兩種方式都可以設定相同權限。數字方式適合快速一鍵設定,符號方式適合細節調整,建議視需求選用。

chmod 與 chown 的差異

常被混淆的另一個指令是 chown

  • chmod:變更檔案/目錄的存取權限
  • chown:變更檔案/目錄的「擁有者」或「群組」

兩者用途不同,建議清楚區分。

3. 拆解 -rw-r–r– 的意思

權限符號的結構

執行 ls -l 指令時,檔案資訊會像下面這樣顯示:

-rw-r--r--  1 user group  1234 Apr 13  2025 sample.txt

最左邊的 -rw-r--r-- 就是存取權限,理解這部分能幫助你判斷誰能執行哪些操作。

各部分的詳細說明

① 第一個字元:檔案類型

符號說明
-一般檔案
d目錄(資料夾)
l符號連結
b區塊裝置
c字元裝置

-rw-r--r-- 的第一個「-」就表示「一般檔案」。

② 第2至10個字元:存取權限(每3個字元一組,共三組)

  • 擁有者(user)rw-
    → 可讀(r)寫(w),不可執行(x)。
  • 群組(group)r--
    → 僅可讀,無法寫入或執行。
  • 其他人(others)r--
    → 僅可讀。

這代表只有擁有者能編輯,其餘只能瀏覽

對應的數值:644 的意思

同樣的權限,也可以用數字(八進位)來表示。

-rw-r--r-- 對應的數值就是 644

類型符號數值說明
擁有者rw-6可讀+寫
群組r--4僅可讀
其他人r--4僅可讀

這些數字來自於:

  • 讀(r)= 4
  • 寫(w)= 2
  • 執行(x)= 1

所以 rw- = 4 + 2 = 6r-- = 4。

為什麼常用這個權限?

-rw-r--r--(644)經常用於公開檔案或網站靜態檔(如 HTML、CSS)
原因如下:

  • 只有擁有者能改內容,避免被亂改
  • 其他人也能讀取,方便公開和分享

善用這設定,可兼顧安全與便利

4. 用 chmod 設定 -rw-r–r–【實作教學】

用 chmod 指令變更權限

檔案或目錄權限可以自由用 chmod 來調整。要設定成 -rw-r--r--,只要指定「644」即可。

數字方式設定

chmod 644 檔案名

chmod 644 document.txt

就會變成:

-rw-r--r--  1 user group 1234 Apr 13 20:00 document.txt
  • 擁有者:可讀寫(rw-)
  • 群組:僅可讀(r–)
  • 其他人:僅可讀(r–)

符號方式(符號模式)設定

若要更彈性調整,可以用符號指定:

chmod u=rw,g=r,o=r document.txt

各部分代表:

  • u=rw → 擁有者可讀寫
  • g=r → 群組僅可讀
  • o=r → 其他人僅可讀

與數字「644」效果完全一樣。

套用在目錄時的注意事項

目錄若沒「執行權(x)」就不能進入,這和檔案不同。

若像這樣設定:

chmod 644 my_folder

雖然可以讀目錄清單,卻不能進入目錄。

正確作法:

chmod 755 my_folder
  • 擁有者:可讀寫執行
  • 群組/其他人:可讀執行

這樣其他用戶才能查看資料夾內容。

遞迴變更權限:-R 選項

如果想同時變更大量檔案/目錄,可以加 -R(recursive 遞迴)選項:

chmod -R 644 my_folder

這會讓 my_folder 下所有檔案都變成 644,但有注意事項(詳見後文)。

5. 用 ls -l 指令查看權限

如何查看檔案權限?

查詢檔案或目錄權限時,推薦使用 Linux 常用的 ls -l 指令(長列表格式),可顯示權限、擁有者、檔案大小、最後修改日期等資訊。

基本用法

ls -l

會顯示:

-rw-r--r--  1 naoya devs  2048 Apr 13 20:00 index.html

各項意義:

項目說明
-rw-r--r--權限(存取權限)
1硬連結數量(通常為1)
naoya擁有者(user)
devs群組(group)
2048檔案大小(位元組)
Apr 13 20:00最後修改時間
index.html檔名

權限欄的解讀方式

最關鍵的 -rw-r--r-- 可以這樣拆解:

  • 第1字元:檔案類型
  • -:一般檔案
  • d:目錄
  • l:符號連結
  • 剩餘9字元:權限(每3個一組)
  • 擁有者(user):rw- → 可讀+寫
  • 群組(group):r-- → 僅可讀
  • 其他人(others):r-- → 僅可讀

也就是「只有擁有者可編輯,其餘只能讀取」。

只查單一檔案

若只想查某個檔案:

ls -l index.html

這樣只會顯示該檔案權限。目錄多檔案時很方便。

查看目錄權限也一樣

查目錄時,也能用 ls -l。若只看目錄本身權限,用 -d

ls -ld my_folder

這只顯示 my_folder 的權限(不會列出裡面的檔案)。

安全管理權限的小技巧

建議用 chmod 設定後,必用 ls -l 確認。
若設定錯誤會造成安全漏洞或異常行為。

也可搭配管線一次查多檔案:

ls -l | grep '.sh'

只顯示副檔名為 .sh(shell script)的檔案。

6. 用 GUI 工具查詢/修改權限(適合新手)

不擅長指令行也有方法

雖然 Linux 多用終端機,但對新手來說,「全黑畫面好難」、「怕打錯指令」也是常見困擾。
這時也能利用GUI(圖形化介面)來查詢與修改檔案權限。

用 Ubuntu 的檔案管理器(Nautilus)

多數 Linux 發行版都內建「Nautilus」檔案總管,就像 Windows 的檔案總管。

查詢步驟:

  1. 右鍵點選檔案或目錄
  2. 選「內容(Properties)」
  3. 開啟「權限」分頁(不同版本可能顯示為「Permission」)

這裡可以:

  • 查看/更改擁有者和群組(須有管理員權限)
  • 切換讀、寫、執行許可
  • 立即反映權限設定

GUI 顯示為「唯讀」、「可讀寫」等,較不易出錯,適合新手。

WinSCP(Windows SFTP 用戶端)

若從 Windows 遠端連線 Linux,可用 WinSCP 以圖形介面設定權限。

操作步驟:

  1. 用 WinSCP 連上伺服器
  2. 右鍵檔案 →「內容」
  3. 在「權限(Permissions)」調整數值(如 644)或勾選方格
  4. 按「OK」儲存

優點:

  • 可用數字/符號檢查權限
  • 可對整個目錄遞迴修改

注意:

  • 部分系統檔案需 root 權限,否則無法修改
WinSCP - Free SFTP and FTP client

WinSCP is a popular free file manager for Windows supporting…

FileZilla(跨平台 SFTP 工具)

Mac、Linux 也能用 FileZilla 來變更權限。

步驟:

  1. 連上伺服器,右鍵檔案
  2. 選「檔案權限(File Permissions)」
  3. 勾選權限、填入數字,按「OK」即可

GUI 優缺點

優點:

  • 新手較不易犯錯
  • 設定結果一目了然
  • 不懂指令也能操作

缺點:

  • 有時部分權限無法用 GUI 設定(如系統檔)
  • 建議還是用 ls -l 等指令檢查結果

FileZilla - The free FTP solution for both client and server…

7. chmod 設定的注意事項與常見問題排解

設定正確卻無法運作?可能的原因

chmod 設定後,若遇到問題,多半是權限誤設或誤解造成。
這裡介紹常見問題與處理方式。

Permission denied 錯誤的原因與解決法

狀況:

bash: ./script.sh: Permission denied

原因:

  • 執行檔缺乏「執行權(x)」

解決法:

chmod +x script.sh

或直接:

chmod 755 script.sh

只給讀/寫權不夠,執行還需「x」權。

目錄沒執行權就無法進入

若目錄設 chmod 644,可能會無法存取內容。

說明:

  • 目錄的「x」權代表能否進入(cd)或查看內容

範例:

chmod 644 my_folder
ls my_folder

→ 會報錯、無法顯示內容。

正解:

chmod 755 my_folder

遞迴(-R)設定的陷阱

chmod -R 會讓所有檔案、資料夾套用同一權限,可能產生問題。

常見錯誤:

chmod -R 644 /var/www/html

→ 目錄失去執行權,無法進入。

正確作法:

# 資料夾設 755
find /var/www/html -type d -exec chmod 755 {} ;

# 檔案設 644
find /var/www/html -type f -exec chmod 644 {} ;

擁有者/群組權限設錯

不只 chmod,也要注意檔案「擁有者」和「群組」設定。
例如 apache 用戶必須能讀檔案,但若只有一般用戶有權限,網站就無法正確顯示。

解決:

  • 變更擁有者:sudo chown www-data:www-data index.html
  • 調整群組權限:chmod 640 index.html(若群組正確)

777 很危險!過度開放權限的風險

有些人會想「設 777 就一定能用」,但這極度危險

原因:

  • 任何人都能讀、寫、執行,超高風險
  • 極易被竄改、植入惡意腳本

建議基本規則:

  • 檔案:644 或 600
  • 目錄:755 或 700
  • 腳本/可執行檔:755(視需要)

8. 實際案例與常見應用場景

chmod 權限設定的實戰應用

前述 chmod-rw-r--r-- 權限,實際在伺服器維運、開發現場非常常用
以下用三個代表性案例說明如何應用:

1. 網頁伺服器 HTML 檔案管理

場景:
以 Apache 或 Nginx 發布 HTML 網頁時,常設 -rw-r--r--(644)。

chmod 644 index.html

理由:

  • 管理者需編輯 → 給寫入權
  • Web 伺服器只需讀取 → 給讀取權
  • 其他人不須寫入

這樣可最小權限、安全公開網頁內容

2. 腳本檔加上執行權限

場景:
寫了一個 shell script backup.sh,執行時遇到「Permission denied」。

chmod 755 backup.sh

意義:

  • 擁有者:讀、寫、執行(rwx)
  • 群組/其他人:讀、執行(rx)

這樣可讓其他人執行,但只能擁有者編輯

3. 機密檔案限制讀取

場景:
要儲存 API 金鑰等機密資料,不希望其他人能讀。

chmod 600 secrets.txt

說明:

  • 只有擁有者可讀寫(rw-)
  • 群組/其他人都無法存取(—)

高安全性機密資料建議設 600 或 400。

4. 共享目錄的安全設定

場景:
多位開發者需共用 shared_folder

chmod 770 shared_folder

說明:

  • 擁有者、群組:全權(rwx)
  • 其他人:無法存取(—)

搭配 chgrp 可靈活控管共享對象

5. 設定錯誤導致的問題與解法

場景:
誤設 chmod -R 777 .,導致所有檔案全開。

預防法:

  • find 依檔案/目錄分別設權限
  • 變更前先 ls -l 檢查
  • 可在測試環境先驗證

9. 常見問題(FAQ)

Q1. chmod 644-rw-r--r-- 有何不同?

A. 只是表示方式不同,意義完全一樣。

  • chmod 644:數字方式設定權限
  • -rw-r--r--:用 ls -l 查詢時的符號顯示

都表示「擁有者可讀寫,其餘僅可讀」。

Q2. 檔案沒執行權會怎樣?

A. 執行腳本、可執行檔時會發生錯誤。

例如 .sh.py 等,沒「x」權時會出現:

bash: ./script.sh: Permission denied

解決:

chmod +x script.sh

Q3. 目錄設成 644 可以嗎?

A. 通常不建議。

目錄必須有「執行權(x)」,否則無法進入。

建議設定:

chmod 755 目錄名稱

Q4. chmod -R 很方便,有什麼注意事項?

A. 檔案與目錄會被設同一權限,可能導致問題。

例如:

chmod -R 644 my_project/

→ 目錄失去執行權,無法進入。

安全建議:

find my_project/ -type d -exec chmod 755 {} ;
find my_project/ -type f -exec chmod 644 {} ;

Q5. 總是 Permission denied,怎麼辦?

A. 請檢查以下:

  • 執行檔缺少執行權
  • 非擁有者卻想寫入
  • 目錄無執行權
  • 當前用戶沒有 sudo 權限

請搭配 ls -lwhoami 查明權限與用戶。

Q6. 想分享檔案給別人看,但不讓對方寫入怎麼辦?

A. 設為「644」或「444」,只有擁有者可寫。

chmod 644 share.txt
  • 644:其他人僅可讀
  • 444:所有人都只能讀

可依檔案屬性、公開範圍彈性選用。

Q7. 權限設錯怎麼還原?

A. 若沒預先紀錄,請參考同專案下正確檔案的權限來還原。

ls -l /path/to/正確檔案

比對後再用 chmod 設定,建議平時記錄好初始狀態。

10. 總結

理解 chmod 與權限管理的意義

本文詳細介紹了 Linux/Unix 常用的 chmod 指令與權限符號 -rw-r--r-- 的意義。
這些知識不僅是技術,更關係到系統安全、運維效率、檔案管理的精確性

回顧本篇重點

  • chmod 是調整檔案/目錄權限的指令
  • -rw-r--r-- 代表「擁有者可讀寫,其餘僅可讀」
  • 數值「644」與符號「-rw-r–r–」意義一致
  • 權限設定有數字、符號兩種方式
  • ls -l 查目前權限
  • GUI 工具(Nautilus、WinSCP、FileZilla)也可設定查詢
  • chmod 設錯易出現 Permission denied,需小心
  • 常用權限背後都有明確理由

權限設定沒有「萬用解」

最重要的是,沒有一種設定能通用所有情境
請根據用途、共享對象、所需安全級別,選擇最小且適當的權限

給權限新手的建議

一開始或許覺得難,但只要熟悉 chmod 與權限概念,
可大幅降低風險,打造安全又有效率的系統

記得:「誰、要做什麼、能存取到哪?」這三點是權限設定最重要的思維。