我使用的流浪汉 , 厨师培养自己的博客在虚拟机中。 可以很方便地访问WordPress的文件夹,我创建了一个共享文件夹。
基本上WordPress的文件夹是我的主机上,并且被安装为在VM /无功/网络/ wordpress的共享文件夹 。 该配置类似于:
config.vm.share_folder "foo", "/guest/path", "/host/path"
我的问题是,在我的虚拟机的所有权始终是vagrant:vagrant
,即使我改变我的主机上。 在VM所有权变更被忽略。
我不能使用chown
设置上传目录的所有权相www-data:www-data
。
它可以使用chmod
并更改访问限制到777
,但是这是一个非常丑陋的黑客。
以下是我真正想要的。 这可能吗?:
- 发展:访问从我的主机共享文件夹。
- 访问限制:在虚拟机中的所有文件和文件夹应该有适当的安全的所有权和访问限制。
作为@StephenKing建议你可以改变整个目录的选项。
相关的功能没有记载,但来源告诉我们:
# 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
基本上,你可以为整个文件夹是方式比在主机上设置的一切世界写更好的组,所有者和ACL。 我还没有发现改变嵌套目录的所有权的任何方法。
这里是一个的quickfix:
config.vm.share_folder "v-wordpress", "/var/www/wordpress", "/host/path", :owner => "www-data", :group => "www-data"
@约翰 - syrinek
在1.2+
config.vm.synced_folder "src/", "/srv/website",
owner: "root", group: "root"
http://docs.vagrantup.com/v2/synced-folders/basic_usage.html
您可以允许改变客户内部的所有权:
config.vm.share_folder "foo", "/guest/path", "/host/path", {:extra => 'dmode=777,fmode=777'}
在@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
至于其他的答案都指出你应该设置正确的所有者和组使用的owner
和group
配置选项。
然而,有时会无法正常工作(例如,当规定期间才创建后目标用户)。 在这些情况下,您可以重新安装的共享:
sudo mount -t vboxsf -o uid=`id -u www-data`,gid=`id -g www-data` /path/to/share /path/to/share