如何在CentOS 8安装和配置NFS服务器
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.
如何在CentOS 8安装和配置NFS服务器
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
文件包含了描述如何导出目录的说明。
在本教程中,我们需要导出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默认是加密的协议,并且更易于配置和使用。如有任何疑问,请随时发表评论。
Recommend
-
10
网络硬盘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
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
nfs 如何在Linux 挂载 NFS文件系统 NFS网络文件系统是一种分布式文件系统协议,使您可以通过网络共享远程目录
-
8
nfs 如何在Linux安装 NFS客户端 NFS网络文件系统是一种分布式文件系统协议,使您可以通过网络共享远程目录 ...
-
8
如何在 Kubernetes 集群中设置动态 NFS 配置 作者:LCTT 编译 2023-07-29 11:54:44 系统 在这篇文章中,我们将向你展示如何在 Kubernetes(k8...
-
4
本文最后更新于:2023年9月2日 凌晨我们都知道Mac是自带NFS服务的,但是默认是没有开启,并且配置文件/etc/exports也不存在,这篇文章就简单介绍了如何将Mac的NFS服务开起来,并且共享某一个目录给到局域网。
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK