樹莓派超全系列教程文檔--(55)如何使用網絡文件系統NFS

如何使用網絡文件系統NFS

    • 網絡文件系統 (NFS)
      • 設置基本 NFS 服務器
        • Portmap 鎖定(可選)
      • 配置 NFS 客戶端
        • 端口映射鎖定(可選)
      • 配置復雜的 NFS 服務器
        • 組權限
        • DNS(可選,僅在使用 DNS 時)
        • NIS(可選,僅在使用 NIS 時)
        • 端口映射鎖定(可選)
        • 軟件包安裝和配置
        • 重新啟動服務
        • 需要考慮的安全事項
      • 故障排除

文章來源: http://raspberry.dns8844.cn/documentation

原文網址

網絡文件系統 (NFS)

網絡文件系統 (NFS) 允許您與同一網絡上的其他計算機或設備共享位于一臺聯網計算機上的目錄。目錄所在的計算機稱為 服務器,連接到該服務器的計算機或設備稱為客戶端。客戶端通常通過 mount 共享目錄,使其成為其自身目錄結構的一部分。共享目錄是共享資源或網絡共享的一個示例。

NFS 是在 Linux/Unix 環境中創建簡單 NAS(網絡附加存儲)的流行方法。

NFS 可能最適合更永久的網絡掛載目錄,例如 /home 目錄或經常訪問的共享資源。如果您想要一個來賓用戶可以輕松連接的網絡共享,Samba 更適合這項任務。在各個操作系統中都更容易獲得臨時掛載和分離 Samba 共享的工具。

在部署 NFS 之前,您應該熟悉:

  • Linux 文件和目錄權限
  • 掛載和卸載文件系統

設置基本 NFS 服務器

使用以下命令安裝所需的軟件包:

$ sudo apt install nfs-kernel-server

為了便于維護,我們將所有 NFS 導出隔離在單個目錄中,并使用 --bind 選項將實際目錄掛載到該目錄中。

假設我們要導出用戶的主目錄,這些目錄位于 /home/users 中。首先,我們創建導出文件系統:

$ sudo mkdir -p /export/users

TIP: 如果您計劃配置 LDAP/NIS 身份驗證,請跳過下面的 chmod 步驟。

授予 /export/export/users 讀取、寫入和執行權限 ( 777 ),以便您可以從客戶端訪問 NFS 共享,而無需 LDAP/NIS 身份驗證:

$ chmod -R 777 /export

接下來,使用以下命令掛載真正的 users 目錄:

$ sudo mount --bind /home/users /export/users

為了避免每次重啟后都重新輸入這些內容,我們將以下行添加到 /etc/fstab

/home/users    /export/users   none    bind  0  0

有三個配置文件與 NFS 服務器相關:

. /etc/default/nfs-kernel-server
. /etc/default/nfs-common
. /etc/exports

目前 /etc/default/nfs-kernel-server 中唯一重要的選項是 NEED_SVCGSSD 。默認情況下,它設置為 "no" ,這很好,因為我們這次不激活 NFSv4 安全性。

為了自動映射 ID 名稱,文件 /etc/idmapd.conf 必須存在于客戶端和服務器上,并且內容相同且域名正確。此外,此文件的 Mapping 部分應包含以下行:

[Mapping]Nobody-User = nobody
Nobody-Group = nogroup

但是,請注意,客戶端對 Nobody-User 和 Nobody-Group 可能有不同的要求。例如,在 RedHat 變體上,兩者都是 nfsnobody 。如果您不確定,請通過以下命令檢查是否存在 nobodynogroup

$ cat /etc/passwd
$ cat /etc/group

這樣,服務器和客戶端就不需要用戶共享相同的 UID/GUID。對于使用基于 LDAP 的身份驗證的用戶,請在客戶端的 idmapd.conf 中添加以下幾行:

[Translation]Method = nsswitch

這將讓 idmapd 知道查看 nsswitch.conf 以確定應在何處查找憑據信息。如果您的 LDAP 身份驗證已在運行,則 nsswitch 不需要進一步解釋。

要將我們的目錄導出到本地網絡 192.168.1.0/24 ,請將以下兩行添加到 /etc/exports

/export       192.168.1.0/24(rw,fsid=0,insecure,no_subtree_check,async)
/export/users 192.168.1.0/24(rw,nohide,insecure,no_subtree_check,async)
Portmap 鎖定(可選)

