无法更改stream浪主文件夹内的文件夹的权限

当我进入我的stream浪vm时,我可以更改stream浪用户文件夹之上和之外的文件和文件夹以及stream浪用户文件夹内的文件的权限。 但不能更改stream浪者用户文件夹下的文件夹的权限。 无论是作为stream浪的用户还是root用户,我都有同样的问题。

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

客人是CentOS 6,主机是OS X 10.7。 stream浪是1.0.5。 Virtualbox是4.2.1。

共享文件夹的格式在不同版本的Vagrant中发生变化。 看到法比奥的答案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

在stream浪1.3.3中, config.vm.share_folder已被replace为config.vm.synced_folder

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

我的问题可能与你的问题有关。

我有一个centos vm作为客人和win7作为主机。

我实际上不能更改与主机共享的任何文件夹的虚拟机的权限。

如果我发现任何有用的东西将会回报。 在这里讨论谷歌组:

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

更新1:我也读过,你不能在共享文件夹中创build符号链接。

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

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

在这里我已经设置了所有者,组和权限,为我们工作。

我希望这有帮助。

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

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

正如Jamie所说的那样, 创build之前还需要对其进行configuration,因此在编辑了重写的Vagrantfile之后,请使用vagrant reload

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

你可以改变它在stream浪文件(由他人回答)。
考虑改变所有者而不是小组。
还要考虑到 – 如果你的服务器可以写入文件 – 你的服务器可能被称为www-data而不是httpd。 使用ps aux | grep nginx ps aux | grep nginx [或apache / lighthttpd]来检查。

还有其他一些select:

  • 更改访问共享文件的程序的所有者,而不是同步的文件夹。
    例如,如果PHP需要写入文件,更改服务器和PHP作为stream浪者运行。 [在Apache中,这是在httpd.conf中完成的。 NGINX的用户是在nginx.conf中设置的,php-fpm的用户是在php-fpm.conf或其中包含的文件之一。
    您需要更改Apachelocking文件(/ var / lock / apache2)或PHP websocket文件(/var/run/php5-fpm.sock)]和web服务器的权限。
  • 使用不同的虚拟机(HyperV,VMware)而不是VirtualBox。 其他虚拟机似乎没有这个限制。
  • 使用RSyn来同步文件,而不是使用默认的同步。
    config.vm.synced_folder "/var/www/", type: "rsync"
  • 将所有权限设置为777.通常情况下,这将是灾难性的,甚至没有build议。 这仍然是一个坏主意,但在虚拟机上可能是可行的。 尽pipe在给予共享访问权之前请仔细考
    config.vm.synced_folder "/var/www/", mount_options: ["dmode=777", "fmode=666"]

Ryan Sechreset和Jeremy Kendall更好地描述了这些答案。

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

TLDR; 问题不在于您的访客上的用户没有访问您的主机文件的权限。 问题是主机上virtaul box进程的执行用户没有权限在主机上写入文件。 有两组权限。 访客权限必须像其他任何操作系统一样设置。 您还必须确保您的客户端操作系统正在运行的虚拟框过程对该文件夹具有权限。 如果该进程只具有读访问权限,则任何访客用户将能够执行的操作都被读取。

目前还不能评论,但要扩展MDeSilva的Vagrant 1.7.2的答案:

对某些人来说可能是显而易见的,但是小组和老板应该在报价中。

 group: "sync_group", owner: "sync_owner", mount_options: ['dmode=777, fmode=776'] 

对于stream浪1.7.2编辑这样的stream浪文件,

 group: sync_group, owner: sync_owner, mount_options: ['dmode=777', 'fmode=776']