我使用 vagrant 和 chef 在虚拟机中开发自己的博客。为了能够轻松访问wordpress文件夹,我创建了一个共享文件夹。
基本上wordpress文件夹在我的主机上,并在VM中的/ var / www / wordpress中作为共享文件夹挂载。配置类似于:
config.vm.share_folder "foo", "/guest/path", "/host/path"
我的问题是,即使我在主机上更改了VM,我的VM中的所有权也始终为vagrant:vagrant
。虚拟机中的所有权更改将被忽略。
我无法使用chown
将上传目录的所有权设置为www-data:www-data
。
可以使用chmod
并将访问限制更改为777
,但这是一个非常难看的黑客攻击。
这是我真正想要的。这可能吗?:
答案 0 :(得分:37)
正如@StephenKing建议您可以更改整个目录的选项。
相关功能未记录,但the source告诉我们:
# File 'lib/vagrant/config/vm.rb', line 53
def share_folder(name, guestpath, hostpath, opts=nil)
@shared_folders[name] = {
:guestpath => guestpath.to_s,
:hostpath => hostpath.to_s,
:create => false,
:owner => nil,
:group => nil,
:nfs => false,
:transient => false,
:extra => nil
}.merge(opts || {})
end
基本上你可以为整个文件夹设置group,owner和acl,这比在主机上设置所有可写的东西更好。我还没有找到任何方法来更改嵌套目录的所有权。
这是一个quickfix:
config.vm.share_folder "v-wordpress", "/var/www/wordpress", "/host/path", :owner => "www-data", :group => "www-data"
答案 1 :(得分:12)
@约翰-syrinek
in 1.2+
config.vm.synced_folder "src/", "/srv/website",
owner: "root", group: "root"
http://docs.vagrantup.com/v2/synced-folders/basic_usage.html
答案 2 :(得分:8)
您可以允许更改来宾内的所有权:
config.vm.share_folder "foo", "/guest/path", "/host/path", {:extra => 'dmode=777,fmode=777'}
答案 3 :(得分:2)
关注@StephenKing和@aycokoster很棒的提示,我有一个用例来安装另一个只读目录。
我添加了
config.vm.share_folder "foo", "/guest/path", "/host/path", :extra => 'ro'
和
# discard exit status because chown `id -u vagrant`:`id -g vagrant` /host/path is okay
vagrant up || true
答案 4 :(得分:0)
正如其他答案所指出的那样,您可能应该使用owner
和group
配置选项来设置正确的所有者和组。
但是,有时候这是行不通的(例如,仅在供应期间稍后才创建目标用户)。在这种情况下,您可以重新安装共享:
sudo mount -t vboxsf -o uid=`id -u www-data`,gid=`id -g www-data` /path/to/share /path/to/share