2026 年 05 月 07 日

CH4 — 檔案系統

CH4 Linux

📋 大綱

1📁 系統目錄架構 (FHS)
2📁 ext 檔案系統
3📁 inode 結構
4📁 檔案與目錄權限
5📁 數字法更改權限
6📁 文字法更改權限
7📁 實際練習
8🔍 檔案搜尋指令(locate / find / which)

📁 1|系統目錄架構 (FHS)

Linux 檔案系統採用樹狀目錄結構,所有目錄由此開頭。了解各目錄用途,是系統管理的基本功。

目錄用途說明
/根目錄,容納整個 Linux 系統的所有目錄和檔案
/bin放置操作系統時所需的各種指令程式
/boot系統啟動時必須讀取的檔案,包括系統核心在內
/dev存放周邊設備代號的檔案
/etc放置與系統設定、管理相關的檔案
/etc/init.d開機或關機時所執行的 script 檔案
/home使用者帳號的家目錄
/lib放置共用的函式庫
/lib/modules存放系統核心的模組
/lost+found檔案系統發生問題時,Linux 自動掃描並修正錯誤,遺失區段轉成檔案存放於此
/media光碟、隨身碟與其他分割區的自動掛載點
/mnt手動掛載其他分割區的掛載點
/proc系統核心和執行程序之間的資訊(ps、free 等指令的資料來源)
/root系統管理者(root)的家目錄
/sbin存放啟動系統需執行的程式
/tmp供全部使用者暫時放置檔案。每次開機都會清空,重要檔案勿存於此。
/usr包括許多子目錄,用來存放系統指令、程式等資訊
/usr/bin放置使用者可以執行的指令(clear、find、free 等)
/usr/local存放自行編譯的軟體,與 DPKG 安裝的軟體區隔
/usr/share/doc存放各種文件
/usr/share/man放置多種線上說明文件
/usr/src存放原始碼,Linux 核心原始碼放在這裡
/var執行時內容經常變動的資料或暫存檔
/var/tmp提供程式產生的暫存檔使用

查詢目錄所佔硬碟空間:du -sh 目錄名稱

  • du -sh:僅顯示該目錄的總計大小(-s = summarize),不列出子目錄細項
  • du -h:顯示該目錄下每個子目錄與檔案的大小(遞迴列出),適合查看哪個子資料夾吃最多空間

常見組合:du -sh * — 列出目前目錄每個項目(檔案或資料夾)的總大小。

📁 2|ext 檔案系統

📀 ext2 / ext3 / ext4 演進

Ubuntu 預設採用 ext4 檔案系統。ext4 是 ext3 的下一代,ext3 則是 ext2 的下一代。

ext3 與 ext2 的關鍵差異:ext3 是日誌式檔案系統 (Journal File System),提供更好的安全性——當系統突然斷電時,日誌式檔案系統可以快速回復到正常狀態。

ext3 → ext4 轉換(tune2fs):使用 tune2fs 指令可將 ext3 分割區轉換為 ext4,並修改 /etc/fstab 檔,重啟後生效。

💾 ext4 inode 結構

ext4 使用的 inode 結構,能指向 12 個資料區塊。若檔案超大則啟用間接指向指標 (indirect pointer)

📁 3|inode 結構

📄 inode 的內容

inode(索引節點)是 Linux 用來描述檔案 metadata 的資料結構,每個檔案和目錄都有一個唯一的 inode 編號。

1
檔案模式 (mode)
描述資料類型:普通檔案、目錄、符號連結、周邊設備代號等
2
擁有者資訊
UID 與 GID,記錄誰擁有這個檔案
3
檔案大小 (size)
單位為 byte
4
時間戳記 (timestamp)
最初建立時間與最後修改時間
5
資料區塊位址
存放檔案所佔用的資料區塊位址,ext4 inode 可指向 12 個直接區塊,超出時啟用間接指向指標

📁 4|檔案與目錄的權限

🔐 ls -l 權限欄位(10 字元)

執行 ls -lls -al 時,第一欄共 10 個字元用來標示該檔案的屬性及權限。

字元說明備註
d目錄directory
-普通檔案regular file
l符號連結檔案指向另一個檔案
b區塊設備檔案如硬碟分割區
c字元設備檔案如終端機
s特殊檔案(系統資料結構)少見
p管線檔案少見
權限對檔案的意義對目錄的意義
r (Read, 4)讀取檔案內容瀏覽目錄內容(列出檔案)
w (Write, 2)修改檔案內容刪除或移動目錄內的檔案
x (eXecute, 1)執行檔案進入目錄(但不一定能瀏覽,視 r 權限而定)
-不具該項權限

