NFS 挂载共享从 Linux AD 身份验证到使用 NIS 身份验证的 Linux

NFS 挂载共享从 Linux AD 身份验证到使用 NIS 身份验证的 Linux

我有两台机器:

  1. 具有 AD 身份验证并运行 NFS 服务器的 Linux
  2. 具有 NIS 身份验证的 Linux

问题:

当我尝试将任何共享从第一台机器(AD 身份验证)挂载到第二台机器(NIS 身份验证)时,我总是会得到类似这样的信息 drwxrws---+ 13 16777260 16777222 4096 Sep 21 09:42 软件

事实上我无法访问此文件夹,因为在 NIS 机器上我没有具有此类 UID/GID 的用户

问题:

有人知道如何解决这个问题吗?

答案1

Windows 计算机上的 NFS 服务器正在将 AD 用户转换为 *nix 用户 ID。您需要重新配置 Windows 上的 NFS 服务器,以便正确转换 *nix 用户。

本文档应该是您配置 NFS 服务器的起点。 http://technet.microsoft.com/en-us/library/cc782783%28v=ws.10%29.aspx

答案2

手册nfsd页指出:

nfsd 根据每个 NFS RPC 请求中提供的 uid 和 gid 对服务器上的文件进行访问控制。用户期望的正常行为是,她可以像在普通文件系统上一样访问服务器上的文件。这要求客户端和服务器机器上使用相同的 uid 和 gid。

不幸的是,NFS 无法映射用户(除了使用选项root_squash/映射到 anonymous/nobody 之外all_squash)。

我认为有两种方法可以解决这个问题:

1) 创建一个 GID 为 16777222 的 NIS 组,并将需要访问 NFS 文件系统的 NIS 用户添加到该 NIS 组。

2) 或者,如果 NFS 服务器上未使用 NIS 组的 GID,并且 NFS 支持 ACL,则可以使用 ACL 向 NIS 组授予请求的访问权限(我假设是读写访问权限,对于只读访问权限,请在下面删除“w” setfacl)。假设有一个名为“software”的目录,请在 NFS 服务器上执行以下操作:

# Back up current ACLs to /tmp/acls
getfacl -R -p --access /full/path/to/software > /tmp/acls
# Set default ACL rwx for new created directories
find /full/path/to/software -type d -exec setfacl -m d:g:<gid nis group>:rwx {} \;
# Set ACL rwx recursively in existing directories
find /full/path/to/software -type d -exec setfacl -m g:<gid nis group>:rwx {} \;
# Set ACL rwx recursively in existing files
find /full/path/to/software ! -type d -exec setfacl -m g:<gid nis group>:rw {} \;

[我建议你测试首先执行上述过程。创建一个目录,设置 ACL,将其导出并测试。

<gid nis group>是 NIS 组的 GID。您不需要/etc/groups在 NFS 服务器上添加 NIS GID。显然,如果没有添加,那么您必须将上面的 GID 指定为数值。

请注意,setfacl也可以使用选项 -R 递归应用 ACL。我更喜欢使用find并专门为目录设置 rwx,为文件设置 rw。

如果出现任何问题:

# Flush ACLs
setfacl -R -b /full/path/to/software
# Restore ACLs
setfacl --restore=/tmp/acls

相关内容