Vagrant 同步文件夹权限

Vagrant synced folder permissions

我在 Vagrant 中设置了一个同步文件夹,从我的 Windows 主机到来宾。最初文件的权限太开放所以我添加了以下挂载选项:

config.vm.synced_folder "../my-folder", "/home/vagrant/my-folder",
    mount_options: ["dmode=775,fmode=664"]

但是,我需要添加对此文件夹中单个文件的执行权限。 chmod +x file 无效。有没有办法允许共享文件夹中的单个项目对文件夹中的其他项目具有 executable/have 不同的权限?

最后想出了两个解决方案:

1) 接受所有可执行的文件

config.vm.synced_folder "../my-folder", "/home/vagrant/my-folder",
    mount_options: ["dmode=775,fmode=777"]

2) 使用rsync方式同步文件夹

config.vm.synced_folder "../ansible-provision", "/home/vagrant/ansible", type: "rsync",
    rsync__exclude: ".git/"

每种方法都有其自身的缺点,但第一种方法实施起来最快并且适合我的用例,所以我采用了它。

我在文件夹权限方面遇到了类似的问题。我在 Mac OSX 上使用 virtualbox。我添加了所有者和组选项,这解决了我无法写入服务器上的缓存目录的问题。更新以包含文件夹和文件模式。

srv.vm.synced_folder server["synced_folder"]["src"], server["synced_folder"]["dest"], create: true, group:'vagrant', owner:'www-data', mount_options: ["dmode=775,fmode=664"]