常見權限範例:

  • -rwx------(700):擁有者完整權限,其他人無權
  • -rwxr--r--(744):擁有者完整權限,群組與其他人僅讀取
  • -rw-rw-r--(664):擁有者與群組讀寫,其他人僅讀取
  • drwxr-x---(750):群組可讀寫,其他使用者無權
  • 家目錄預設權限:drwxr-x---(750),只有擁有者能完整操作

📁 5|數字法更改權限

權限數值說明
r4讀取
w2寫入
x1執行
特殊權限
s (SUID)4以擁有者身份執行
s (SGID)2以群組身份執行
t (Sticky)1僅擁有者可刪除目錄內檔案

使用 chmod 指令:chmod 755 檔案。範例:-rwxr-xr-x = 4+2+1 + 4+0+1 + 4+0+1 = 755

📁 6|文字法更改權限

文字法使用 chmod 配合身份(u/g/o/a)+ 運算(+/-/=)+ 權限(r/w/x)來設定。

參數說明
u+rw為擁有者加入讀取和寫入權限
g-x取消同群組使用者的執行權限
o=rx設定其他使用者僅有讀取和執行權限
ugo+xa+x為所有人加入執行權限
-R遞迴處理,包括子目錄內所有檔案
u+s設定 SUID 特殊權限
g+s設定 SGID 特殊權限
o+t設定 Sticky Bit(/tmp 目錄常見)
👤 修改擁有者 (chown)

執行 chown 使用者:群組 檔案 指令,修改檔案或目錄的擁有者及所屬群組。例如:sudo chown mary:users nohup.out

📁 7|實際練習

  • 使用 -R 參數遞迴更改目錄下所有檔案權限:chmod -R 777 mydir
  • -R:僅更改該目錄本身權限,不影響內部檔案
  • 使用 chown 將檔案擁有者轉移給其他使用者(需 root 權限)
  • 使用者和群組的關係記錄在 /etc/group 檔案中

🔍 8|檔案搜尋指令(locate / find / which)

📂 locate — 速查資料庫

locate 透過預先建立的檔案資料庫(updatedb)做快速搜尋,適合找已知名稱的檔案,速度遠快於 find

指令說明範例
locate 關鍵字在資料庫中搜詢含有關鍵字的檔案路徑locate passwd
locate -i 關鍵字忽略大小寫locate -i readme
locate -c 關鍵字只顯示符合的數量locate -c .conf
updatedb手動更新資料庫(需 root)sudo updatedb

⚠️ locate 搜的是資料庫,若新建檔案後找不到,先執行 sudo updatedb 更新資料庫。

🔎 find — 進階搜尋(磁碟即時搜尋)

find 從指定目錄出發,針對檔名、大小、時間、權限等條件做即時搜尋,功能最齊全但較慢。

指令說明範例
find . -name "*.txt"依檔名搜尋(可用萬用字元)当前目錄下找所有 .txt
find /home -name "file*"在 /home 目錄下搜尋指定起始路徑
find . -type f只找檔案(file)排除目錄
find . -type d只找目錄(directory)只列出目錄
find . -size +10M找大於 10MB 的檔案+ 表大於,- 表小於
find . -mtime -7找 7 天內修改過的檔案-7 = 7天內,+7 = 超過7天
find . -user root找擁有者為 root 的檔案可換成實際使用者名稱
find . -perm 755找權限為 755 的檔案精確比對權限
find . -name "*.log" -exec rm {} \;找到後對每個檔案執行指令-exec 參數強大,可搭配 rm、cp、ls 等
find . -empty找空檔案或空目錄清理可用
🎯 which — 確認指令所在路徑

which 根據 $PATH 環境變數,找出系統會執行哪個版本的指令,適合確認指令是否存在或被別名覆寫。

指令說明範例
which 指令名回傳該指令的完整路徑which python
which -a 指令名列出所有符合 $PATH 的版本which -a python
which npm查看 npm 安裝路徑確認是否安裝

範例情境:which python/usr/bin/python;若同時有 conda 環境,可能出現多個版本,用 which -a python 確認所有路徑。

🧹 清除畫面(clear)

clear 指令用於清除終端機畫面。(Windows 指令為 cls,全名為 Clear Screen)

📄 分頁檢視(more / less)

當指令輸出結果太長時,可用 moreless 分頁檢視,避免一次全部顯示刷屏。

指令說明範例
指令 | more分頁顯示,空白鍵換頁,Enter 換一行du -h | more
指令 | less分頁顯示,可上下鍵滾動、搜尋,離開按 qls -la / | less
more 檔案直接用 more 開啟檔案more readme.txt
less 檔案直接用 less 開啟檔案less readme.txt

lessmore 功能更強,幾乎是業界標配。可用 /關鍵字 搜尋,n 跳到下一個符合處,q 離開。