如何在CentOS 8上安裝和配置NFS服務器

網絡文件系統(NFS)是一種分布式文件系統協議,使您可以通過網絡共享遠程目錄。 使用NFS,您可以在系統上掛載遠程目錄,並像使用本地文件一樣使用遠程計算機上的文件。

NFS協議默認情況下未加密,並且與Samba不同,它不提供用戶身份驗證。 客戶端的IP地址或主機名限制了對服務器的訪問。

在本教程中,您將完成在CentOS 8上設置NFSv4服務器的必要步驟。我們還將向您展示如何在客戶端上安裝NFS文件系統。

先決條件

我們假設您有一台運行CentOS 8的服務器,我們將在該服務器上設置NFS服務器和其他充當NFS客戶端的計算機。 服務器和客戶端應該能夠通過專用網絡相互通信。 如果您的託管服務提供商不提供私有IP地址,則可以使用公共IP地址並配置服務器防火牆以允許端口上的流量 2049 僅來自受信任的來源。

本示例中的機器具有以下IP:

NFS Server IP: 192.168.33.148
NFS Clients IPs: From the 192.168.33.0/24 range

設置NFS服務器#

本節說明如何安裝必要的程序包,創建和導出NFS目錄以及配置防火牆。

安裝NFS服務器

“ nfs-utils”包為NFS服務器提供了NFS實用程序和守護程序。 要安裝它,請運行以下命令:

sudo dnf install nfs-utils

安裝完成後,通過鍵入以下內容啟用並啟動NFS服務:

sudo systemctl enable --now nfs-server

默認情況下,在CentOS 8 NFS版本3和4.x被啟用,版本2被禁用。 NFSv2現在已經很老了,沒有理由啟用它。 要驗證它,請運行以下命令 cat 命令:

sudo cat /proc/fs/nfsd/versions
-2 +3 +4 +4.1 +4.2

NFS服務器配置選項在 /etc/nfsmount.conf/etc/nfs.conf 文件。 默認設置足以滿足我們的教程要求。

創建文件系統

配置NFSv4服務器時,一個好的做法是使用全局NFS根目錄,並將實際目錄綁定安裝到共享安裝點。 在此示例中,我們將使用 /srv/nfs4 導演作為NFS根。

為了更好地說明如何配置NFS掛載,我們將共享兩個目錄(/var/www/opt/backups)使用不同的配置設置。

/var/www/ 由用戶和組擁有 apache/opt/backups 由…擁有 root

使用以下命令創建導出文件系統 mkdir 命令:

sudo mkdir -p /srv/nfs4/{backups,www}

掛載實際目錄:

sudo mount --bind /opt/backups /srv/nfs4/backupssudo mount --bind /var/www /srv/nfs4/www

要使綁定安裝永久化,請將以下條目添加到 /etc/fstab 文件:

sudo nano /etc/fstab

/ etc / fstab

/opt/backups /srv/nfs4/backups  none   bind   0   0
/var/www     /srv/nfs4/www      none   bind   0   0

導出文件系統

下一步是定義將由NFS服務器,共享選項和允許訪問這些文件系統的客戶端導出的文件系統。 為此,請打開 /etc/exports 文件:

sudo nano /etc/exports

導出 wwwbackups 目錄並僅允許來自客戶端的訪問 192.168.33.0/24 網絡:

/ etc / exports

/srv/nfs4         192.168.33.0/24(rw,sync,no_subtree_check,crossmnt,fsid=0)
/srv/nfs4/backups 192.168.33.0/24(ro,sync,no_subtree_check) 192.168.33.3(rw,sync,no_subtree_check)
/srv/nfs4/www     192.168.33.110(rw,sync,no_subtree_check)

第一行包含 fsid=0 定義NFS根目錄 /srv/nfs。 僅允許來自NFS卷的客戶端對此NFS卷進行訪問 192.168.33.0/24 子網。 的 crossmnt 共享目錄是導出目錄的子目錄是必需的。

第二行顯示如何為一個文件系統指定多個導出規則。 它出口 /srv/nfs4/backups 目錄,並且只允許整體讀取 192.168.33.0/24 範圍,以及對 192.168.33.3。 的 sync 選項告訴NFS在回復之前將更改寫入磁盤。

最後一行應該是不言自明的。 有關所有可用選項的更多信息,請鍵入 man exports 在您的終端中。

保存文件並導出共享:

sudo exportfs -ra

每次您修改 /etc/exports 文件。 如果有任何錯誤或警告,它們將顯示在終端上。

要查看當前活動的出口及其狀態,請使用:

sudo exportfs -v

輸出將包括所有份額及其選項。 如您所見,還有一些我們尚未在 /etc/exports 文件。 這些是默認選項,如果要更改它們,則需要顯式設置這些選項。

