網(wǎng)絡(luò)文件系統(tǒng)(NFS)是一種分布式文件系統(tǒng)協(xié)議,允許您通過網(wǎng)絡(luò)共享遠(yuǎn)程目錄。 使用 NFS ,您可以在系統(tǒng)上安裝遠(yuǎn)程目錄,并使用遠(yuǎn)程計(jì)算機(jī)上的文件,就像它們是本地文件一樣。
默認(rèn)情況下,NFS
協(xié)議未加密,與 Samba
不同,它不提供用戶身份驗(yàn)證。 對(duì)服務(wù)器的訪問受客戶端IP地址或主機(jī)名的限制。
在本教程中,我們將討論如何在 Ubuntu 18.04
上設(shè)置 NFSv4
服務(wù)器。 我們還將向您展示如何在客戶端上安裝 NFS
文件系統(tǒng)。
準(zhǔn)備條件
此示例假定您有一臺(tái)運(yùn)行 Ubuntu 18.04
的服務(wù)器和另一臺(tái)運(yùn)行任何其他 Linux
發(fā)行版的服務(wù)器。 服務(wù)器和客戶端應(yīng)該能夠通過專用網(wǎng)絡(luò)相互通信。 如果您的托管服務(wù)提供商不提供私有 IP 地址,您可以使用公共 IP 地址并配置服務(wù)器防火墻,以允許端口 2049
上的流量?jī)H來自可信來源。
此示例中的計(jì)算機(jī)具有以下IP:
NFS Server IP: 192.168.33.10
NFS Clients IPs: From the 192.168.33.0/24 range
設(shè)置 NFS
服務(wù)器
我們將從安裝和配置 NFS
服務(wù)器開始。
安裝NFS服務(wù)器
刷新包索引并安裝 NFS
服務(wù)器包:
sudo apt update
sudo apt install nfs-kernel-server
一旦安裝完成, NFS
服務(wù)將會(huì)自動(dòng)啟動(dòng)。
默認(rèn)情況下,在 Ubuntu 18.04
上禁用 NFS
版本 2。 版本 3 和 4 已啟用。 您可以通過運(yùn)行以下 cat
命令來驗(yàn)證:
sudo cat /proc/fs/nfsd/versions
輸出類似如下:
-2 +3 +4 +4.1 +4.2
NFS v2
現(xiàn)在很老了,沒有理由啟用它。
NFS
服務(wù)器配置選項(xiàng)在 /etc/default/nfs-kernel-server
和 /etc/default/nfs-common
文件中設(shè)置。 在我們的例子中,默認(rèn)設(shè)置就足夠了。
創(chuàng)建文件系統(tǒng)
配置 NFSv4
服務(wù)器時(shí),最好使用全局 NFS
根目錄,并將實(shí)際目錄綁定到共享掛載點(diǎn)。 在此示例中,我們將使用 /srv/nfs4 director
作為 NFS
根目錄。
我們將分享兩個(gè)具有不同配置設(shè)置的目錄 ( /var/www
和 /opt/backups
) ,以更好地解釋如何配置 NFS
掛載。
/var/www/
由用戶和組擁有,www-data
和 /opt/backups
由 root
擁有。
- 使用
mkdir
命令創(chuàng)建導(dǎo)出文件系統(tǒng):
sudo mkdir -p /srv/nfs4/backups
sudo mkdir -p /srv/nfs4/www
- 掛載實(shí)際目錄:
sudo mount --bind /opt/backups /srv/nfs4/backups
sudo mount --bind /var/www /srv/nfs4/www
- 要使綁定掛載永久化,請(qǐng)打開 /etc/fstab 文件:
sudo vim /etc/fstab
- 并添加以下行:
/opt/backups /srv/nfs4/backups none bind 0 0
/var/www /srv/nfs4/www none bind 0 0
導(dǎo)出文件系統(tǒng)
下一步是定義將由 NFS
服務(wù)器,共享選項(xiàng)和允許訪問這些文件系統(tǒng)的客戶端導(dǎo)出的文件系統(tǒng)。 為此,請(qǐng)打開 /etc /exports
文件:
/etc/exports
文件還包含描述如何導(dǎo)出目錄的注釋。
在我們的例子中,我們需要導(dǎo)出 www 和 backups 目錄,并且只允許訪問 192.168.33.0/24 網(wǎng)絡(luò)上的客戶端:
- 內(nèi)容如下:
/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
卷上的訪問權(quán)限僅授予192.168.33.0/24
子網(wǎng)中的客戶端。 需要 crossmnt
選項(xiàng)來共享作為導(dǎo)出目錄的子目錄的目錄。
在第二行顯示如何為一個(gè)文件系統(tǒng)指定多個(gè)導(dǎo)出規(guī)則。 它導(dǎo)出 /srv/nfs4/backups
目錄,并且只允許對(duì)整個(gè)192.168.33.0/24
范圍的讀訪問以及對(duì) 192.168.33.3
的讀寫訪問。 sync
選項(xiàng)告訴NFS在回復(fù)之前將更改寫入磁盤。
最后一行應(yīng)該是不言自明的。 有關(guān)所有可用選項(xiàng)的更多信息,請(qǐng)?jiān)诮K端中鍵入 man exports。
- 保存文件并導(dǎo)出共享:
sudo exportfs -ra
每次修改 /etc/exports
文件時(shí)都需要運(yùn)行上面的命令。 如果有任何錯(cuò)誤或警告,它們將顯示在終端上。
- 要查看當(dāng)前活動(dòng)的導(dǎo)出及其狀態(tài),請(qǐng)使用:
sudo exportfs -v
輸出將包括其選項(xiàng)的所有共享。 如您所見,還有一些我們尚未在 /etc/exports 文件中定義的選項(xiàng)。 這些是默認(rèn)選項(xiàng),如果您想更改它們,您需要明確設(shè)置這些選項(xiàng)。
內(nèi)容如下:
/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)
在 Ubuntu
上,默認(rèn)情況下啟用 root_squash
。 這是有關(guān)NFS安全性的最重要選項(xiàng)之一。 它可以防止從客戶端連接的 root
用戶對(duì)已掛載的共享具有 root
權(quán)限。 它會(huì)將根 UID
和 GID
映射到 nobody/nogroup UID/GID
。
為了使客戶端計(jì)算機(jī)上的用戶能夠訪問, NFS
希望客戶端的用戶和組 ID
與服務(wù)器上的用戶和組 ID
匹配。 另一種選擇是使用 NFSv4 idmapping
功能將用戶和組 ID
轉(zhuǎn)換為名稱,反之亦然。
此時(shí),您已在 Ubuntu
服務(wù)器上設(shè)置了 NFS
服務(wù)器。 您現(xiàn)在可以轉(zhuǎn)到下一步并配置客戶端并連接到 NFS
服務(wù)器。
配置防火墻
如果在網(wǎng)絡(luò)上運(yùn)行防火墻,則需要添加一條規(guī)則以啟用 NFS 端口上的流量。
- 假設(shè)您使用 UFW 管理防火墻以允許從 192.168.33.0/24 子網(wǎng)進(jìn)行訪問,則需要運(yùn)行以下命令:
sudo ufw allow from 192.168.33.0/24 to any port nfs
- 要驗(yàn)證更改,運(yùn)行以下命令:
sudo ufw status
- 輸出應(yīng)顯示允許端口2049上的流量:
To Action From
-- ------ ----
2049 ALLOW 192.168.33.0/24
22/tcp ALLOW Anywhere
22/tcp (v6) ALLOW Anywhere (v6)
既然已設(shè)置NFS
服務(wù)器并導(dǎo)出共享,則下一步將配置客戶端并裝入遠(yuǎn)程文件系統(tǒng)。您也可以在 macOS
和 Windows
機(jī)器上安裝 NFS 共享,但我們將專注于 Linux
系統(tǒng)。
安裝NFS客戶端
在客戶端計(jì)算機(jī)上,我們只需要安裝安裝遠(yuǎn)程 NFS 文件系統(tǒng)所需的工具。
在 Debian
和 Ubuntu
上安裝 NFS
客戶端
包含用于在基于 Debian
的發(fā)行版上掛載 NFS
文件系統(tǒng)的程序的程序包的名稱是 nfs-common
。 要安裝它運(yùn)行:
sudo apt update
sudo apt install nfs-common
在 CentOS
和 Fedora
上安裝 NFS
客戶端,在 Red Hat
及其衍生產(chǎn)品上安裝 nfs-utils
包:
sudo yum install nfs-utils
掛載文件系統(tǒng)
我們將在 IP 192.168.33.110
的客戶端計(jì)算機(jī)上工作,它具有對(duì) /srv/nfs4/www
文件系統(tǒng)的讀寫訪問權(quán)限,并且只讀訪問 /srv/nfs4/backups
文件系統(tǒng)。
為掛載點(diǎn)創(chuàng)建兩個(gè)新目錄。 您可以在任何所需位置創(chuàng)建此目錄。
sudo mkdir -p /backups
sudo mkdir -p /srv/www
使用 mount
命令掛載導(dǎo)出的文件系統(tǒng):
我們可以通過 mount --bind
命令來將兩個(gè)目錄連接起來,mount --bind
命令是將前一個(gè)目錄掛載到后一個(gè)目錄上,所有對(duì)后一個(gè)目錄的訪問其實(shí)都是對(duì)前一個(gè)目錄的訪問
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
其中 192.168.33.10
是 NFS
服務(wù)器的 IP
。 您也可以使用主機(jī)名而不是 IP 地址,但客戶端計(jì)算機(jī)需要解析它。 這通常通過將主機(jī)名映射到 /etc/hosts
文件中的IP來完成。安裝 NFSv4 文件系統(tǒng)時(shí),需要省略 NFS 根目錄,因此需要使用/backups
而不是 /srv/nfs4/backups
。
- 使用 mount 或 df 命令驗(yàn)證是否已成功裝入遠(yuǎn)程文件系統(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
- 要在重新引導(dǎo)時(shí)使掛載永久化,請(qǐng)打開 /etc/fstab 文件:
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
要在安裝 NFS 文件系統(tǒng)時(shí)查找有關(guān)可用選項(xiàng)的更多信息,請(qǐng)?jiān)诮K端中鍵入 man nfs
。
安裝遠(yuǎn)程文件系統(tǒng)的另一個(gè)選擇是使用 autofs
工具或創(chuàng)建 systemd
單元。
測(cè)試NFS訪問
讓我們通過為每個(gè)共享創(chuàng)建一個(gè)新文件來測(cè)試對(duì)共享的訪問。
- 首先,嘗試使用
touch
命令在/backups
目錄中創(chuàng)建一個(gè)測(cè)試文件:
sudo touch /backups/test.txt
/backup
文件系統(tǒng)以只讀方式導(dǎo)出,正如預(yù)期的那樣,您將看到 Permission denied
錯(cuò)誤消息:
touch: cannot touch /backups/test: Permission denied
- 接下來,嘗試使用 sudo 命令以 root 身份創(chuàng)建 /srv/www 目錄的測(cè)試文件:
sudo touch /srv/www/test.txt
- 同樣,您將看到Permission denied消息。
touch: cannot touch '/srv/www': Permission denied
如果您記得 /var/www
目錄由 www-data
用戶擁有,并且此共享具有 root_squash
選項(xiàng)集,該選項(xiàng)將 root
用戶映射到對(duì)遠(yuǎn)程共享沒有寫權(quán)限的 nobody
用戶和 nogroup
組。
假設(shè)您在客戶端計(jì)算機(jī)上使用了與遠(yuǎn)程服務(wù)器上相同的UID
和 GID
的 www-data
(例如,如果您在兩臺(tái)計(jì)算機(jī)上都安裝了 nginx
),則可以測(cè)試以用戶身份創(chuàng)建文件 www-data
使用以下命令:
sudo -u www-data touch /srv/www/test.txt
該命令將不顯示輸出,這意味著文件已成功創(chuàng)建。
要驗(yàn)證它列出 /srv/www
目錄中的文件:
ls -la /srv/www
輸出應(yīng)顯示新創(chuàng)建的文件:
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)程NFS
共享,則可以使用 umount
命令將其卸載為任何其他已裝入的文件系統(tǒng)。 例如,要卸載 /backup
共享,您將運(yùn)行:
sudo umount /backups
如果在 /etc/fstab
文件中定義了掛載點(diǎn),請(qǐng)確保通過在行的開頭添加#來刪除該行或?qū)⑵渥⑨尩簟?mark hidden color="red">文章來源:http://www.zghlxwxcb.cn/news/detail-600983.html
來源參考:憧憬在 aoppp.com發(fā)布文章來源地址http://www.zghlxwxcb.cn/news/detail-600983.html
到了這里,關(guān)于如何在 Ubuntu 18.04 上安裝和配置 NFS 服務(wù)器的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!