CS KAIROS · LEARNING LIBRARY

M04-08 · NFS 列舉

先記住:查到共享目錄、成功掛載、讀到檔案、修改檔案,是四種不同的證據。

10/25 晚間:一次學一個核心概念

1. NFS 是什麼?

NFS(Network File System,網路檔案系統)讓電腦透過網路使用遠端檔案系統,在用戶端看起來像從本機的一個目錄進入遠端資料。

例如公司把教材集中在 Linux 伺服器,工作站就能使用同一份教材,不必各自維護副本。

先認識兩個動作:

  • Export(匯出/對外共享):伺服器決定提供哪個目錄,以及開放條件。
  • Mount(掛載):用戶端把遠端檔案系統接到自己的目錄樹,例如 /mnt/course。這不等於把整份資料複製到本機。

使用條件包括網路可達、版本相容、伺服器允許該用戶端,以及身分與檔案權限符合要求。

2. 列舉是在查什麼?

在已授權環境,整理共享路徑、允許的用戶端範圍、NFS 版本與存取條件;管理者再對照伺服器設定與日誌。

常見查詢語法是:

showmount -e <已授權的伺服器>

尖括號是占位文字,本課沒有實際執行。-e 查 export 清單,不是列出共享內所有檔案,也不是取得讀寫許可。

showmount 聯絡的是 MNT 服務。只提供 NFSv4 的伺服器可能不開放它,所以查詢失敗或沒有清單,不能直接斷言「沒有 NFS」。showmount 手冊

NFSv3 部署常涉及 rpcbind、mountd 等輔助服務;NFSv4 整合了原本的 MOUNT 功能,常見使用 TCP 2049。因此版本不同,查核方法與防火牆需求也可能不同。NFSv4 規格

3. 接續上一課:伺服器認為你是誰?

上一課的 UID、GID 是使用者與群組的數字識別碼。常見 sec=sys/AUTH_SYS 模式使用用戶端提供的數字身分資訊;兩台機器上的帳號名稱相同,不保證數字身分或權限相同。

判讀時要分三層:

  • 用戶端:這台電腦是否在共享允許範圍?
  • 身分:伺服器把請求對應成哪個使用者與群組?
  • 資源:該身分能否對這個路徑執行這項操作?

Linux 的 root_squash 會把遠端 UID/GID 0 對應為匿名身分,避免直接把用戶端 root 當成伺服器 root;它不是把所有使用者匿名化,也不是完整的安全保障。

同理,export 設為 rw,只表示共享層允許寫入,檔案權限與 ACL 仍可能拒絕特定操作。exports 與身分對應

4. 具體例子:掛載成功,卻讀不到檔案

以下是合成情境,不是真實測試結果。

公司只允許教材工作站使用唯讀共享 /srv/course;學生把它掛到 /mnt/course。

  • 讀取 /mnt/course/readme.txt:成功。
  • 讀取 /mnt/course/staff.txt:Permission denied。

能確認的是:這個掛載可用,且這次讀取 readme.txt 成功;這次讀取 staff.txt 遭拒。

不能推論:所有檔案都能讀、使用者有管理權限,或可以修改共享內的資料。

下一步應核對實際請求身分、UID/GID 對應、路徑與父目錄權限、ACL,以及伺服器日誌。不要只憑一個錯誤字串,就認定唯一原因。

網頁補充:同一共享,分開記錄結果

合成案例;以下是獨立觀察,不是自動授權流程。

  • 掛載可用

    /srv/course → /mnt/course

  • 本次讀取成功

    /mnt/course/readme.txt

  • 本次讀取遭拒

    /mnt/course/staff.txt — Permission denied

下載 SVG 圖解

5. 防護與證據判讀

共享只開放必要的用戶端與資料;只需閱讀時,採用伺服器端唯讀政策,並檢查檔案權限和身分對應。

sec=sys 本身不提供密碼學保護。需要較強保護時,可依部署條件評估 Kerberos:

  • krb5:身分驗證。
  • krb5i:再加完整性保護。
  • krb5p:再加隱私保護。

這些需要相應的基礎設施與設定;使用 NFSv4,不代表實際已啟用 Kerberos 或加密。安全選項|協定安全機制

證據應記錄時間、伺服器、版本、共享路徑、用戶端、身分、安全模式、操作與回應,再對照預期政策。共享存在本身,不等於設定有漏洞。

6. 小檢核

在授權環境查到 NFS export 並成功掛載,讀取 staff.txt 卻遭拒。目前最合理的是?

A. 掛載成功,代表所有檔案都能讀寫。

B. 已確認掛載成功,但這次讀檔遭拒;仍需查身分、路徑與權限。

C. 改用 NFSv4 就一定能讀。

D. 出現拒絕訊息,證明伺服器已遭入侵。

回覆選項,再用一句話說明「掛載成功」與「讀檔成功」的差別即可。

概念 Q&A

待補:收到相關問題後,會整理為匿名教學版。