金鱼哥RHCA回忆录:RH358提供基于文件的网络存储--导出NFS文件系统

举报
金鱼哥 发表于 2022/05/16 15:24:44 2022/05/16
【摘要】 第十章 提供基于文件的网络存储--导出NFS文件系统

本章节介绍如何提供基于文件的网络存储。包括NFS和Samba,但在我眼中,Samba已经成为鸡肋服务,因为勒索病毒的出现,很多政企都会在网络层面封禁135、137、138、139和445端口,而Samba协议就是使用这几个高风险端口,因此,是否用Samba真的好好考虑了。在我看来,还是别用。

🎹 个人简介:大家好,我是 金鱼哥,CSDN运维领域新星创作者,华为云·云享专家,阿里云社区·专家博主
📚个人资质:CCNA、HCNP、CSNA(网络分析师),软考初级、中级网络工程师、RHCSA、RHCE、RHCA、RHCI、ITIL😜
💬格言:努力不一定成功,但要想成功就必须努力🔥


1. 描述 NFS

Network File System (NFS) 是⼀种基于文件的存储协议,通常由 UNIX 系统和网络附加存储 network-attached storage(NAS) 设备使用。它提供跨网络对共享文件系统的透明远程访问。

Redhat Enterprise Linux 8默认使用NFS 4.2版本,支持使用NFSv4或NFSv3协议。不再支持NFSv2协议。NFS版本4 (NFSv4)只使用TCP传输,但是早期的NFS版本可以使用UDP或TCP。

NFS服务器导出文件系统目录及其内容,并与客户端共享。NFS客户端系统将导出的文件系统挂载到本地挂载点。


2. 启用NFS服务器

在服务器上,nfs-utils包提供了与NFS共享目录所需的工具。

启用并启动nfs-server服务。

[root@host ~]# systemctl enable --now nfs-server

服务器端的NFS协议版本为4.1及以上,端口为2049/TCP。配置防火墙,允许访问nfs服务,以打开该端口。

[root@host ~]# firewall-cmd --permanent --add-service=nfs

[root@host ~]# firewall-cmd --reload

早期版本的NFS需要允许访问其他端口。


3. 配置 NFS 导出

