NFS 或網絡文件系統是最初僅由 Sun Microsystems 開發的分佈式文件系統協議。 通過 NFS,您可以允許系統通過網絡與其他人共享目錄和文件。 通過共享 NFS 文件,用戶甚至程序可以訪問遠程系統上的信息,就好像他們在本地機器上一樣。
NFS 在客戶端-服務器環境中運行,其中服務器負責管理客戶端的身份驗證、授權和管理,以及特定文件系統內共享的所有數據。 授權後,任意數量的客戶端都可以訪問共享數據,就像在其內部存儲中一樣。 在您的 Ubuntu 系統上設置 NFS 服務器非常簡單。 您只需要在服務器和客戶端機器上進行一些必要的安裝和配置,就可以開始了。
在本文中,我們將逐步解釋如何設置 NFS 服務器和客戶端,以允許您將文件從一個 Ubuntu 系統共享到另一個系統。
我們已經在 Ubuntu 18.04 LTS 系統上運行了本文中描述的命令和過程,並且最近在新的 Ubuntu 20.04 上對其進行了測試。 由於我們使用 Ubuntu 命令行終端來執行所有操作,因此您可以使用系統破折號或組合鍵 Ctrl+Alt+T 打開它。
設置主機服務器
為了將主機系統設置為共享目錄,我們需要在其上安裝 NFS 內核服務器,然後創建並導出我們希望客戶端系統訪問的目錄。 請按照以下步驟順利設置主機端:
步驟 1:安裝 NFS 內核服務器
在安裝 NFS 內核服務器之前,我們需要通過以下 apt 命令將我們系統的存儲庫索引更新為 Internet 的存儲庫索引: sudo:
$ sudo apt-get update
上面的命令讓我們可以通過 Ubuntu 存儲庫安裝軟件的最新可用版本。
現在,運行以下命令以在您的系統上安裝 NFS 內核服務器:
$ sudo apt install nfs-kernel-server
系統將提示您一個 Y/n 選項以確認您是否要繼續安裝。 請輸入 Y 然後點擊 Enter 繼續,之後軟件將成功安裝到您的系統上。
步驟 2:創建導出目錄
我們要與客戶端系統共享的目錄稱為導出目錄。 您可以根據自己的選擇命名; 在這裡,我們正在系統的 mnt(mount) 目錄中創建一個名為“sharedfolder”的導出目錄。
使用以下命令,根據需要指定掛載文件夾名稱,以 root 身份通過以下命令:
$ sudo mkdir -p /mnt/sharedfolder
由於我們希望所有客戶端都訪問該目錄,因此我們將通過以下命令取消導出文件夾的限制性權限:
$ sudo chown nobody:nogroup /mnt/sharedfolder
$ sudo chmod 777 /mnt/sharedfolder
現在,客戶端系統上所有組的所有用戶都可以訪問我們的“共享文件夾”。
您可以根據需要在導出文件夾中創建任意數量的子文件夾,供客戶端訪問。
步驟 3:通過 NFS 導出文件為客戶端分配服務器訪問權限
創建導出文件夾後,我們需要為客戶端提供訪問主機服務器的權限。 此權限是通過位於系統 /etc 文件夾中的導出文件定義的。 請使用以下命令通過 Nano 編輯器打開此文件:
$ sudo nano /etc/exports
編輯這個文件需要root權限; 因此你需要使用 sudo 用你的命令。 您還可以在您個人喜歡的任何文本編輯器中打開該文件。
打開文件後,您可以允許訪問:
- 通過在文件中添加以下行來單個客戶端:
/mnt/sharedfolder clientIP(rw,sync,no_subtree_check)
- 通過在文件中添加以下幾行來實現多個客戶端:
/mnt/sharedfolder client1IP(rw,sync,no_subtree_check)
/mnt/sharedfolder client2IP(rw,sync,no_subtree_check)
- 多個客戶端,通過指定客戶端所屬的整個子網:
/mnt/sharedfolder subnetIP/24(rw,sync,no_subtree_check)
在這 example,我們指定了我們想要授予訪問我們的導出文件夾(共享文件夾)的所有客戶端的整個子網:
將所需的行添加到您的導出文件中,然後按 Ctrl+X,輸入 Y,然後按 Enter.
此文件中定義的“rw,sync,no_subtree_check”權限意味著客戶端可以執行:
- 權重: 讀寫操作
- 同步:在應用之前將任何更改寫入光盤
- no_subtree_check: 防止子樹檢查
第四步:導出共享目錄
在主機系統中進行上述所有配置後,現在是通過以下命令導出共享目錄的時候了 sudo:
$ sudo exportfs -a
最後,為了使所有配置生效,重啟NFS Kernel服務器如下:
$sudo systemctl restart nfs-kernel-server
第 5 步:為客戶端打開防火牆
一個重要的步驟是驗證服務器的防火牆是否對客戶端開放,以便他們可以訪問共享內容。 以下命令將配置防火牆以通過 NFS 訪問客戶端:
$ sudo ufw allow from [clientIP or clientSubnetIP] to any port nfs
在我們的 example,我們將通過以下命令訪問整個客戶端機器子網:
$ sudo ufw allow from 192.168.100/24 to any port nfs
現在,當您通過以下命令檢查 Ubuntu 防火牆的狀態時,您將能夠查看客戶端 IP 的操作狀態為“允許”。
$ sudo ufw status
您的主機服務器現在已準備好通過 NFS 內核服務器將共享文件夾導出到指定的客戶端。
配置客戶端機器
現在是時候對客戶端機器進行一些簡單的配置,以便將來自主機的共享文件夾掛載到客戶端,然後可以順利訪問。
第 1 步:安裝 NFS Common
在安裝 NFS Common 應用程序之前,我們需要通過以下 apt 命令將我們系統的存儲庫索引更新為 Internet 的存儲庫索引: sudo:
$ sudo apt-get update
上面的命令讓我們可以通過 Ubuntu 存儲庫安裝軟件的最新可用版本。
現在,運行以下命令以在您的系統上安裝 NFS 通用客戶端:
$ sudo apt-get install nfs-common
系統將提示您一個 Y/n 選項以確認您是否要繼續安裝。 請輸入 Y 然後點擊 Enter 繼續,之後軟件將成功安裝到您的系統上。
步驟 2:為 NFS 主機的共享文件夾創建掛載點
您的客戶端系統需要一個目錄,在該目錄中可以訪問導出文件夾中主機服務器共享的所有內容。 您可以在系統的任何位置創建此文件夾。 我們正在客戶端機器的 mnt 目錄中創建一個掛載文件夾:
$ sudo mkdir -p /mnt/sharedfolder_client
第三步:在客戶端掛載共享目錄
您在上述步驟中創建的文件夾與系統上的任何其他文件夾一樣,除非您將主機上的共享目錄掛載到這個新創建的文件夾中。
使用以下命令將共享文件夾從主機安裝到客戶端上的安裝文件夾:
$ sudo mount serverIP:/exportFolder_server /mnt/mountfolder_client
在我們的 example,我們正在運行以下命令將我們的“sharedfolder”從服務器導出到客戶端機器上的掛載文件夾“sharedfolder_client”:
$ sudo mount 192.168.100.5:/mnt/sharedfolder /mnt/sharedfolder_client
第 4 步:測試連接
請在 NFS 主機服務器的導出文件夾中創建或保存文件。 現在,打開客戶端機器上的掛載文件夾; 您應該能夠查看在此文件夾中共享和訪問的相同文件。
結論
在 Ubuntu 系統上設置 NFS 客戶端-服務器環境是一項簡單的任務。 通過本文,您學習瞭如何在服務器和客戶端上安裝所需的 NFS 包。 您還學習瞭如何配置 NFS 服務器和客戶端計算機,以便可以共享文件夾,然後順利訪問文件夾,而不會出現任何防火牆或與權限相關的故障。 現在,您可以使用 NFS 協議輕鬆地將內容從一個 Ubuntu 系統共享到另一個系統。