如何正确设置 NFS 文件夹的权限?安装端的权限被拒绝。

Dar*_*ren 59 linux ubuntu nfs

我正在尝试连接到我的开发服务器上的 NFS 文件夹。开发服务器上文件夹的所有者是 darren 和 group darren。

当我使用磁盘工具将它导出并安装到我的 Mac 时,它会安装,但是当我尝试打开该文件夹时,它说我没有权限。我已经设置了 rw、sync 和 no_subtree_check。Mac 上的用户对一堆组感到厌烦。

我是否需要设置相同的组和用户才能访问该文件夹?

sci*_*rus 81

NFS 建立在 RPC 身份验证之上。对于 NFS 版本 3,最常见的身份验证机制是 AUTH_UNIX。客户端系统的用户 ID 和组 ID 在每个 RPC 调用中发送,并且这些 ID 对正在访问的文件的权限在服务器上检查。为此,服务器和客户端上的 UID 和 GID 必须相同。但是,您可以通过组合 all_squash、anonuid 和 anongid 导出选项来强制所有访问都作为单个用户和组进行。all_squash将所有 UID 和 GID 映射到匿名用户,anonuidanongid 设置匿名用户的 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。

  • 我在尝试解决 Apple OS X Yosemite nfs 问题时遇到了这个答案。这个答案比公认的答案更相关和准确。跨系统匹配 UID/GID 既不可取也不可行。系统 A 上的 root 用户可能不是系统 B 上的 root 用户。 (9认同)

And*_* M. 28

当您挂载 NFS 时,您挂载它的权限必须与您在服务器上的权限相匹配。例如,如果您的用户只有只读访问权限,当您尝试实际加载挂载时,以读写方式挂载它会导致您看到您在帖子中提到的相同错误。不幸的是,这只会在访问文件夹时显示,而不会在您实际安装它时显示。

您还需要确保用户 NFS 在服务器上运行,并且客户端上的用户使用相同的 UID 和 GID。您可以通过id darren在服务器和客户端上运行来检查这些值。如果 UID 和 GID 值不匹配,您可以编辑/etc/passwd以使其匹配- 但请确保在任意更改值之前了解您在做什么!

一些好的来源:

我希望这有帮助!

  • 我会犹豫地说 NFS 是脆弱的。它是一个长期建立的文件服务协议。NFS 实际上只有两个要求:客户端之间同步的 UID/GID 和客户端和服务器之间的时间同步。传统上,NIS 用于同步用户信息,但 LDAP 是过去十年新部署的更安全选择。 (2认同)