NFS 上的文件對網絡上的任何人都開放。作為一項安全措施,您可以限制對指定客戶端的訪問。

將以下行添加到 /etc/hosts.deny

rpcbind mountd nfsd statd lockd rquotad : ALL

通過首先阻止所有客戶端,只有 /etc/hosts.allow (下面添加)中的客戶端才被允許訪問服務器。

現在將以下行添加到 /etc/hosts.allow

rpcbind mountd nfsd statd lockd rquotad : <list of IPv4s>

其中 <list of IPv4s> 是服務器和所有客戶端的 IP 地址列表。(這些必須是 IP 地址,因為 rpcbind 有限制,它支持主機名)。請注意,如果已經設置了 NIS,可以直接將這些地址添加到同一行。

請確保授權 IP 地址列表包含 localhost 地址( 127.0.0.1 ),因為 Ubuntu 最新版本的啟動腳本使用 rpcinfo 命令來發現 NFSv3 支持,如果 localhost 無法連接,該命令將被禁用。

最后,要使更改生效,請重新啟動服務:

$ sudo systemctl restart nfs-kernel-server

配置 NFS 客戶端

現在您的服務器正在運行,您需要設置任何客戶端以便能夠訪問它。首先,安裝所需的軟件包:

$ sudo apt install nfs-common

在客戶端,我們可以使用一個命令掛載:

$ mount -t nfs -o proto=tcp,port=2049 <nfs-server-IP>:/ /mnt

您還可以指定 NFS 服務器主機名而不是其 IP 地址,但在這種情況下,您需要確保主機名可以在客戶端解析為 IP。確保始終解析此 IP 的可靠方法是使用 /etc/hosts 文件。

請注意,在 NFSv4 中不需要 <nfs-server-IP>:/export ,而在 NFSv3 中則不需要。根導出 :/ 默認為使用 fsid=0 導出。

我們還可以使用以下命令掛載導出的子樹:

$ mount -t nfs -o proto=tcp,port=2049 <nfs-server-IP>:/users /home/users

為確保每次重新啟動時都掛載該子樹,請在 /etc/fstab 中添加以下行:

<nfs-server-IP>:/ /mnt nfs auto 0 0

如果掛載后, /proc/mounts 中的條目顯示為 <nfs-server-IP>:// (帶有兩個斜杠),則您可能需要在 /etc/fstab 中指定兩個斜杠,否則 umount 可能會提示找不到掛載。

端口映射鎖定(可選)

將以下行添加到 /etc/hosts.deny

rpcbind : ALL

通過首先阻止所有客戶端,只有 /etc/hosts.allow (下面添加)中的客戶端才被允許訪問服務器。

現在將以下行添加到 /etc/hosts.allow

rpcbind : <NFS server IP address>

其中 <NFS server IP address> 是服務器的 IP 地址。

配置復雜的 NFS 服務器

NFS 用戶權限基于用戶 ID (UID)。客戶端上任何用戶的 UID 都必須與服務器上的 UID 匹配,用戶才能訪問。執行此操作的典型方法是:

  • 手動密碼文件同步
  • 使用 LDAP
  • 使用 DNS
  • 使用 NIS

請注意,在主用戶具有 root 訪問權限的系統上,您必須小心:該用戶可以更改系統上的 UID,以允許自己訪問任何人的文件。本頁假設管理團隊是唯一具有 root 訪問權限的組,并且他們都受到信任。其他任何內容都代表更高級的配置,這里不再贅述。

組權限

用戶的文件訪問權限由他們在客戶端上的組成員身份決定,而不是服務器上的組成員身份。但是,有一個重要的限制:從客戶端傳遞到服務器的組最多為 16 個,如果用戶在客戶端上是 16 個以上組的成員,則某些文件或目錄可能會意外無法訪問。

DNS(可選,僅在使用 DNS 時)

將任何客戶端名稱和 IP 地址添加到 /etc/hosts。(服務器的 IP 地址應該已經存在。)這樣可以確保即使 DNS 發生故障,NFS 仍能正常工作。或者,如果您愿意,也可以依賴 DNS - 這取決于您。

NIS(可選,僅在使用 NIS 時)