/srv/nfs4/backups
		192.168.33.3(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
/srv/nfs4/www 	192.168.33.110(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
/srv/nfs4     	192.168.33.0/24(sync,wdelay,hide,crossmnt,no_subtree_check,fsid=0,sec=sys,rw,secure,root_squash,no_all_squash)
/srv/nfs4/backups
		192.168.33.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,ro,secure,root_squash,no_all_squash)

root_squash 是有關NFS安全性的最重要選項之一。 它可以防止從客戶端連接的root用戶對已安裝的共享具有root特權。 它將映射根 UIDGIDnobody/nogroup UID/GID

為了使客戶端計算機上的用戶具有訪問權限,NFS希望客戶端的用戶和組ID與服務器上的用戶和組ID相匹配。 另一種選擇是使用NFSv4 idmapping功能,將用戶和組ID轉換為名稱,反之亦然。

而已。 至此,您已經在CentOS服務器上設置了NFS服務器。 現在,您可以轉到下一步並配置客戶端,然後連接到NFS服務器。

防火牆配置

FirewallD是Centos 8上的默認防火牆解決方案。

NFS服務包括允許訪問NFS服務器的預定義規則。

以下命令將永久允許從 192.168.33.0/24 子網:

sudo firewall-cmd --new-zone=nfs --permanentsudo firewall-cmd --zone=nfs --add-service=nfs --permanentsudo firewall-cmd --zone=nfs --add-source=192.168.33.0/24 --permanentsudo firewall-cmd --reload

設置NFS客戶端#

既然已經設置了NFS服務器並導出了共享,那麼下一步就是配置客戶端並掛載遠程文件系統。

您還可以在macOS和Windows計算機上掛載NFS共享,但是我們將重點關注Linux系統。

安裝NFS客戶端

在客戶端計算機上,安裝掛載遠程NFS文件系統所需的工具。

  • 在Debian和Ubuntu上安裝NFS客戶端

    該軟件包的名稱包括用於在基於Debian的發行版上安裝NFS文件系統的程序。 nfs-common。 要安裝它,請運行:

    sudo apt updatesudo apt install nfs-common
  • 在CentOS和Fedora上安裝NFS客戶端

    在Red Hat及其衍生版本上安裝 nfs-utils 包:

    sudo yum install nfs-utils

掛載文件系統

我們將在具有IP的客戶端計算機上工作 192.168.33.110,具有對 /srv/nfs4/www 文件系統和對文件的只讀訪問 /srv/nfs4/backups 文件系統。

為安裝點創建兩個新目錄。 您可以在所需的任何位置創建這些目錄。

sudo mkdir -p /backupssudo mkdir -p /srv/www

使用以下命令掛載導出的文件系統: mount 命令:

sudo mount -t nfs -o vers=4 192.168.33.148:/backups /backupssudo mount -t nfs -o vers=4 192.168.33.148:/www /srv/www

哪裡 192.168.33.148 是NFS服務器的IP。 您也可以使用主機名代替IP地址,但是客戶端計算機需要解析該主機名。 通常通過將主機名映射到IP地址中的IP /etc/hosts 文件。

掛載NFSv4文件系統時,您需要省略NFS根目錄,因此 /srv/nfs4/backups 你需要使用 /backups

驗證使用掛載或遠程文件系統是否成功掛載 df 命令:

df -h

該命令將打印所有已掛載的文件系統。 最後兩行是已安裝的共享:

...
192.168.33.148:/backups           9.7G  1.2G  8.5G  13% /backups
192.168.33.148:/www               9.7G  1.2G  8.5G  13% /srv/www

要使掛載在重啟時永久存在,請打開 /etc/fstab 文件:

sudo nano /etc/fstab

並添加以下行:

/ etc / fstab

192.168.33.148:/backups /backups   nfs   defaults,timeo=900,retrans=5,_netdev	0 0
192.168.33.148:/www /srv/www       nfs   defaults,timeo=900,retrans=5,_netdev	0 0

要查找有關掛載NFS文件系統時可用選項的更多信息,請鍵入 man nfs 在您的終端中。

掛載遠程文件系統的另一種選擇是使用 autofs 工具或創建系統單元。

測試NFS訪問#

讓我們通過在每個共享中創建一個新文件來測試對共享的訪問。

首先,嘗試創建一個測試文件 /backups 目錄使用 touch 命令:

sudo touch /backups/test.txt

/backup 文件系統導出為只讀,並且按預期,您將看到一個 Permission denied 錯誤信息:

touch: cannot touch ‘/backups/test’: Permission denied

接下來,嘗試創建一個測試文件到 /srv/www 根目錄使用 sudo 命令:

sudo touch /srv/www/test.txt

同樣,您會看到 Permission denied 信息。

touch: cannot touch ‘/srv/www’: Permission denied

/var/www 目錄由 apache 用戶,並且此共享有 root_squash 選項集,它將根用戶映射到 nobody 用戶和 nogroup 沒有對遠程共享的寫權限的組。

假設一個用戶 apache 在客戶端計算機上存在相同的 UIDGID 就像在遠程服務器上一樣(例如,如果您在兩台計算機上都安裝了apache,情況就是如此),您可以測試以用戶身份創建文件 apache 與:

sudo -u apache touch /srv/www/test.txt

該命令將不顯示任何輸出,表示文件已成功創建。

要驗證它是否列出了 /srv/www 目錄:

ls -la /srv/www

輸出應顯示新創建的文件:

drwxr-xr-x 3 apache apache 4096 Jun 23 22:18 .
drwxr-xr-x 3 root     root     4096 Jun 23 22:29 ..
-rw-r--r-- 1 apache apache    0 Jun 23 21:58 index.html
-rw-r--r-- 1 apache apache    0 Jun 23 22:18 test.txt

卸載NFS文件系統#

如果不再需要遠程NFS共享,則可以使用umount命令將其卸載為任何其他已安裝的文件系統。 例如,要卸載 /backup 分享您將要運行的內容:

sudo umount /backups

如果安裝點在 /etc/fstab 文件,請確保刪除該行或通過添加註釋掉它 # 在該行的開頭。

結論#

在本教程中,我們向您展示了如何設置NFS服務器以及如何在客戶端計算機上安裝遠程文件系統。 如果您要在生產中實現NFS並共享敏感數據,則啟用kerberos身份驗證是一個好主意。

作為NFS的替代方法,您可以使用SSHFS通過SSH連接安裝遠程目錄。 SSHFS默認情況下是加密的,並且更易於配置和使用。

如有任何疑問,請隨時發表評論。

centos nfs安裝終端

Sidebar