我正在尝试连接到我的开发服务器上的 NFS 文件夹。开发服务器上文件夹的所有者是 darren,组是 darren。
当我使用磁盘实用程序将其导出并安装到我的 Mac 时,它会安装,但当我尝试打开文件夹时,它说我没有权限。我已设置 rw、sync 和 no_subtree_check。Mac 上的用户是 darren,有一堆组。
我是否需要设置相同的组和用户来访问该文件夹?
答案1
NFS 建立在 RPC 身份验证之上。在 NFS 版本 3 中,最常见的身份验证机制是 AUTH_UNIX。客户端系统的用户 ID 和组 ID 在每个 RPC 调用中发送,并在服务器上检查这些 ID 对所访问文件的权限。要实现这一点,服务器和客户端上的 UID 和 GID 必须相同。但是,您可以通过组合 all_squash、anonuid 和 anongid 导出选项来强制所有访问以单个用户和组的身份进行。全部_南瓜将所有 UID 和 GID 映射到匿名用户,并且阿诺努伊德和阿农吉德 设置匿名用户的 UID 和 GID。例如,如果你的开发服务器上的 UID 和 GID 都是 1001,你可以使用类似下面的一行导出你的主目录
/home/darren 192.168.1.1/24(rw,all_squash,anonuid=1001,anongid=1001)
我对 NFS 版本 4 不太熟悉,但我认为您可以在客户端上设置 rpc.idmapd 来改变它们发送到服务器的 uid 和 gid。
答案2
当您挂载 NFS 时,您挂载它的权限必须与您在服务器上的权限相匹配。例如,如果您的用户只有只读访问权限,则以读写权限挂载它将导致您在尝试实际加载挂载时看到您在帖子中提到的相同错误。不幸的是,这只会在访问文件夹时显示,而不是在您实际挂载它时显示。
您还需要确保用户 NFS 在服务器上运行,并且客户端上的用户使用相同的 UID 和 GID。您可以通过id darren
在服务器和客户端上运行来检查这些值。如果 UID 和 GID 值不匹配,您可以进行编辑/etc/passwd
以使其匹配 — 但在任意更改值之前,请确保您了解自己在做什么!
一些好的资料来源:
- http://nfs.sourceforge.net/nfs-howto/ar01s07.html#pemission_issues
- http://support.apple.com/kb/TA22243
我希望这有帮助!
答案3
两台服务器上的 UID 和 GID 是否匹配?这就是它用来控制访问的,而不是登录名和组名。
答案4
_netdev
对于我来说,通过在客户端上提供安装选项,该问题已得到解决。
即添加到/etc/fstab
:
nfs-server:/ /mnt nfs4 _netdev,auto 0 0