這適用于使用 NIS 的客戶端。否則,您無法使用網絡組,并且應該在 /etc/exports 中指定單獨的 IP 或主機名。請閱讀 man netgroup 中的 BUGS 部分以獲取更多信息。

首先,編輯 /etc/netgroup 并添加一行來對您的客戶端進行分類(此步驟不是必需的,但是為了方便):

myclients (client1,,) (client2,,) ...

其中 myclients 是網絡組名稱。

接下來運行此命令重建 NIS 數據庫:

$ sudo make -C /var/yp

文件名 yp 指的是黃頁,即 NIS 的前身。

端口映射鎖定(可選)

將以下行添加到 /etc/hosts.deny

rpcbind mountd nfsd statd lockd rquotad : ALL

通過首先阻止所有客戶端,只有 /etc/hosts.allow (下面添加)中的客戶端才被允許訪問服務器。

考慮將以下行添加到 /etc/hosts.allow

rpcbind mountd nfsd statd lockd rquotad : <list of IPs>

其中 <list of IPs> 是服務器和所有客戶端的 IP 地址列表。由于 rpcbind 中的限制,這些必須是 IP 地址。請注意,如果已經設置了 NIS,則只需將這些地址添加到同一行即可。

軟件包安裝和配置

安裝必要的軟件包:

$ sudo apt install rpcbind nfs-kernel-server

編輯 /etc/exports 并添加共享:

/home @myclients(rw,sync,no_subtree_check)
/usr/local @myclients(rw,sync,no_subtree_check)

上述示例將 /home/usr/local 共享給 myclients 網絡組中的所有客戶端。

/home 192.168.0.10(rw,sync,no_subtree_check) 192.168.0.11(rw,sync,no_subtree_check)
/usr/local 192.168.0.10(rw,sync,no_subtree_check) 192.168.0.11(rw,sync,no_subtree_check)

上述示例將 /home/usr/local 共享給兩個具有靜態 IP 地址的客戶端。如果您希望允許私有網絡中指定 IP 地址范圍內的所有客戶端訪問,請考慮以下操作:

/home 192.168.0.0/255.255.255.0(rw,sync,no_subtree_check)
/usr/local 192.168.0.0/255.255.255.0(rw,sync,no_subtree_check)

此處, rw 使共享可讀/寫, sync 要求服務器僅在任何更改刷新到磁盤后才回復請求。這是最安全的選項;async 速度更快,但很危險。如果您正在考慮其他選項,強烈建議您閱讀 man exports

設置 /etc/exports 后,導出共享:

$ sudo exportfs -ra

每當修改 /etc/exports 時,您都需要運行此命令。

重新啟動服務

重新啟動 rpcbind 和 NFS 以使更改生效:

$ sudo systemctl restart rpcbind
$ sudo systemctl restart nfs-kernel-server
需要考慮的安全事項

除了上面討論的 UID 問題之外,還應注意,攻擊者可能會偽裝成允許映射共享的機器,這允許他們創建任意 UID 來訪問您的文件。一個潛在的解決方案是 IPSec。您可以將所有域成員設置為僅通過 IPSec 相互通信,這將有效地驗證您的客戶端是否是它所說的那個客戶端。

IPSec 的工作原理是使用服務器的公鑰加密發往服務器的流量,然后服務器發回使用客戶端的公鑰加密的所有回復。流量使用相應的私鑰解密。如果客戶端沒有它應該擁有的密鑰,它就無法發送或接收數據。

IPSec 的替代方案是物理上獨立的網絡。這需要單獨的網絡交換機和單獨的以太網卡,以及該網絡的物理安全性。

故障排除

只有在您成功登錄并且您的主目錄已解密后,才能在加密的主目錄中安裝 NFS 共享。這意味著使用 /etc/fstab 在啟動時安裝 NFS 共享將不起作用,因為您的主目錄在安裝時尚未解密。有一個簡單的方法可以使用符號鏈接來解決這個問題:

. 創建一個備用目錄來安裝 NFS 共享:

$ sudo mkdir /nfs
$ sudo mkdir /nfs/music

. 編輯 /etc/fstab 以將 NFS 共享掛載到該目錄中:

nfsServer:music    /nfs/music    nfs    auto    0 0

. 在您的 home 中創建一個符號鏈接,指向實際的掛載位置。例如,在這種情況下,首先刪除已經存在的 Music 目錄:

