如何正确设置NFS文件夹的权限?安装结束时拒绝许可。


46

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

当我使用“磁盘工具”将其导出并安装到Mac时,它会安装,但是当我尝试打开该文件夹时,则显示我没有权限。我已经设置了rw,sync和no_subtree_check。Mac上的用户很胆小,有很多群组。

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


2
感谢您的问题,此主题为我解决了该问题!但是,请接受投票最多的答案。
mamiu

Answers:


60

NFS建立在RPC身份验证之上。对于NFS版本3,最常见的身份验证机制是AUTH_UNIX。在每个RPC调用中发送客户端系统的用户ID和组ID,并在服务器上检查这些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。


7
我遇到了这个答案,试图解决Apple OS X Yosemite nfs问题。这个答案比被接受的答案更加相关和准确。在系统之间匹配UID / GID既不建议也不可行。在系统A中根用户可能不是在系统B根用户
艾伦

28

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

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

一些好的资源:

我希望这有帮助!


是的,我不应该尝试更改现在必须重做服务器的UID。如何模仿UID和GID?真的这么复杂吗?
达伦,

不幸的是,以我在工作场所使用它的经验来看,NFS非常脆弱,是的,它可能是如此复杂。通常,您需要一个专用的NFS用户,每个服务器/客户端上都带有特定的UID / GID,这样您就不会遇到此问题。如果您在开发环境中有选择(即不必使用NFS),那么寻找使用SSHFS之类的东西将使您的开发头痛不已-但不会复制与使用以下功能的生产服务器相同的功能NFS。
Andrew M.

您认为Samba是另一种解决方案吗?我已经在Windows上毫无问题地使用了它,并且我认为即使我使用Mac开发应用程序,这也是我必须采取的方法。
达伦,

如果您愿意进行设置,那肯定是另一种可能性。
Andrew M.

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

2

您的UID和GID在两个服务器上都匹配吗?这就是控制访问的方法,而不是登录名和组名。


-2

对我而言,此问题已通过_netdev在客户端上提供安装选项而得以解决。

即添加到/etc/fstab

nfs-server:/   /mnt   nfs4    _netdev,auto  0  0
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.