用于共享的主配置文件为/etc/exports。/etc/exports.d/*.exports 文件作为额外的配置读取,都使用相同的语法

在配置文件中,每一行声明一个导出点。第一个字段是导出目录的名称,其余部分列出访问共享目录的客户端及访问权限

注意:不要使用 NFS 导出同时是 SMB 共享的目录。可能会造成文件损坏或文件完整性或一致性问题

在配置文件中可以通过几种方式指定客户机系统。

  • dns可解析的主机名,如client1.example.com。在下面的例子中,client1.example.com系统可以挂载/srv/myshare目录。

/srv/myshare client1.example.com

  • 带有*通配符的dns可解析主机名。下面的示例允许example.com域中的所有系统访问NFS共享。

/srv/myshare *.example.com

  • IPv4地址。下面使用192.168.0.12的IP地址访问NFS共享为例。

/srv/myshare 192.168.0.12

  • IPv4网络。下面以192.168.0.0/24网络为例进行说明。也可以使用192.168.0.0/255.255.255.0表示法。

/srv/myshare 192.168.0.0/24

  • IPv6地址。以IPv6地址为fde2:6494:1e09:2::20的客户端系统访问NFS共享为例。

/srv/myshare fde2:6494:1e09:2::20

  • IPv6网络。例如使用fde2:6494:1e09:2::/64 IPv6网络访问NFS共享。

/srv/myshare fde2:6494:1e09:2::/64

若要与多个客户端系统共享一个目录,请在目录名称后使用空格分隔的列表:

/srv/myshare 192.168.0.0/24 client1.example.com *.example.net

默认情况下,目录以只读方式与客户端共享。在每个客户端定义之后,可以在圆括号中指定导出选项以覆盖默认值。

重要:客户端定义的结尾和开括号之间不能有空格。

下面是最常见的选项。

rw

此选项允许对指定的客户端进行读/写访问。没有这个选项(或者如果使用ro代替),NFS只授予读访问权。以下示例中,client1.example.com具有读写权限,而client2.example.com具有只读权限

/srv/myshare client1.example.com(rw) client2.example.com


no_root_squash

默认情况下,当客户机上的root用户访问NFS导出时,服务器将其视为nobody用户的访问。这意味着,如果客户机上的root用户在导出中创建了一个文件,那么该文件将属于nobody用户。这也意味着,如果客户机上的root试图读取用户nobody无法读取的导出文件,则访问将失败。

您可以通过添加no_root_squash选项来禁用该安全保护。下面的示例允许使用client1.example.com系统读写权限和真实root用户对/srv/myshare导出目录的访问权限。

/srv/myshare client1.example.com(rw,no_root_squash)

注意:在Red Hat Enterprise Linux 7及更早的版本中,用户是nfsnobody而不是nobody。


4. 检查 NFS 导出

使用exportfs命令列出NFS服务器当前导出的目录。

[root@host ~]# exportfs

/srv/myshare client1.example.com

缺省情况下,该命令不显示导出选项。使用-v选项列出这些选项,包括默认选项。

[root@host ~]# exportfs -v

/srv/myshare client1.example.com(sync,…,rw,secure,no_root_squash,…)

当修改/etc/exports或/etc/exports.d/*.exports文件中的导出点时。对于NFS服务,执行exportfs -r命令以考虑这些更改。作为一种替代方法,您还可以运行systemctl reload nfs-server。


5. 课本练习

[student@workstation ~]$ lab filestorage-nfs start

该命令确保servera、serverb和serverd在网络上可用。

在本练习中,您将配置serverd使用NFS共享/nfsshare目录。将servera配置为将这个NFS挂载到/share目录下。


1. 将服务器准备为NFS服务器。

为此,安装nfs-utils包,启动nfs-server服务,然后打开防火墙端口。

[root@serverd ~]# yum -y install nfs-utils
[root@serverd ~]# systemctl enable --now nfs-server
[root@serverd ~]# firewall-cmd --permanent --add-service=nfs
success
[root@serverd ~]# firewall-cmd --reload
success

2. 创建/nfsshare目录并对其进行保护,以便只有student用户具有写访问权限。

[root@serverd ~]# mkdir /nfsshare
[root@serverd ~]# chown student /nfsshare
[root@serverd ~]# ls -ld /nfsshare
drwxr-xr-x. 2 student root 6 Jul  1 13:55 /nfsshare
# 注意:学生用户具有读/写访问权限,而其他所有用户只有读访问权限。

3. 导出/nfsshare目录。

# 以便仅servera.lab.example.com可以读/写挂载它。确保lab.example.com DNS域中的所有其他系统都可以只读地挂载共享导出。
[root@serverd ~]# vim /etc/exports.d/exercise.exports
/nfsshare servera.lab.example.com(rw) *.lab.example.com(ro)
[root@serverd ~]# systemctl reload nfs-server
[root@serverd ~]# exportfs -v
/nfsshare     	servera.lab.example.com(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
/nfsshare     	*.lab.example.com(sync,wdelay,hide,no_subtree_check,sec=sys,ro,secure,root_squash,no_all_squash)

4. 将来自serverd的NFS导出挂载到servera的/share挂载点上。

[root@servera ~]# mkdir /share
[root@servera ~]# echo "serverd.lab.example.com:/nfsshare /share nfs defaults 0 0" >> /etc/fstab
[root@servera ~]# mount /share
[root@servera ~]# df /share
Filesystem                        1K-blocks    Used Available Use% Mounted on
serverd.lab.example.com:/nfsshare  10474496 2534912   7939584  25% /share

5. 对文件系统的访问权限进行认证。

[root@servera ~]# su - student -c "echo Hello World > /share/test.txt"
[root@servera ~]# ls /share
test.txt
# 这个测试验证了在读写模式下可以访问导出。

[root@servera ~]# echo Hello World > /share/root_test.txt
-bash: /share/root_test.txt: Permission denied
# serverd上的NFS服务器将来自root的请求映射到nobody用户帐户。系统拒绝权限,原因是nobody用户对服务器上的/nfsshare目录没有写权限。

6. 确认lab.example.com DNS域中的其他系统可以以只读方式挂载导出。

[root@serverb ~]# mount serverd.lab.example.com:/nfsshare /mnt
[root@serverb ~]# df /mnt
Filesystem                        1K-blocks    Used Available Use% Mounted on
serverd.lab.example.com:/nfsshare  10474496 2534656   7939840  25% /mnt
[root@serverb ~]# ls /mnt
test.txt
[root@serverb ~]# cat /mnt/test.txt
Hello World
[root@serverb ~]# su - student -c "echo Hello World > /mnt/from_serverb.txt"
-bash: /mnt/from_serverb.txt: Read-only file system
# 命令失败是因为文件系统是只读的。

完成实验

[student@workstation ~]$ lab filestorage-nfs finish


总结

  • 介绍NFS。
  • 如何部署和配置NFS。
  • 导出NFS并挂载使用。

RHCA认证需要经历5门的学习与考试,还是需要花不少时间去学习与备考的,好好加油,可以噶🤪。

以上就是【金鱼哥】对 第十章 提供基于文件的网络存储–导出NFS文件系统 的简述和讲解。希望能对看到此文章的小伙伴有所帮助。

💾红帽认证专栏系列:
RHCSA专栏:戏说 RHCSA 认证
RHCE专栏:戏说 RHCE 认证
此文章收录在RHCA专栏:RHCA 回忆录

如果这篇【文章】有帮助到你,希望可以给【金鱼哥】点个赞👍,创作不易,相比官方的陈述,我更喜欢用【通俗易懂】的文笔去讲解每一个知识点。

如果有对【运维技术】感兴趣,也欢迎关注❤️❤️❤️ 【金鱼哥】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💕💕!

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。