我可以修改vagrant中共享文件夹的所有权吗?

ayc*_*ter 35 acl chef-infra vagrant

我使用vagrantchef在虚拟机中开发自己的博客.为了方便访问wordpress文件夹,我创建了一个共享文件夹.

基本上wordpress文件夹在我的主机上,并作为共享文件夹挂载在VM中的/ var/www/wordpress中.配置类似于:

config.vm.share_folder "foo", "/guest/path", "/host/path"
Run Code Online (Sandbox Code Playgroud)

我的问题是,vagrant:vagrant即使我在主机上更改了VM,我的VM中的所有权也始终如此.VM中的所有权更改将被忽略.

我不能chown用来设置上传目录的所有权www-data:www-data.

可以使用chmod和更改访问限制777,但这是一个非常丑陋的黑客.

这就是我真正想要的.这可能吗?:

  • 开发:从我的主机访问共享文件夹.
  • 访问限制:在VM上,所有文件和文件夹都应具有适当且安全的所有权和访问限制.

ayc*_*ter 38

正如@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 
Run Code Online (Sandbox Code Playgroud)

基本上你可以为整个文件夹设置group,owner和acl,这比在主机上设置所有可写的东西要好.我还没有找到任何方法来更改嵌套目录的所有权.

这是一个quickfix:

config.vm.share_folder "v-wordpress", "/var/www/wordpress", "/host/path", :owner => "www-data", :group => "www-data"
Run Code Online (Sandbox Code Playgroud)


Sea*_*ton 13

@约翰 - syrinek

在1.2+

config.vm.synced_folder "src/", "/srv/website",
  owner: "root", group: "root"
Run Code Online (Sandbox Code Playgroud)

http://docs.vagrantup.com/v2/synced-folders/basic_usage.html


Ste*_*ing 8

您可以允许更改来宾内的所有权:

config.vm.share_folder "foo", "/guest/path", "/host/path", {:extra => 'dmode=777,fmode=777'}
Run Code Online (Sandbox Code Playgroud)