我有一个运行 Debian 7 并导出 NFSv3 共享的服务器,以及一个运行 Centos 5 并访问它的客户端。除了基于非主要组的权限的一个问题之外,这工作得很好。
当我在服务器上创建具有 770 权限的目录时,如果该组不是用户的主要组,则与该目录所有者属于同一组的客户端用户仍然无法访问该目录。
知道这里可能出现什么问题吗?当目录属于用户的主要组时,它可以正常工作,但如果它属于辅助组,则不能。
答案1
您的问题可能与debian 中默认启用的--manage-gids
选项有关(请参阅 参考资料)。rpc.mountd
/etc/default/nfs-kernel-server
从手册页:
-g 或 --manage-gids
接受来自内核的请求,将用户 ID 号映射到组 ID 号列表中,以用于访问控制。 NFS 请求通常(除非使用 Kerberos 或其他加密身份验证)包含用户 ID 和组 ID 列表。由于 NFS 协议的限制,最多可以列出 16 个组 ID。如果使用 -g 标志,则从客户端接收到的组 ID 列表将替换为通过服务器上的适当查找确定的组 ID 列表。请注意,“主要”组 ID 不受影响,因此客户端上的 newgroup 命令仍然有效。此功能需要版本至少为 2.6.21 的 Linux 内核。
因此,如果您没有达到“16 个组”的限制,您可以尝试在服务器上禁用此选项。
答案2
我的问题是,在 NFS 服务器上我没有组(“www-data”),但文件显示为 user:www-data。所以我创建了一个组,使用与客户端相同的ID,重新发布了
chown -R user:www-data
然后问题就消失了。