RH358提供基于文件的网络存储--导出NFS文件系统

简介: RH358提供基于文件的网络存储--导出NFS文件系统

RH358提供基于文件的网络存储–导出NFS文件系统

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

RH358专栏地址:https://blog.csdn.net/qq_41765918/category_11532281.html

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并挂载使用。
  • 若喜欢金鱼哥的文章,顺手点个赞。也可点个关注,因为后续会不断上干货。

目录
相关文章
|
1月前
|
Linux Shell Windows
通过Linux挂载Windows端NFS服务实现板端Linux传输文件到PC
通过Linux挂载Windows端NFS服务实现板端Linux传输文件到PC
|
1月前
|
Shell Linux C语言
【Shell 命令集合 网络通讯 】Linux 查看系统中的UUCP日志文件 uulog命令 使用指南
【Shell 命令集合 网络通讯 】Linux 查看系统中的UUCP日志文件 uulog命令 使用指南
29 0
|
3月前
|
存储 监控 网络协议
【Linux】文件服务NFS(Network File System)
【Linux】文件服务NFS(Network File System)
34 0
|
10天前
|
Ubuntu Linux 开发工具
U-Boot 中使用 nfs 命令加载文件报错指南
U-Boot 中使用 nfs 命令加载文件报错指南
|
10天前
|
网络协议 Linux
基于 NFS 的文件共享实现
基于 NFS 的文件共享实现
|
11天前
|
存储 负载均衡 监控
|
1月前
|
存储 测试技术 C++
P2P网络下分布式文件共享场景的测试
P2P网络下分布式文件共享场景的测试
33 6
|
1月前
|
消息中间件 存储 缓存
Kafka【基础知识 02】集群+副本机制+数据请求+物理存储+数据存储设计(图片来源于网络)
【2月更文挑战第20天】Kafka【基础知识 02】集群+副本机制+数据请求+物理存储+数据存储设计(图片来源于网络)
29 1
|
2月前
|
编解码 文件存储 计算机视觉
YOLOv5改进 | 2023Neck篇 | BiFPN双向特征金字塔网络(附yaml文件+代码)
YOLOv5改进 | 2023Neck篇 | BiFPN双向特征金字塔网络(附yaml文件+代码)
211 0
|
3月前
|
网络协议 安全 Shell
【网络协议】网络文件共享协议SMB(Server Message Block)
SMB协议允许在局域网(LAN)或广域网(WAN)上共享文件、打印机和其他资源。
47 0