1

如何在CentOS 8安装和配置NFS服务器

 1 year ago
source link: https://www.myfreax.com/how-to-install-and-configure-an-nfs-server-on-centos-8/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
nfs

如何在CentOS 8安装和配置NFS服务器

NFS网络文件系统是一种分布式文件系统协议,使您可以通过网络共享远程目录

Updated At 22 Nov 2022 12 min read
By myfreax
如何在CentOS 8安装和配置NFS服务器

如何在CentOS 8安装和配置NFS服务器

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

在本教程中,我们需要导出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默认是加密的协议,并且更易于配置和使用。如有任何疑问,请随时发表评论。


Recommend

  • 10
    • abcdxyzk.github.io 3 years ago
    • Cache

    网络硬盘NFS的安装与配置

    网络硬盘NFS的安装与配置 2015-05-29 14:23:00 http://www.linuxidc.com/Linux/2014-11/109637.htm NFS 是共享文件的服务的一种协议 下面给...

  • 7

    Xrdp是Microsoft远程桌面协议RDP的开源实现,可让您以图形方式控制远程系统。 使用RDP,您可以登录到远程计算机并创建真实的桌面会话,就像登录到本地计算机一样。本教程说明了如何在CentOS 8上安装和配置Xrdp服务器。如果您更喜欢开源替代方案,...

  • 3
    • computingforgeeks.com 2 years ago
    • Cache

    How To Configure NFS Client on CentOS 8 / RHEL 8

    In the previous article, we discussed how to install and configure NFS Server on RHEL / CentOS 8 Linux. This guide is the gorge for the missing piece...

  • 6

    Install and Configure NFS Server on RHEL 8Search ComputingForGeeksThis guide will explain how to install NFS...

  • 5

    plex 如何在CentOS 7安装Plex媒体服务器 Plex是一种流媒体服务器,可将您所有的视频,音乐和照片汇集在一起,并随时随地将它们流式传输到您的设备

  • 4

    nfs 如何在Ubuntu 18.04安装和配置NFS服务器 NFS网络文件系统是一种分布式文件系统协议,使您可以通过网络共享远程目录 ...

  • 5
    • www.myfreax.com 1 year ago
    • Cache

    如何在Linux 挂载 NFS文件系统

    nfs 如何在Linux 挂载 NFS文件系统 NFS网络文件系统是一种分布式文件系统协议,使您可以通过网络共享远程目录

  • 8
    • www.myfreax.com 1 year ago
    • Cache

    如何在Linux安装 NFS客户端

    nfs 如何在Linux安装 NFS客户端 NFS网络文件系统是一种分布式文件系统协议,使您可以通过网络共享远程目录 ...

  • 8

    如何在 Kubernetes 集群中设置动态 NFS 配置 作者:LCTT 编译 2023-07-29 11:54:44 系统 在这篇文章中,我们将向你展示如何在 Kubernetes(k8...

  • 4
    • blog.dreamtobe.cn 10 months ago
    • Cache

    Mac 作为NFS服务器

    本文最后更新于:2023年9月2日 凌晨我们都知道Mac是自带NFS服务的,但是默认是没有开启,并且配置文件/etc/exports也不存在,这篇文章就简单介绍了如何将Mac的NFS服务开起来,并且共享某一个目录给到局域网。

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK