测试 NFS 共享组

现在 NFS 挂载点已准备就绪,我们从客户端以 root 用户身份挂载 NFS 共享。

[jack@onitroad ~]# mount -t nfs 192.168.1.200:/root/nfs /mnt

现在,如果任何用户访问 /mnt 目录并创建文件或者目录,它将归 'testing' 组所有。

[jack@onitroad mnt]# touch setgid-test
[jack@onitroad nfs]# ls -la
-rw-r--r--. 1 root   testing    0 Jan 16 23:09 setgid-test

默认情况下,NFS 挂载的 'sec' 选项是 'sys',这意味着 UID/GID 编号从客户端映射到 NFS 服务器。
因此,应该在客户端和服务器上使用相同的组 ID 创建“测试”组,以便正确传递组。

示例环境

这是我们将要测试的服务器列表,它们都运行 CentOS 7.

  • NFS 客户端:192.168.0.100 - 此 Linux 客户端将从 NFS 服务器挂载一个目录。
  • NFS 服务器:192.168.0.200 - 此 Linux 服务器将通过 NFS 提供一个目录。
如何为协作组提供 NFS 共享

在本教程中,我们将介绍如何与组中的成员共享 NFS 共享以进行协作。

这将主要通过使用设置组 ID (Set GID) 来完成,因为使用此方法会导致在组共享中创建的所有文件和目录自动设置为与共享本身具有相同的组所有者。

NFS 服务器配置

让我们从在 NFS 服务器上配置 NFS 共享开始。

yum install nfs-utils -y

nfs-utils 包也应该安装在客户端机器上,因为它是挂载 NFS 共享所必需的。

安装后,我们可以让 NFS 服务器在启动时自动启动所需的 NFS 服务,我们现在也将启动该服务,因为它在安装后默认不运行。

systemctl enable nfs
systemctl start nfs

有关使用 systemctl 进行基本服务管理的更多信息,请参阅此处的教程。

接下来必须配置防火墙以正确允许 NFS 流量通过,这可以如 firewalld 所示完成。
此更改将允许 TCP 端口 2049 NFS 流量从任何来源进入服务器。
防火墙配置也必须重新加载,因为我们已经制定了一个永久规则,该规则不适用于正在运行的配置。

firewall-cmd --permanent --add-service=nfs
firewall-cmd --reload

我们还将在 NFS 服务器上创建我们将通过 NFS 共享的目录,在本例中它将是 /root/nfs 但它可以在其他地方。

mkdir /root/nfs

NFS 服务器挂载点使用 /etc/exports 文件配置,该文件列出了可通过 NFS 访问的目录。
或者,也可以在 /etc/exports.d/ 目录中创建配置文件,只要它们具有 .exports 扩展名即可。

下面是 /etc/exports 文件中的 NFS 配置示例。

[jack@onitroad ~]# cat /etc/exports
/root/nfs       192.168.0.100(rw,async)

在对 /etc/exports 文件进行任何更改后,我们需要使用 exportfs 命令来更新导出的 NFS 文件系统表。

exportfs -arv

-a 标志将导出所有目录,-r 标志将重新导出所有目录并删除所有旧条目,而 -v 标志提供详细信息并将输出所有 NFS 导出。

使用 SetGID 配置 NFS 共享

现在我们已经使用 /root/nfs 的基本 NFS 挂载点配置了 NFS 服务器,我们需要在此目录上配置 SetGID,如下所示。

chmod 2770 /root/nfs

这也在目录上设置了权限 770,因此定义的 root 用户和组将具有完全权限。
前导 2 启用 setgid。

接下来,我们创建一个名为“testing”的组并更改 /root/nfs 目录,以便组所有者就是这个“testing”组。
我们还手动指定将用于组的 GID 为 9999,这需要是一个在客户端和服务器上都可用的数字我已经在客户端和服务器上运行了 groupadd,并在该组中创建了一个测试用户.

groupadd -g 9999 testing
chgrp testing /root/nfs

我们可以确认 setgid 已经到位,如下所示,其中组权限显示的执行位是小写的 s。
如果组没有执行权限并且只有 setgid 到位,这将更改为大写的 S。

[jack@onitroad ~]# ls -la
drwxrws---.  2 root testing    29 Aug 30 00:25 nfs

现在,在 /root/nfs 中创建的任何文件或者目录都将自动赋予“testing”组所有者,基本上允许组协作,因为“testing”组中的任何用户现在都可以访问由其他用户创建的文件/root/nfs 目录中的同一组。

日期:2020-07-07 20:56:29 来源:oir作者:oir