0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何在CentOS 8设置NFS v4服务器

CHANBAEK 来源:myfreax 作者:myfreax 2023-01-04 17:13 次阅读

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-serveretc/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文件包含了描述如何导出目录的说明。

在本教程中,我们需要导出wwwbackups目录,并仅允许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权限。它将映射rootUIDGIDnobody/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:/backupsNFS服务器共享目录。/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且相同的UIDGID

则可以运行命令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命令将其卸载已挂载的任何目录。

例如要卸载/backupNFS共享,请运行命令sudo umount /backups

如果在etc/fstab文件中定义了挂载记录,请确保删除包含挂载点的行或者在该行的开头添加#注释掉。

sudo umount /backups

结论

在本教程中,我们向您展示了如何在CentOS 8设置NFS服务器以及如何在客户端计算机挂载NFS文件系统。

如果要在生产中实施NFS并共享敏感数据,建议启用kerberos身份验证。作为NFS的安全替代方案,您可以使用SSHFS通过SSH连接挂载NFS共享。

SSHFS默认是加密的协议,并且更易于配置和使用。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 服务器
    +关注

    关注

    12

    文章

    9017

    浏览量

    85182
  • 文件系统
    +关注

    关注

    0

    文章

    284

    浏览量

    19883
  • NFS
    NFS
    +关注

    关注

    1

    文章

    52

    浏览量

    26089
  • CentOS
    +关注

    关注

    0

    文章

    77

    浏览量

    13729
收藏 人收藏

    评论

    相关推荐

    Linux开发_CentOS7.4服务器搭建NFS、NGINX服务器,安装ffmpeg、Qt环境

    CentOS7.4服务器版本的环境下搭建NFS服务器、安装ffmpeg、安装nginx服务器、部署Qt编译环境。
    的头像 发表于 07-14 13:45 1536次阅读
    Linux开发_<b class='flag-5'>CentOS</b>7.4<b class='flag-5'>服务器</b>搭建<b class='flag-5'>NFS</b>、NGINX<b class='flag-5'>服务器</b>,安装ffmpeg、Qt环境

    【AWorks试用体验】+NFS服务器搭建

    本帖最后由 youzizhile 于 2015-8-18 15:53 编辑 6.4 NFS服务器搭建6.4.1 NFS能做什么?在嵌入式Linux开发中,需要在Linux主机为目
    发表于 08-18 15:51

    第四课:NFS服务器的配置

    NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。介绍NFS安装步骤1、执行命令:sudo apt-get installnfs-kernel-ser
    发表于 09-07 07:18

    【OK210试用体验】之(4)——NFS服务器的搭建

    。$ sudoapt-get install nfs-kernel-server2.设置NFS-Server目录。修改/etc/exports文件,在其中增加NFS
    发表于 09-09 00:34

    TQ210 NFS服务器的配置和使用

      这一讲将介绍怎么在虚拟机的Linux系统上安装NFS服务器,然后在TQ210v6开发板上的Linux上挂载nfs共享文件夹,实现虚拟机和开发板的文件共享,方便把编译好的程序复制到开
    发表于 11-23 15:35

    4412开发板学习笔记-NFS服务器的搭建

    /exports,使用 vi 命令打开/etc/exports在其中增加NFS服务器目录。 一个NFS服务器可以共享多个NFS目录,在/et
    发表于 06-20 14:29

    Linux 配置 NFS进行服务器端配置,重启NFS时报错,请问这是为什么?

    -utils rpcbind 完成了nfs-utills 和 rpcbind(Centos5版本下是portmap)完成了相关的安装。2、接下来进行服务器端配置,重启NFS时报错:重启
    发表于 06-21 20:00

    ubuntu下搭建NFS服务器

    ubuntu下搭建NFS服务器何在ubuntu下搭建NFS服务器,是困扰很多人的一个问题,下面是ubuntu下搭建
    发表于 11-02 16:08

    CentOS的ntp服务器搭建

    【ntp】CentOS上搭建ntp服务器,并实现时间同步
    发表于 03-20 11:18

    如何使用Xmanager远程CentOS 7服务器

    【Xmanager】如何使用Xmanager远程CentOS 7服务器
    发表于 04-09 13:16

    如何配置NFS文件存储服务器

    配置NFS文件存储服务器的方法步骤
    发表于 11-05 06:10

    AIO-3399J NFS服务器实现挂载

    mkdir nfs3. 设置sudo mount -t nfs 172.17.32.168:/home/sljt/data /home/gavin/nfs172.17.32.168为
    发表于 06-10 15:02

    何在Win 2003环境中设置一个Web服务器

    何在Win 2003环境中设置一个Web服务器   本文介绍了如何在 Windows Server 2003 环境中设置一个用于匿名访问
    发表于 01-29 11:35 565次阅读

    何在Ubuntu 20.04设置NFS v4服务器

    NFS网络文件系统是一种分布式文件系统协议,使您可以通过网络共享远程目录。
    的头像 发表于 12-07 09:36 5102次阅读

    centos7如何设置静态IP

    CentOS 7上设置静态IP是一个简单而重要的任务,尤其对于服务器管理员来说。在本文中,我们将详细介绍如何在CentOS 7上
    的头像 发表于 11-17 11:06 1440次阅读