NFS網(wǎng)絡(luò)文件系統(tǒng)是一種分布式文件系統(tǒng)協(xié)議,使您可以通過網(wǎng)絡(luò)共享遠(yuǎn)程目錄。
使用NFS,您可以在系統(tǒng)上掛載遠(yuǎn)程計算機(jī)目錄,并像對待本地文件一樣使用遠(yuǎn)程計算機(jī)文件。
NFS協(xié)議是未加密的協(xié)議,并且與Samba不同,它不提供用戶身份驗(yàn)證。使用客戶端IP地址或主機(jī)名來限制客戶端對服務(wù)器的訪問。
在本教程中,我們將介紹如何在CentOS 8設(shè)置NFS v4服務(wù)器。我們還將向您展示如何在客戶端計算機(jī)掛載NFS文件系統(tǒng)。
本教程假定您有一臺正在運(yùn)行的CentOS 8服務(wù)器,另一臺運(yùn)行著任意Linux發(fā)行版的計算機(jī)。
服務(wù)器和客戶端能夠通過網(wǎng)絡(luò)相互通信。如果您托管服務(wù)器提供商不提供私有IP地址。可以使用公共IP地址并設(shè)置服務(wù)器防火墻僅允許來自受信任源端口2049
。
本教程中的計算機(jī)的IP地址是NFS Server/服務(wù)器 IP: 192.168.33.10。NFS Clients/客戶端 IPs: 192.168.33.0/24 網(wǎng)段內(nèi)任意IP。
安裝NFS服務(wù)器
要在CentOS 8安裝NFS服務(wù)器,你只需要運(yùn)行apt命令sudo apt install nfs-kernel-server
更新軟件包索引并安裝NFS服務(wù)器軟件包。
安裝完成后,運(yùn)行systemctl
命令啟用并自動啟動NFS服務(wù)在重啟時。
默認(rèn)情況下,在CentOS 8,NFS版本2是禁用的。版本3和版本4已啟用。NFSv2現(xiàn)在已經(jīng)很老了,我們沒有理由再啟用它。
NFS服務(wù)器配置文件分別是etc/default/nfs-kernel-server
和etc/default/nfs-common
。
您可以運(yùn)行cat
命令sudo cat /proc/fs/nfsd/versions
來驗(yàn)證正在運(yùn)行的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
創(chuàng)建共享目錄
配置NFSv4服務(wù)器時,一個好的做法是使用全局NFS根目錄,并將實(shí)際目錄綁定到共享掛載點(diǎn)。在本教程中,我們將使用/srv/nfs4
目錄作為NFS根目錄。
我們將共享具有不同配置的兩個目錄/var/www
和/opt/backups
,以更好地說明如何配置NFS。
/var/www/
由www-data
用戶和組擁有和/opt/backups
它的擁有者是root
。
請運(yùn)行以下mkdir
命令創(chuàng)建要共享的目錄/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打開文件。
復(fù)制粘帖以下行到文件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
導(dǎo)出文件系統(tǒng)
下一步就是定義共享選項和訪問限制然后通過NFS服務(wù)器導(dǎo)出。etc/exports
文件包含了描述如何導(dǎo)出目錄的說明。
在本教程中,我們需要導(dǎo)出www
和backups
目錄,并僅允許IP是192.168.33.0/24
網(wǎng)段的客戶端訪問。
繼續(xù)使用你喜歡的文本編輯器打開文件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
子網(wǎng)的客戶端對此NFS訪問權(quán)限。crossmnt
選項是必需的,它用于共享目錄和導(dǎo)出子目錄。
第二行顯示如何為一個文件系統(tǒng)指定多個導(dǎo)出規(guī)則。它導(dǎo)出/srv/nfs4/backups
目錄,只允許192.168.33.0/24
網(wǎng)段的客戶端有讀的權(quán)限,并且僅允許IP地址是192.168.33.3
的客戶端具有讀和寫權(quán)限。sync
選項告訴NFS在恢復(fù)之前將更改寫入磁盤。
最后一行應(yīng)該是不言自明的了。所有可用選項的更多信息,請在終端中輸入man exports
查看手冊。
保存文件并退出vim編輯器,然后運(yùn)行命令導(dǎo)出目錄sudo exportfs -ra
。
sudo exportfs -ra
每次修改etc/exports
文件時,都需要運(yùn)行命令sudo exportfs -ra
。如果有任何錯誤或警告,錯誤消息將打印在終端。
要查看當(dāng)前活動的export及其狀態(tài),請運(yùn)行命令sudo exportfs -v
。輸出將包含所有共享目錄及其選項。
如您所見,還有一些我們尚未在etc/exports
文件中定義的選項。這些是默認(rèn)選項,如果要更改它們,則需要顯式設(shè)置這些選項。
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
默認(rèn)情況下是啟用的。這是NFS安全性的最重要的選擇之一。
這樣可以防止從客戶端對已掛載的共享具有root權(quán)限。它將映射rootUID
和GID
到nobody
/nogroup
UID
/GID
。
為了使客戶端計算機(jī)能夠訪問,NFS希望客戶端的用戶和組ID與服務(wù)器的用戶和組ID匹配。另一種選擇是使用NFSv4 idmapping功能,將用戶和組ID轉(zhuǎn)換為名稱。
至此,您已經(jīng)在CentOS 8安裝配置NFS服務(wù)器。現(xiàn)在,您可以轉(zhuǎn)到下一步配置客戶端并連接到NFS服務(wù)器。
NFS 防火墻配置
如果您在計算機(jī)上運(yùn)行著FirewallD防火墻,則需要打開端口2049
,允許NFS端口的連接。假設(shè)您正在使用FirewallD用來管理iptables防火墻。
為了僅允許來自192.168.33.0/24
子網(wǎng)的計算機(jī)訪問NFS服務(wù)器。請運(yùn)行命令sudo firewall-cmd --zone=nfs --add-source=192.168.33.0/24 --permanent
。
sudo firewall-cmd --zone=nfs --add-service=nfs --permanent
命令將會允許任何源IP地址。
要驗(yàn)證防火墻規(guī)則的更改,請運(yùn)行命令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
安裝設(shè)置 NFS客戶端
現(xiàn)在我們已經(jīng)設(shè)置NFS服務(wù)器并導(dǎo)出了共享,則下一步將配置客戶端并掛載NFS文件系統(tǒng)。
您也可以在macOS和Windows計算機(jī)掛載NFS共享目錄,但是我們將重點(diǎn)關(guān)注Linux系統(tǒng)。
在客戶端計算機(jī),我們僅需要安裝掛載遠(yuǎn)程N(yùn)FS文件系統(tǒng)所需的軟件工具。
如果你的計算機(jī)運(yùn)行的是基于Debian的Linux發(fā)行版,例如Ubuntu,Linux mint。請運(yùn)行命令sudo apt update && sudo apt install nfs-common
安裝NFS文件系統(tǒng)掛載軟件。
如果你的計算機(jī)運(yùn)行的是基于RedHat的Linux發(fā)行版,例如CentOS,F(xiàn)edora。請運(yùn)行命令sudo yum install nfs-utils
安裝NFS文件系統(tǒng)掛載軟件。
sudo apt update && sudo apt install nfs-common
sudo yum install nfs-utils
掛載 NFS文件系統(tǒng)
我們將在IP地址是192.168.33.110
客戶端計算機(jī)掛載NFS共享,該IP具有對/srv/nfs4/www
目錄的讀寫權(quán)限和對/srv/nfs4/backups
的只讀權(quán)限。
為掛載兩個目錄,我們將創(chuàng)建兩個目錄作為掛載點(diǎn)。您可以在你所需的任何目錄創(chuàng)建此掛載點(diǎn)目錄。
然后運(yùn)行mount
命令掛載NFS共享文件系統(tǒng),vers=4
表示使用V4版本的NFS,192.168.33.10:/backups
NFS服務(wù)器共享目錄。/backups
掛載點(diǎn)。
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
您也可以使用主機(jī)名代替NFS服務(wù)器IP地址192.168.33.10
。但是客戶端計算機(jī)必須可以將主機(jī)名解析為IP地址。
你可以在etc/hosts
文件添加主機(jī)名與IP的映射來完成,這是hosts文件格式127.0.1.1 ubuntu
,第一列是IP地址,第二列是主機(jī)名稱,可以是任何名稱。
掛載NFS v4版本的文件系統(tǒng)時,可以省略NFS根目錄,因此你可以使用/backups
,而不是/srv/nfs4/backups
掛載NFS共享目錄。
最后使用mount或df
命令驗(yàn)證是否成功掛載NFS共享目錄,df命令將打印所有已掛載的文件系統(tǒng)。最后兩行是已掛載的共享目錄。
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
文件。復(fù)制粘帖以下行到文件etc/fstab
。
etc/fstab
文件包含一個掛載點(diǎn)列表,這些條目定義在系統(tǒng)啟動時將在何處以及如何掛載文件系統(tǒng)。
要查找掛載NFS文件系統(tǒng)可用選項的更多信息,請在終端中鍵入man nfs
。掛載共享目錄的另一種選擇是使用autofs
工具或創(chuàng)建一個systemd服務(wù)文件。
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訪問
讓我們?yōu)槊總€共享目錄創(chuàng)建一個文件來測試對NFS共享目錄的訪問。首先,嘗試/backups
掛載點(diǎn)運(yùn)行touch
命令創(chuàng)建文件。
/backup
文件系統(tǒng)被設(shè)置為只讀權(quán)限,因此你會看到一個權(quán)限拒絕錯誤消息touch: cannot touch ‘/backups/test’: Permission denied。
sudo touch /backups/test.txt
touch: cannot touch ‘/backups/test’: Permission denied
接下來,嘗試在/srv/www
目錄,運(yùn)行命令sudo touch /srv/www/test.txt
創(chuàng)建測試文件。
同樣,您將看到錯誤消息touch: cannot touch ‘/srv/www’: Permission denied,也就是權(quán)限拒絕錯誤。
sudo touch /srv/www/test.txt
touch: cannot touch ‘/srv/www’: Permission denied
您可能還記得/var/www
目錄所有者是www-data
用戶。此共享設(shè)置root_squash
選項。
root_squash
選項將root用戶映射到遠(yuǎn)程服務(wù)器nobody
用戶和nogroup
組。nobody
用戶和nogroup
組是沒有寫權(quán)限讀寫導(dǎo)出的共享目錄。
假設(shè)在客戶端計算機(jī)存在用戶www-data
,在服務(wù)器端也有用戶www-data
且相同的UID
和GID
。
則可以運(yùn)行命令sudo -u www-data touch /srv/www/test.txt
在/srv/www/
共享目錄中創(chuàng)建文件。
該命令將不顯示任何輸出,表示文件已成功創(chuàng)建。要驗(yàn)證它可以運(yùn)行l(wèi)s命令列出/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文件系統(tǒng)
如果不再需要遠(yuǎn)程N(yùn)FS共享,則可以使用umount命令將其卸載已掛載的任何目錄。
例如要卸載/backup
NFS共享,請運(yùn)行命令sudo umount /backups
。
如果在etc/fstab
文件中定義了掛載記錄,請確保刪除包含掛載點(diǎn)的行或者在該行的開頭添加#
注釋掉。
sudo umount /backups
結(jié)論
在本教程中,我們向您展示了如何在CentOS 8設(shè)置NFS服務(wù)器以及如何在客戶端計算機(jī)掛載NFS文件系統(tǒng)。
如果要在生產(chǎn)中實(shí)施NFS并共享敏感數(shù)據(jù),建議啟用kerberos身份驗(yàn)證。作為NFS的安全替代方案,您可以使用SSHFS通過SSH連接掛載NFS共享。
SSHFS默認(rèn)是加密的協(xié)議,并且更易于配置和使用。
-
服務(wù)器
+關(guān)注
關(guān)注
12文章
9123瀏覽量
85328 -
文件系統(tǒng)
+關(guān)注
關(guān)注
0文章
284瀏覽量
19904 -
NFS
+關(guān)注
關(guān)注
1文章
53瀏覽量
26101 -
CentOS
+關(guān)注
關(guān)注
0文章
77瀏覽量
13742
發(fā)布評論請先 登錄
相關(guān)推薦
評論