chmod 无法更改 Vagrant VM 中的权限

chmod fails to alter permissions in Vagrant VM

我正在尝试设置一个 Vagrant 环境来托管 Snowplow (https://github.com/snowplow)。当我从 cygwin shell

启动 vagrant 时

$vagrant up && vagrant ssh

我进入 Ubuntu 访客映像 (12.04),当我尝试使用 ansible 将 java8 安装到此环境中时,我收到此消息:

vagrant@precise64:~$ ansible-playbook /vagrant/ansible-playbooks/java8-gradle.yml --inventory-file=/vagrant/home/ansible/ansible_hosts --connection=local ERROR: The file /vagrant/home/ansible/ansible_hosts is marked as executable, but failed to execute correctly. If this is not supposed to be an executable script, correct this with chmod -x /vagrant/home/ansible/ansible_hosts.

文件确实是777:

-rwxrwxrwx 1 vagrant vagrant 24 Mar 3 19:03 ansible_hosts*

但是同一个文件已同步到主机 (Windows) 并且 cygwin 将该文件显示为 644:

-rw-r--r-- 1 rcoe Domain Users 24 Mar 3 14:03 ansible_hosts

在无外设 (VirtualBox) Vagrant 环境中是否存在不允许对同步到主机的文件设置权限的已知问题运行?

谢谢。

这是一个已知缺陷,但据说不是错误:Changing shared folder permissions from within virtual machine

关于如何在 vagrant 中设置同步文件夹以便它满足您的需要,有一个很好的 tutorial - 如果您导航到那个 link 它将显示以下片段

config.vm.synced_folder "./", "/var/sites/dev.query-auth", id: "vagrant-root",
   owner: "vagrant",
   group: "www-data",
   mount_options: ["dmode=775,fmode=664"]

显示如何调整已同步文件夹的权限。

或者,您也可以使用其他同步文件夹的方法,例如 rsync(记住 trade-offs 是什么)

config.vm.synced_folder "/Users/ryansechrest/Projects/Sites", "/var/www/domains", 
   type: "rsync"

更多相关信息here