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-utilssudo systemctl enable --now nfs-serversudo 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/backupssudo mkdir -p /srv/nfs4/backupssudo mkdir -p /srv/nfs4/wwwsudo mount --bind /opt/backups /srv/nfs4/backupssudo 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 0etc/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 --permanentsudo firewall-cmd --zone=nfs --add-service=nfs --permanentsudo firewall-cmd --zone=nfs --add-source=192.168.33.0/24 --permanentsudo 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-commonsudo 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 /backupssudo mkdir -p /srv/wwwsudo mount -t nfs -o vers=4 192.168.33.10:/backups /backupssudo 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 -hfilesystem size used avail use% mounted on/dev/mapper/volgroup00-logvol00 38g 1.7g 36g 5% /devtmpfs 236m 0 236m 0% /devtmpfs 244m 0 244m 0% /dev/shmtmpfs 244m 4.5m 240m 2% /runtmpfs 244m 0 244m 0% /sys/fs/cgroup/dev/sda2 1014m 87m 928m 9% /boottmpfs 49m 0 49m 0% /run/user/1000192.168.33.10:/backups 9.7g 1.2g 8.5g 13% /backups192.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/fstab192.168.33.10:/backups /backups nfs defaults,timeo=900,retrans=5,_netdev 0 0192.168.33.10:/www /srv/www nfs defaults,timeo=900,retrans=5,_netdev 0 0etc/fstab
测试nfs访问让我们为每个共享目录创建一个文件来测试对nfs共享目录的访问。首先,尝试/backups挂载点运行touch命令创建文件。
/backup文件系统被设置为只读权限,因此你会看到一个权限拒绝错误消息touch: cannot touch ‘/backups/test’: permission denied。
sudo touch /backups/test.txttouch: 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.txttouch: 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.txtls -la /srv/wwwdrwxr-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默认是加密的协议,并且更易于配置和使用。
关于保险丝,这里有一些必知其实用的小常识
物理传感器的多样化应用_未来物理传感器面临的挑战
Netflix向电话应用程序添加了一项新功能
2022“安全文明校园”研讨会|强化信息化管理,共建安全文明校园
关于智能工厂管理系统的特征介绍
如何在CentOS 8设置NFS v4服务器
小米5X怎么样?小米5、小米5C和小米5X谁更值得买?小米5、小米5C和小米5X区别对比评测
CES 2018将现全球首个MEMS扬声器
德国大众汽车集团上线工业4.0模式,3万台机器人50秒可造出车
区块链技术成为了瑞士军刀用于信息存储和传输的方式
基于模型设计的嵌入式测试系统开发
远程控制振铃检测电路图
深信息、微纳研究院一行调研浙江大学微纳电子学院
基于单总线的冷库温度监控系统设计
5G商用化推动8K显示发展?TCL发布两款8K电视,或引领行业新风向!
凌华科技发布32/64/80核心ARM处理器模块
现代化高楼安防:智能人脸识别系统,快速验证身份秒过
盘点控制器的五大种类
Intel发布新一代至强E-2200系列,全面供给小型服务器和消费级市场
vivo全新系统OriginOS或将推出