无法更改vagrant主文件夹中文件夹的权限

kay*_*243 52 virtualization virtualbox centos chmod vagrant

当我进入我的vagrant vm时,我可以更改vagrant用户文件夹上方和外部的文件和文件夹的权限,以及vagrant用户文件夹中的文件的权限.但无法更改vagrant用户文件夹下的文件夹权限.无论是以vagrant用户还是root用户登录,我都有同样的问题.

在vagrant用户的文件夹中更改权限是否有某种限制?vagrant用户文件夹不与主机操作系统共享,但capistrano部署文件夹和docRoot是共享的.

访客是CentOS 6,主机是OS X 10.7.Vagrant是1.0.5.Virtualbox是4.2.1.

Gre*_*lin 87

共享文件夹的格式在不同版本的Vagrant中发生变化.请参阅Fabio的回答https://serverfault.com/questions/398414/vagrant-set-default-share-permissions

Vagrant版本1.3.1及更早版本

config.vm.share_folder "v-data", "/export", "/export", :owner => 'vagrant', :group => 'httpd', :extra => 'dmode=775,fmode=775'

Vagrant版本1.3.1,1.3.2

在Vagrant 1.3.1及更高版本中,该extra选项已替换为mount_options需要数组的选项.

config.vm.share_folder "v-data", "/export", "/export", :owner => 'vagrant', :group => 'httpd', :mount_options => ['dmode=775', 'fmode=775']

Vagrant版本> = 1.3.3

在vagrant 1.3.3中,它似乎config.vm.share_folder已被替换为config.vm.synced_folder.

config.vm.synced_folder "v-data", "/export", "/export", :owner => 'vagrant', :group => 'httpd', :mount_options => ['dmode=775', 'fmode=775']


小智 17

我的问题可能与您的问题有关.

我有一个centos vm在vagrant作为嘉宾,win7作为主持人.

我实际上无法更改与主机共享的任何文件夹的VM中的权限.

如果我发现任何有用的东西,我会报告 在这里讨论谷歌小组:

https://groups.google.com/forum/?fromgroups=#!topic/vagrant-up/2JvcoZTuWRI

更新1:我还读到你无法在共享文件夹中创建符号链接.

更新2: 似乎我无法在创建虚拟框后更改其权限.但是,在VagrantFile中,您可以将共享文件夹的权限设置为套件:IE

config.vm.share_folder "v-data", "/export", "/export", :owner=> 'vagrant', :group=>'httpd', :extra => 'dmode=775,fmode=775'
Run Code Online (Sandbox Code Playgroud)

在这里,我设置了适合我们的所有者,组和权限.

我希望这有帮助.

  • 我更喜欢'dmode = 775,fmode = 664' (6认同)
  • 您可以"vagrant reload"将这些类型的更改应用于Vagrantfiles. (5认同)

Dav*_*ter 9

在Vagrant 1.2.7中,使用了版本2 Vagrantfiles,因此语法与以前的答案略有不同.下面是使用CentOS 6.2的诀窍.我发现使用相对路径作为源在我的情况下效果最好.它指向共享文件夹.

config.vm.synced_folder "./", "/vagrant", owner: 'vagrant', group: 'apache', extra: 'dmode=775,fmode=775'

正如Jamie所说,创建之前仍然需要对其进行配置,因此vagrant reload在编辑了重写的Vagrantfile之后使用a .


Sam*_*ody 6

VirtualBox不允许更改已同步文件夹的所有者/权限.

您可以在Vagrant文​​件中更改它(由其他人回答).
考虑更改所有者而不是组.
还要考虑 - 如果这样做,以便您的服务器可以写入文件 - 您的服务器可能被称为www-data而不是httpd.使用ps aux | grep nginx[或apache/lighthttpd]进行检查.

还有一些其他选择:

  • 更改正在访问共享文件的程序的所有者,而不是同步文件夹.
    例如,如果PHP需要写入文件,请更改服务器和PHP以作为vagrant运行.[在Apache中,这是在httpd.conf中完成的.NGINX的用户设置在nginx.conf中,php-fpm的用户位于php-fpm.conf或其中包含的文件之一.
    您需要更改Apache lockfile(/ var/lock/apache2)或PHP websocket文件(/var/run/php5-fpm.sock)]和webserver的权限.
  • 使用其他VM(HyperV,VMware)而不是VirtualBox.其他VM似乎没有这个限制.
  • 使用RSyn同步文件而不是使用默认同步.
    config.vm.synced_folder "/var/www/", type: "rsync"
  • 将所有权限设置为777.通常这将是灾难性的,甚至不是建议.这仍然是一个坏主意,但在VM上可能是可行的.在提供共享访问权限之前请三思.
    config.vm.synced_folder "/var/www/", mount_options: ["dmode=777", "fmode=666"]

Ryan SechresetJeremy Kendall更好地描述了这些答案.


Ste*_*art 5

更改主机的权限而不是访客的权限。VirtualBox 不允许更改来宾操作系统共享文件的权限。

太长了;问题不在于您的来宾上的用户无权访问您的主机文件。问题是主机上 virtaul box 进程的执行用户没有在主机中写入文件的权限。有两组权限。来宾权限必须像任何其他操作系统一样设置。您还必须确保来宾操作系统运行的虚拟盒进程具有该文件夹的权限。如果该进程仅具有读取访问权限,则任何来宾用户最多能够执行的操作就是读取。

  • 我遇到了同样的问题,这没有帮助,因为 Vagrant 盒子上存在的用户在主机上不存在 (3认同)