chmod无法更改Vagrant VM中的权限

Rob*_*Coe 4 cygwin vagrant snowplow

我正在尝试建立一个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:file/vagrant/home/ansible/ansible_hosts被标记为可执行文件,但无法正确执行.如果这不应该是可执行脚本,请更正此问题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环境中运行的已知问题,该环境不允许在同步到主机的文件上设置权限?

谢谢.

Raf*_*ski 8

这是一个已知的缺陷,但据报道不是一个错误:从虚拟机内更改共享文件夹权限

有一个很好的教程,介绍如何在vagrant中设置synced文件夹,以便它符合您的需求 - 如果您导航到该链接,它将显示以下代码段

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

它显示了如何调整同步文件夹的权限.

或者,您也可以使用另一种同步文件夹的方法,例如rsync(请记住权衡取舍)

config.vm.synced_folder "/Users/ryansechrest/Projects/Sites", "/var/www/domains", 
   type: "rsync"
Run Code Online (Sandbox Code Playgroud)

更多关于这一点