无法更改Vagrant Home文件夹中文件夹的权限



当我进入流浪VM时,我可以更改Vagrant用户文件夹上方和外部文件的文件和文件夹的权限,以及在流浪者用户文件夹中的文件。但是无法更改流量用户文件夹下方文件夹的权限。我有同样的问题,无论是否登录到流浪者和root。

是否有某种限制在流浪者用户文件夹中的更改权限?Vagrant用户文件夹未与主机OS共享,但是Capistrano部署文件夹和DocRoot是。

来宾是Centos 6,主机是OS X 10.7。Vagrant是1.0.5。虚拟盒为4.2.1。

共享文件夹的格式跨不同版本的vagrant更改。请参阅Fabio的答案https://serverfault.com/questions/398414/vagrant-set-set-nare-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']

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

我在Vagrant中有一个Centos VM作为客人,Win7作为主持人。

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

如果我发现任何有用的东西,会报告。此处在Google组上讨论:

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

更新1:我还读到您不能在共享文件夹中创建符号链接。

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

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对我来说是什么诀窍。我发现使用相对路径在我的情况下最有效。它指向共享文件夹。

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

正如杰米(Jamie)所述,仍然有必要在创建之前对其进行配置,因此在编辑了超级vagrantfile后使用vagrant reload

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 Sechreset和Jeremy Kendall可以更好地描述这些答案。

更改"权限"表单主机而不是客人。VirtualBox取消共享文件上的更改权限形式。

tldr;问题不是您的来宾用户没有访问主机文件的权限。问题是主机上的virtaul框进程的执行用户无权在主机中编写文件。有两组权限。客人的权限必须像其他任何操作系统一样设置。您还必须确保您的访客操作系统正在运行的虚拟盒流程具有该文件夹的权限。如果该过程仅具有读取访问权限,那么所有来宾用户都能做的就是阅读。

尚无法评论,但是要扩展Mdesilva的Vagrant 1.7.2:

对某些人来说可能是显而易见的,但是小组和所有者应该以报价为例。

group: "sync_group", owner: "sync_owner", mount_options: ['dmode=755, fmode=644']

vagrant 1.7.2编辑这样的流式文件,

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

最新更新