Vagrant使用NFS同步文件夹权限错误

10
尝试在 Vagrant 中使用同步文件夹的 NFS 插件,它可以正常工作,但是在虚拟机 (VM) 中,权限不正确。
-rw-r--r-- 1  501 dialout    0 Jan 20 00:51 a
-rw-r--r-- 1  501 dialout    0 Jan 20 00:51 foo

我试图按照Vagrant文档在Vagrantfile中设置uidgid

config.nfs.map_uid = 1001
config.nfs.map_gid = 1001
我希望它能在访客中使用正确的用户/组,但仍在使用501和dialout。 有什么想法吗?

你使用的是哪个具体的插件?我看到有几个与NFS相关的Vagrant插件可用。此外,您可以在不需要插件的情况下在Vagrant中设置同步文件夹的用户和组权限:https://www.vagrantup.com/docs/synced-folders/basic_usage.html - Patrick Lee
你可以在sync_folder配置中添加类似:mount_options => [“dmode=777”,“fmode=666”]的内容吗? - Frederic Henri
你的 Vagrant 的操作系统主机是什么? - miltone
主机是 OS X。使用 Vagrant 内置的默认 NFS 支持。 - Justin
2个回答

2

这对我在MacOS Catalina主机和Ubuntu 18.04客户机上的情况有效(使用Vagrant 2.2.9,VirtualBox 6.1.12):

opts = {
  type: 'nfs',
  linux__nfs_options: ['no_root_squash'],
  map_uid: 0,
  map_gid: 0
}

config.vm.synced_folder '.', '/var/www/project', opts

您可以像往常一样使用chownchmod命令:
$ sudo chown -R vagrant:vagrant /var/www/project
$ sudo chmod -R 774 /var/www/project/logs

注意:在开发环境中使用no_root_squash是可以的,但生产环境中不要使用它。它允许远程root用户更改共享文件系统中的任何文件。

另一个选择可能是使用vagrant-bindfs插件。但我觉得为此安装和配置额外的插件有点麻烦。


对于 Ubuntu 主机和 Ubuntu 客户端,我发现它可以在没有 linux__nfs_options 的情况下正常工作:opts = {type: 'nfs', map_uid: 0, map_gid: 0} - Dimetry

-4

我也遇到了同样的问题。这是在我将我的MacOS升级到mcOS Sierra版本10.12.1之后开始出现的。对我起作用的诀窍是在Vagrantfile中设置/强制所有者和组为“vagrant”用户,如下所示:

    config.vm.synced_folder "/users/myuser/src/", "/home/vagrant/src/", owner: "vagrant", group: "vagrant"

我还必须从Vagrantfile中删除之前存在的“nfs:true”设置。


5
这不是一个解决方案,只是关闭NFS而非修复问题 :-( - Robin van Baalen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接