我有一个从 Centos 7.9 VM 导出并安装在 Windows 10 PC 上的 NFS 共享。该共享可从 Windows 访问,但目录的权限设置为用户不可读 但该用户所属的某个组可以读取(如下MOE
图所示的目录)产生一个尝试从 Windows 访问它们时出现权限被拒绝错误。
Windows 环境(客户端)
我正在使用 Active Directory 将 Windows 用户映射到其相应的 Unix UID(通过 uidNumber 属性)。同样,这些组已在 Linux 环境和 Active Directory 之间进行了镜像,其中 GID 设置在 AD 中的 gidNumber 属性中。在 Windows 计算机上,我已运行nfsadmin mapping my_pc_name -u my_admin_account config ADLookup=yes ADDomain=my.ad.domain
(建议这里)。
Linux 环境(服务器)
在 Linux 方面,我使用 nfs-utils 和 rpc.mountd 运行--manage-gids
(按照Kyle 的帖子)。当 Windows 10 用户挂载共享时,这似乎成功地向 Active Directory 查询了组(/proc/net/rpc/auth.unix.gid/content
当访问 NFS 共享时,使用来自 AD 的用户 UID 和所有正确的关联组 GID 进行更新,如下所示)。
这是导出文件:
值得注意的是,加入 AD 域的其他 Linux VM 可以挂载 NFS 共享(使用 NFSv3),并且用户可以毫无问题地访问限制在其组中的任何目录。
这是一个这样的 fstab 文件:
调查
Wireshark 显示,该nfsadmin
命令成功使 Windows 在挂载共享时开始查询 UID 和主 GID。但是,我没有看到任何迹象表明它会查询其他组。我认为这无关紧要,因为--manage-gids
无论如何,该标志都会强制在 Linux 端处理此问题。事实上,当尝试从 Windows 访问一个这样的问题目录(即,只有用户所属的组才能读取的目录)时,Wireshark 显示 Linux NFS 服务器返回请求的信息。这与尝试访问仅由其他人可读的目录时返回的Status: NFS3_OK (0)
相反。Status: NFS3ERR_ACCES (13)
因此,我感觉 Windows 正在自行进行权限审查,并忽略服务器给出的 OK 状态。这不会造成问题,但出于某种原因,Windows 不会查询用户所属的组。
有谁遇到过这个问题或者对其原因或潜在解决方案有任何了解吗?另一种方法是设置 Samba 服务器,但如果 Windows NFS 客户端可以工作,那么维护起来应该更简单。提前致谢。