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
5. 防護與證據判讀
共享只開放必要的用戶端與資料;只需閱讀時,採用伺服器端唯讀政策,並檢查檔案權限和身分對應。
sec=sys 本身不提供密碼學保護。需要較強保護時,可依部署條件評估 Kerberos:
- krb5:身分驗證。
- krb5i:再加完整性保護。
- krb5p:再加隱私保護。
這些需要相應的基礎設施與設定;使用 NFSv4,不代表實際已啟用 Kerberos 或加密。安全選項|協定安全機制
證據應記錄時間、伺服器、版本、共享路徑、用戶端、身分、安全模式、操作與回應,再對照預期政策。共享存在本身,不等於設定有漏洞。
6. 小檢核
在授權環境查到 NFS export 並成功掛載,讀取 staff.txt 卻遭拒。目前最合理的是?
A. 掛載成功,代表所有檔案都能讀寫。
B. 已確認掛載成功,但這次讀檔遭拒;仍需查身分、路徑與權限。
C. 改用 NFSv4 就一定能讀。
D. 出現拒絕訊息,證明伺服器已遭入侵。
回覆選項,再用一句話說明「掛載成功」與「讀檔成功」的差別即可。
概念 Q&A
待補:收到相關問題後,會整理為匿名教學版。