$ rmdir /home/user/Music
$ ln -s /nfs/music/ /home/user/Music

上一篇 – 樹莓派超全系列教程文檔–(54)如何使用rsync在計算機之間同步文件夾
下一篇 – 樹莓派超全系列教程文檔–(56)如何使用Samba共享文件夾

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/83774.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/83774.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/83774.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

無法運用pytorch環境、改環境路徑、隔離環境

一.未建虛擬環境時 1.創建新項目后&#xff0c;直接運行是這樣的。 2.設置中Virtualenv找不到pytorch環境&#xff1f;因為此時沒有創建新虛擬環境。 3.選擇conda環境&#xff08;全局環境&#xff09;時&#xff0c;是可以下載環境的。 運行結果如下&#xff1a; 是全局環境…

HTML5+CSS3+JS小實例:具有粘性重力的磨砂玻璃導航欄

實例:具有粘性重力的磨砂玻璃導航欄 技術棧:HTML+CSS+JS 效果: 源碼: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width…

NodeJS全棧WEB3面試題——P8項目實戰類問題(偏全棧)

&#x1f4e6; 8.1 請描述你做過的 Web3 項目&#xff0c;具體技術棧和你負責的模塊&#xff1f; 我主導開發過一個基于 NFT 的數字紀念平臺&#xff0c;用戶可以上傳照片并生成獨特的紀念 NFT&#xff0c;結合 IPFS 和 ERC-721 實現永存上鏈。 &#x1f527; 技術棧&#xf…

3-10單元格行、列號獲取(實例:表格選與維度轉換)學習筆記

************************************************************************************************************** 點擊進入 -我要自學網-國內領先的專業視頻教程學習網站 *******************************************************************************************…

AI問答-vue3+ts+vite:http://www.abc.com:3022/m-abc-pc/#/snow 這樣的項目 在服務器怎么部署

為什么記錄有子路徑項目的部署&#xff0c;因為&#xff0c;通過子路徑可以區分項目&#xff0c;那么也就可以實現微前端架構&#xff0c;并且具有獨特優勢&#xff0c;每個項目都是絕對隔離的。 要將 Vue3 項目&#xff08;如路徑為 http://www.abc.com:3022/m-saas-pc/#/sno…

PostgreSQL-基于PgSQL17和11版本導出所有的超表建表語句

最新版本更新 https://code.jiangjiesheng.cn/article/368?fromcsdn 推薦 《高并發 & 微服務 & 性能調優實戰案例100講 源碼下載》 1. 基于pgsql 17.4 研究 查詢psql版本&#xff1a;SELECT version(); 查看已知1條建表語句和db中數據關系 SELECT create_hypert…

世事無常,比較復雜,人可以簡單一點

2025年6月5日日&#xff0c;17~28℃&#xff0c;一般 待辦&#xff1a; 宣講會 職稱材料的最后檢查 職稱材料有錯誤&#xff0c;需要修改 期末考試試題啟用 教學技能大賽PPT 遇見&#xff1a;部門宣傳泰國博士項目、碩士項目、本科項目。 感受或反思&#xff1a;東南亞博士…

B站緩存視頻數據m4s轉mp4

B站緩存視頻數據m4s轉mp4 結構分析 結構分析 在沒有改變數據存儲目錄的情況下&#xff0c;b站默認數據保存目錄為&#xff1a; Android->data->tv.danmaku.bili->download每個文件夾代表一個集合的視頻&#xff0c;比如&#xff0c;我下載的”java從入門到精通“&…

一次Oracle的非正常關閉

數據庫自己會關閉嗎&#xff1f; 從現象來說Oracle MySQL Redis等都會出現進程意外停止的情況。而這些停止都是非人為正常關閉或者暴力關閉&#xff08;abort或者kill 進程&#xff09; 一次測試環境的非關閉 一般遇到這種情況先看一下錯誤日志吧。 2025-06-01T06:26:06.35…

linux 串口調試命令 stty

linux 串口調試命令 stty 文章目錄 linux 串口調試命令 sttystty 常見命令選項&#xff1a;常用參數&#xff1a;一次性設置串口所有常見參數總結 stty&#xff08;設置終端行模式&#xff09;命令是用來配置終端設備&#xff08;包括串口設備&#xff09;的輸入和輸出行為的工…

【地址區間劃分】

