我有两台机器:
- 具有 AD 身份验证并运行 NFS 服务器的 Linux
- 具有 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