6.5 NFS #
6.5.1 简介 #
NFS(Network File System)是一种用于在网络上共享文件系统的协议。它允许一个计算机系统(称为NFS服务器)与其他计算机系统(称为NFS客户端)共享其本地文件系统,并允许客户端通过网络透明地访问和操作服务器上的文件。
以下是NFS服务的一些主要特点和用途:
-
文件共享:NFS允许将NFS服务器上的文件和目录共享给NFS客户端。这意味着客户端可以像访问本地文件一样访问和操作服务器上的共享文件。
-
分布式访问:NFS允许多个NFS客户端同时访问和修改共享文件。这使得多个用户可以在不同的计算机上协同工作,并共享相同的文件和数据。
-
透明访问:NFS为客户端提供了透明的访问体验,使得共享文件的访问方式类似于本地文件。客户端可以像访问本地文件一样使用标准的文件操作(如打开、读取、写入和关闭文件)来访问NFS服务器上的文件。
-
安全性:NFS提供了一些安全机制来保护共享文件的访问。例如,可以使用访问控制列表(ACL)来限制对文件的访问权限,并使用身份验证和加密来保护数据的安全性。
-
性能优化:NFS在设计时考虑了性能优化,并使用一些技术来提高文件访问的效率。例如,NFS使用缓存机制来减少网络传输,提高文件的访问速度。
使用NFS时,通常会有一个或多个NFS服务器,它们共享其本地文件系统,并提供对这些共享文件的访问。然后,NFS客户端可以通过挂载(mount)NFS服务器上的共享目录,使其在本地文件系统中可用。
NFS服务器和客户端之间的通信是基于RPC(Remote Procedure Call)机制的,通过NFS协议进行文件访问和操作。
需要注意的是,NFS是一种开放标准的协议,并且有多个实现可用。常用的NFS实现包括NFSv3和NFSv4。不同的实现可能会有一些细微的差异和特性,因此在使用特定的NFS实现时,应该参考相应的文档和资源以获取更详细的信息和指导。
6.5.2 配置和启动 #
- 启动 NFS服务
# 安装
yum install -y nfs-utils
systemctl start stop nfs.service
NFS 的配置文件在 /etc/exports,文件不存在可以手动创建。文件格式如下:
# 共享目录 访问控制
# 括号和主机不能有空格
# /data/share 192.168.11.2(ro) 192.168.11.3(rw)
# 所有人访问呢
# /data/share *(rw,sync,all_squash)
/data/share *(rw,sync,all_squash)
![](https://cdn.xiaobinqt.cn/xiaobinqt.io/20230710/a7baa8bd45544d77937b829d8d17a432.png)
在另一台机器(客户端)上可以使用 showmount 查看 nfs 机器的共享了哪些目录:
![](https://cdn.xiaobinqt.cn/xiaobinqt.io/20230710/25bc38765e194dcfbf293509c99ef837.png)
如果没有 showmount 命令,可以使用 yum install showmount -y
安装。
all_squash 选项 #
在NFS配置中,all_squash
选项用于指定对于所有远程访问的用户,将其映射为指定的匿名用户。这个选项通常用于安全性和权限管理。
具体来说,all_squash
选项将远程访问的用户(UID)和组(GID)映射为指定的匿名用户(通常是nobody
或nfsnobody
),这样远程用户的身份将被限制为匿名用户。
默认情况下,NFS 服务器会将远程访问的用户身份保留在共享文件系统中。但是,通过使用all_squash
选项,可以确保所有远程用户都被映射为匿名用户,从而限制其对共享文件系统的访问权限。
这种配置可能有助于提高共享文件系统的安全性,因为所有远程访问的用户都被限制为匿名用户,而不是使用其自身的身份。
需要注意的是,使用all_squash
选项会导致共享目录中的所有文件都由匿名用户拥有,这可能会影响文件的访问权限和其他操作。因此,在使用all_squash
选项时,需要确保正确配置了文件和目录的权限,并考虑到相关的安全和访问需求。
另外,all_squash
选项可以与其他NFS选项一起使用,如no_root_squash
(不对root用户进行映射)和root_squash
(将root用户映射为匿名用户)。这些选项可以用于进一步细化对不同用户的访问权限和映射方式的控制。
挂载 #
客户端可以使用如下命令挂载:
mount-t nfs localhost:/data/share /xxx
![](https://cdn.xiaobinqt.cn/xiaobinqt.io/20230710/0d2854c3f9cf449b991180b3fd3b86d5.png)
这里建议将共享目录的属组改为 nfsnobody,避免 root 权限过大。
在服务端执行:
chown -R nfsnobody: share/
![](https://cdn.xiaobinqt.cn/xiaobinqt.io/20230710/7e0e980fe26d4b439d6ed7573de12ab5.png)