NFS網絡文件系統是一種分布式文件系統協議,使您可以通過網絡共享遠程目錄。
使用NFS,您可以在系統上掛載遠程計算機目錄,并像對待本地文件一樣使用遠程計算機文件。
NFS協議是未加密的協議,并且與Samba不同,它不提供用戶身份驗證。使用客戶端IP地址或主機名來限制客戶端對服務器的訪問。
在本教程中,我們將介紹如何在CentOS 8設置NFS v4服務器。我們還將向您展示如何在客戶端計算機掛載NFS文件系統。
本教程假定您有一臺正在運行的CentOS 8服務器,另一臺運行著任意Linux發行版的計算機。
服務器和客戶端能夠通過網絡相互通信。如果您托管服務器提供商不提供私有IP地址。可以使用公共IP地址并設置服務器防火墻僅允許來自受信任源端口2049
。
本教程中的計算機的IP地址是NFS Server/服務器 IP: 192.168.33.10。NFS Clients/客戶端 IPs: 192.168.33.0/24 網段內任意IP。
安裝NFS服務器
要在CentOS 8安裝NFS服務器,你只需要運行apt命令sudo apt install nfs-kernel-server
更新軟件包索引并安裝NFS服務器軟件包。
安裝完成后,運行systemctl
命令啟用并自動啟動NFS服務在重啟時。
默認情況下,在CentOS 8,NFS版本2是禁用的。版本3和版本4已啟用。NFSv2現在已經很老了,我們沒有理由再啟用它。
NFS服務器配置文件分別是etc/default/nfs-kernel-server
和etc/default/nfs-common
。
您可以運行cat
命令sudo cat /proc/fs/nfsd/versions
來驗證正在運行的NFS版本。
sudo dnf install nfs-utils
sudo systemctl enable --now nfs-server
sudo cat /proc/fs/nfsd/versions
-2 +3 +4 +4.1 +4.2
創建共享目錄
配置NFSv4服務器時,一個好的做法是使用全局NFS根目錄,并將實際目錄綁定到共享掛載點。在本教程中,我們將使用/srv/nfs4
目錄作為NFS根目錄。
我們將共享具有不同配置的兩個目錄/var/www
和/opt/backups
,以更好地說明如何配置NFS。
/var/www/
由www-data
用戶和組擁有和/opt/backups
它的擁有者是root
。
請運行以下mkdir
命令創建要共享的目錄/var/www
和/opt/backups
。然后將目錄/var/www
和/opt/backups
目錄綁定到/srv/nfs4
根目錄。
sudo mkdir -p /var/www/
sudo mkdir -p /opt/backups
sudo mkdir -p /srv/nfs4/backups
sudo mkdir -p /srv/nfs4/www
sudo mount --bind /opt/backups /srv/nfs4/backups
sudo mount --bind /var/www /srv/nfs4/www
要在重啟后自動綁定目錄,請使用你喜歡的文本編輯器打開文件etc/fstab
,在本教程中我們將使用vim打開文件。
復制粘帖以下行到文件etc/fstab
,然后保存文件并退出vim編輯器。
sudo vim etc/fstab
/opt/backups /srv/nfs4/backups none bind 0 0
/var/www /srv/nfs4/www none bind 0 0
etc/fstab
導出文件系統
下一步就是定義共享選項和訪問限制然后通過NFS服務器導出。etc/exports
文件包含了描述如何導出目錄的說明。
在本教程中,我們需要導出www
和backups
目錄,并僅允許IP是192.168.33.0/24
網段的客戶端訪問。
繼續使用你喜歡的文本編輯器打開文件etc/exports
,在本教程中我們將使用vim打開文件。
sudo vim 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)
etc/exports
第一行包含fsid=0
定義NFS根目錄/srv/nfs4
。僅允許來自192.168.33.0/24
子網的客戶端對此NFS訪問權限。crossmnt
選項是必需的,它用于共享目錄和導出子目錄。
第二行顯示如何為一個文件系統指定多個導出規則。它導出/srv/nfs4/backups
目錄,只允許192.168.33.0/24
網段的客戶端有讀的權限,并且僅允許IP地址是192.168.33.3
的客戶端具有讀和寫權限。sync
選項告訴NFS在恢復之前將更改寫入磁盤。
最后一行應該是不言自明的了。所有可用選項的更多信息,請在終端中輸入man exports
查看手冊。
保存文件并退出vim編輯器,然后運行命令導出目錄sudo exportfs -ra
。
sudo exportfs -ra
每次修改etc/exports
文件時,都需要運行命令sudo exportfs -ra
。如果有任何錯誤或警告,錯誤消息將打印在終端。
要查看當前活動的export及其狀態,請運行命令sudo exportfs -v
。輸出將包含所有共享目錄及其選項。
如您所見,還有一些我們尚未在etc/exports
文件中定義的選項。這些是默認選項,如果要更改它們,則需要顯式設置這些選項。
sudo exportfs -v
/srv/nfs4/backups
192.168.33.3(rw,wdelay,root_squash,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
/srv/nfs4/www 192.168.33.110(rw,wdelay,root_squash,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
/srv/nfs4 192.168.33.0/24(rw,wdelay,crossmnt,root_squash,no_subtree_check,fsid=0,sec=sys,rw,secure,root_squash,no_all_squash)
/srv/nfs4/backups
192.168.33.0/24(ro,wdelay,root_squash,no_subtree_check,sec=sys,ro,secure,root_squash,no_all_squash)
在CentOS 8,root_squash
默認情況下是啟用的。這是NFS安全性的最重要的選擇之一。
這樣可以防止從客戶端對已掛載的共享具有root權限。它將映射rootUID
和GID
到nobody
/nogroup
UID
/GID
。
為了使客戶端計算機能夠訪問,NFS希望客戶端的用戶和組ID與服務器的用戶和組ID匹配。另一種選擇是使用NFSv4 idmapping功能,將用戶和組ID轉換為名稱。
至此,您已經在CentOS 8安裝配置NFS服務器。現在,您可以轉到下一步配置客戶端并連接到NFS服務器。
NFS 防火墻配置
如果您在計算機上運行著FirewallD防火墻,則需要打開端口2049
,允許NFS端口的連接。假設您正在使用FirewallD用來管理iptables防火墻。
為了僅允許來自192.168.33.0/24
子網的計算機訪問NFS服務器。請運行命令sudo firewall-cmd --zone=nfs --add-source=192.168.33.0/24 --permanent
。
sudo firewall-cmd --zone=nfs --add-service=nfs --permanent
命令將會允許任何源IP地址。
要驗證防火墻規則的更改,請運行命令sudo firewall-cmd --reload
。輸出將會顯示允許端口2049
的連接。。
sudo firewall-cmd --new-zone=nfs --permanent
sudo firewall-cmd --zone=nfs --add-service=nfs --permanent
sudo firewall-cmd --zone=nfs --add-source=192.168.33.0/24 --permanent
sudo firewall-cmd --reload
安裝設置 NFS客戶端
現在我們已經設置NFS服務器并導出了共享,則下一步將配置客戶端并掛載NFS文件系統。
您也可以在macOS和Windows計算機掛載NFS共享目錄,但是我們將重點關注Linux系統。
在客戶端計算機,我們僅需要安裝掛載遠程NFS文件系統所需的軟件工具。
如果你的計算機運行的是基于Debian的Linux發行版,例如Ubuntu,Linux mint。請運行命令sudo apt update && sudo apt install nfs-common
安裝NFS文件系統掛載軟件。
如果你的計算機運行的是基于RedHat的Linux發行版,例如CentOS,Fedora。請運行命令sudo yum install nfs-utils
安裝NFS文件系統掛載軟件。
sudo apt update && sudo apt install nfs-common
sudo yum install nfs-utils
掛載 NFS文件系統
我們將在IP地址是192.168.33.110
客戶端計算機掛載NFS共享,該IP具有對/srv/nfs4/www
目錄的讀寫權限和對/srv/nfs4/backups
的只讀權限。
為掛載兩個目錄,我們將創建兩個目錄作為掛載點。您可以在你所需的任何目錄創建此掛載點目錄。
然后運行mount
命令掛載NFS共享文件系統,vers=4
表示使用V4版本的NFS,192.168.33.10:/backups
NFS服務器共享目錄。/backups
掛載點。
sudo mkdir -p /backups
sudo mkdir -p /srv/www
sudo mount -t nfs -o vers=4 192.168.33.10:/backups /backups
sudo mount -t nfs -o vers=4 192.168.33.10:/www /srv/www
您也可以使用主機名代替NFS服務器IP地址192.168.33.10
。但是客戶端計算機必須可以將主機名解析為IP地址。
你可以在etc/hosts
文件添加主機名與IP的映射來完成,這是hosts文件格式127.0.1.1 ubuntu
,第一列是IP地址,第二列是主機名稱,可以是任何名稱。
掛載NFS v4版本的文件系統時,可以省略NFS根目錄,因此你可以使用/backups
,而不是/srv/nfs4/backups
掛載NFS共享目錄。
最后使用mount或df
命令驗證是否成功掛載NFS共享目錄,df命令將打印所有已掛載的文件系統。最后兩行是已掛載的共享目錄。
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00 38G 1.7G 36G 5% /
devtmpfs 236M 0 236M 0% /dev
tmpfs 244M 0 244M 0% /dev/shm
tmpfs 244M 4.5M 240M 2% /run
tmpfs 244M 0 244M 0% /sys/fs/cgroup
/dev/sda2 1014M 87M 928M 9% /boot
tmpfs 49M 0 49M 0% /run/user/1000
192.168.33.10:/backups 9.7G 1.2G 8.5G 13% /backups
192.168.33.10:/www 9.7G 1.2G 8.5G 13% /srv/www
要自動掛載NFS共享目錄,請你喜歡的編輯器打開etc/fstab
文件。復制粘帖以下行到文件etc/fstab
。
etc/fstab
文件包含一個掛載點列表,這些條目定義在系統啟動時將在何處以及如何掛載文件系統。
要查找掛載NFS文件系統可用選項的更多信息,請在終端中鍵入man nfs
。掛載共享目錄的另一種選擇是使用autofs
工具或創建一個systemd服務文件。
sudo vim etc/fstab
192.168.33.10:/backups /backups nfs defaults,timeo=900,retrans=5,_netdev 0 0
192.168.33.10:/www /srv/www nfs defaults,timeo=900,retrans=5,_netdev 0 0
etc/fstab
測試NFS訪問
讓我們為每個共享目錄創建一個文件來測試對NFS共享目錄的訪問。首先,嘗試/backups
掛載點運行touch
命令創建文件。
/backup
文件系統被設置為只讀權限,因此你會看到一個權限拒絕錯誤消息touch: cannot touch ‘/backups/test’: Permission denied。
sudo touch /backups/test.txt
touch: cannot touch ‘/backups/test’: Permission denied
接下來,嘗試在/srv/www
目錄,運行命令sudo touch /srv/www/test.txt
創建測試文件。
同樣,您將看到錯誤消息touch: cannot touch ‘/srv/www’: Permission denied,也就是權限拒絕錯誤。
sudo touch /srv/www/test.txt
touch: cannot touch ‘/srv/www’: Permission denied
您可能還記得/var/www
目錄所有者是www-data
用戶。此共享設置root_squash
選項。
root_squash
選項將root用戶映射到遠程服務器nobody
用戶和nogroup
組。nobody
用戶和nogroup
組是沒有寫權限讀寫導出的共享目錄。
假設在客戶端計算機存在用戶www-data
,在服務器端也有用戶www-data
且相同的UID
和GID
。
則可以運行命令sudo -u www-data touch /srv/www/test.txt
在/srv/www/
共享目錄中創建文件。
該命令將不顯示任何輸出,表示文件已成功創建。要驗證它可以運行ls命令列出/srv/www
目錄文件。
sudo -u www-data touch /srv/www/test.txt
ls -la /srv/www
drwxr-xr-x 3 www-data www-data 4096 Jun 23 22:18 .
drwxr-xr-x 3 root root 4096 Jun 23 22:29 ..
-rw-r--r-- 1 www-data www-data 0 Jun 23 21:58 index.html
-rw-r--r-- 1 www-data www-data 0 Jun 23 22:18 test.txt
卸載NFS文件系統
如果不再需要遠程NFS共享,則可以使用umount命令將其卸載已掛載的任何目錄。
例如要卸載/backup
NFS共享,請運行命令sudo umount /backups
。
如果在etc/fstab
文件中定義了掛載記錄,請確保刪除包含掛載點的行或者在該行的開頭添加#
注釋掉。
sudo umount /backups
結論
在本教程中,我們向您展示了如何在CentOS 8設置NFS服務器以及如何在客戶端計算機掛載NFS文件系統。
如果要在生產中實施NFS并共享敏感數據,建議啟用kerberos身份驗證。作為NFS的安全替代方案,您可以使用SSHFS通過SSH連接掛載NFS共享。
SSHFS默認是加密的協議,并且更易于配置和使用。
-
服務器
+關注
關注
12文章
9021瀏覽量
85184 -
文件系統
+關注
關注
0文章
284瀏覽量
19883 -
NFS
+關注
關注
1文章
52瀏覽量
26090 -
CentOS
+關注
關注
0文章
77瀏覽量
13731
發布評論請先 登錄
相關推薦
評論