地址區間劃分 1 decode_addr1.1 地址區間1.2 變式 本篇博客主要介紹對地址區間劃分的一個比較巧妙參數化的做法。 1 decode_addr 遇到一個master轉多個slave時&#xff0c;不可避免需要進行對addr總線進行分配地址區間來進行選中&#xff1b; 在這里給出一個可復用且設計思想比…

mysql復合查詢mysql子查詢

基礎表結構創建 表結構包含主外鍵約束和字符集配置&#xff0c;確保數據完整性 部門表 CREATE TABLE dept (deptno int NOT NULL COMMENT 部門編號,dname varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 部門名稱,loc varchar(20) CHARACTE…

vlan(虛擬局域網)邏輯圖解+實驗詳解

VLAN&#xff08;Virtual Local Area Network&#xff0c;虛擬局域網&#xff09; 是一種通過邏輯方式&#xff08;非物理連接&#xff09;將網絡設備劃分為多個獨立廣播域的技術。它允許管理員在同一個物理網絡中創建多個隔離的虛擬網絡&#xff0c;從而提升網絡的安全性、靈…

2025年—Comfy UI 和 Stable Diffusion底層原理

為什么要先講SD原理 &#xff1f; 邏輯理解: ComfyUI是節點式操作&#xff0c;需要自行搭建工作流&#xff0c;理解原理才能靈活定制工作流學習效率: 基礎原理不懂會導致后續學習吃力&#xff0c;原理是掌握ComfyUI的關鍵核心價值: ComfyUI最有價值的功能就是自主搭建工作流&a…

深入理解C#中的Web API:構建現代化HTTP服務的完整指南

在當今的軟件開發領域&#xff0c;構建高效、可擴展的Web服務已成為一項基本需求。作為.NET開發者&#xff0c;C#中的Web API框架為我們提供了創建RESTful服務的強大工具。本文將全面探討Web API的核心概念、實現細節和最佳實踐&#xff0c;幫助您掌握這一關鍵技術。 一、Web A…

起重機指揮人員在工作中需要注意哪些安全事項?

起重機指揮人員在作業中承擔著協調設備運行、保障作業安全的關鍵職責&#xff0c;其安全操作直接關系到整個起重作業的安全性。以下從作業前、作業中、作業后的全流程&#xff0c;詳細說明指揮人員需注意的安全事項&#xff1a; 一、作業前的安全準備 資質與狀態檢查&#xff…

【高等數學】傅里葉級數逼近例子

f ( x ) π 2 ? ∣ x ∣ f(x)\frac{\pi}{2}-|x| f(x)2π??∣x∣ 由于是偶函數只需要求 cos ? ( n x ) , 1 \cos(nx),1 cos(nx),1 的系數 a n 0 a_n 0 an?0, n n n 是偶數 a n 1 ( 2 n ? 1 ) 2 a_n \frac{1}{(2n-1)^2} an?(2n?1)21?, n n n 是奇數 則 f ( x )…

PowerBI企業運營分析—全動態盈虧平衡分析

PowerBI企業運營分析—全動態盈虧平衡分析 歡迎來到Powerbi小課堂&#xff0c;在競爭激烈的市場環境中&#xff0c;企業運營分析平臺成為提升競爭力的核心工具。 該平臺通過整合多源數據&#xff0c;實現關鍵指標的實時監控&#xff0c;從而迅速洞察業務動態&#xff0c;精準…

用ApiFox MCP一鍵生成接口文檔,做接口測試

日常開發過程中&#xff0c;尤其是針對長期維護的老舊項目&#xff0c;許多開發者都會遇到一系列相同的困擾&#xff1a;由于項目早期缺乏嚴格的開發規范和接口管理策略&#xff0c;導致接口文檔缺失&#xff0c;甚至連基本的接口說明都難以找到。此外&#xff0c;由于缺乏規范…

26考研 | 王道 | 計算機組成原理 | 三、存儲系統

26考研 | 王道 | 計算機組成原理 | 三、存儲系統 文章目錄 26考研 | 王道 | 計算機組成原理 | 三、存儲系統3.1 存儲系統基本概念3.2 主存儲器1. 主存儲器的基本組成2. SRAM與DRAM1.DRAM和SRAM對比2.DRAM的刷新3.DRAM的地址線復用技術 3. 只讀存儲器ROM4.雙端口RAM和多模塊存儲…