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

Centos 无法更改vagrant主文件夹中文件夹的权限,centos,virtualization,virtualbox,chmod,vagrant,Centos,Virtualization,Virtualbox,Chmod,Vagrant,当我用ssh连接到我的vagrant vm时,我可以更改vagrant用户文件夹上方和外部的文件和文件夹的权限,以及vagrant用户文件夹内的文件的权限。但无法更改vagrant user文件夹下文件夹的权限。我有同样的问题,是否登录作为流浪用户和根 对更改流浪用户文件夹中的权限是否有某种限制?vagrant user文件夹不与主机操作系统共享,但capistrano部署文件夹和docRoot是共享的 来宾是CentOS 6,主机是OS X 10.7。流浪汉是1.0.5。Virtualbox是

当我用ssh连接到我的vagrant vm时,我可以更改vagrant用户文件夹上方和外部的文件和文件夹的权限,以及vagrant用户文件夹内的文件的权限。但无法更改vagrant user文件夹下文件夹的权限。我有同样的问题,是否登录作为流浪用户和根

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


来宾是CentOS 6,主机是OS X 10.7。流浪汉是1.0.5。Virtualbox是4.2.1版。

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

我有一个centos虚拟机在流浪者作为客人和win7作为主机

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

如果我发现任何有用的东西,我会向你汇报。 在这里讨论谷歌集团:

更新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 Vagrant文件,因此语法与前面的答案略有不同。 下面是CentOS 6.2为我带来的诀窍。我发现使用相对路径作为源在我的情况下效果最好。它指向共享文件夹

config.vm.synced_文件夹“/”,“/vagrant”,所有者:“vagrant”,组:“apache”,额外:“dmode=775,fmode=775”


正如Jamie所说,仍然需要在创建之前对其进行配置,因此在编辑覆盖的vagrant文件后,使用
vagrant重新加载

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


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

不同版本的Vagrant中共享文件夹的格式会发生变化。见法比奥的答案

Vagrant版本1.3.1及更早版本
config.vm.share_文件夹“v-data”、“/export”、“/export”,
:owner=>“流浪汉”,
:group=>“httpd”,
:extra=>'dmode=775,fmode=775'

流浪汉版本1.3.1、1.3.2 在Vagrant 1.3.1及更高版本中,
extra
选项已替换为需要数组的
mount\u选项

config.vm.share_文件夹“v-data”、“/export”、“/export”,
:owner=>“流浪汉”,
:group=>“httpd”,
:mount_options=>['dmode=775','fmode=775']

流浪版本>=1.3.3 在vagrant 1.3.3中,似乎
config.vm.share_文件夹
已替换为
config.vm.synced_文件夹

config.vm.synced_文件夹“v-data”、“/export”、“/export”,
:owner=>“流浪汉”,
:group=>“httpd”,

:mount_options=>['dmode=775','fmode=775']

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

您可以在Vagrant文件中更改它(由其他人回答)。
考虑更改所有者而不是组。 同样要考虑的是,如果你的服务器可以写文件,那么你的服务器很可能被称为WWW数据而不是HTTPD。使用ps aux | grep nginx
[或apache/lighthttpd]进行检查

还有其他一些选择:

  • 更改访问共享文件而不是同步文件夹的程序的所有者。
    例如,如果PHP需要写入文件,请将服务器和PHP更改为以vagrant运行。[在Apache中,这是在httpd.conf中完成的。NGINX的用户在NGINX.conf中设置,php fpm的用户在其中一个文件中设置。
    您需要更改Apache锁文件(/var/lock/apache2)或PHP websocket文件(/var/run/php5 fpm.sock)]和webserver上的权限
  • 使用不同的VM(HyperV、VMware)而不是VirtualBox。其他虚拟机似乎没有这个限制
  • 使用RSyn同步文件,而不是使用默认同步。
    config.vm.synced_文件夹/var/www/,键入:“rsync”
  • 将所有权限设置为777。通常这将是灾难性的,甚至不是一个建议。这仍然是一个坏主意,但在虚拟机上可能是可行的。但在提供共享访问之前,请三思。
    config.vm.synced_文件夹/var/www/,挂载选项:[“dmode=777”,“fmode=666”]
和更好地描述了这些答案

适用于流浪汉1.7.2 像这样编辑流浪汉文件

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

现在还不能发表评论,但要扩展MDeSilva对Vagrant 1.7.2的回答:

对某些人来说可能是显而易见的,但组和所有者应该在引号中

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

在虚拟框创建之后,我似乎无法更改其权限。但是,在VagrantFile中,您可以将共享文件夹的权限设置为以下内容:即config.vm.share_文件夹“v-data”、“/export”、“/export”、:owner=>“vagrant”、:group=>“httpd”、:extra=>“dmode=775,fmode=775”。您可以
vagrant reload
将这些更改应用于VagrantFile文件。我更喜欢'dmode=775,fmode=664'Me也是,除了使用Ansible运行Django数据库迁移外,我需要Django的
manage.py
才能执行。因为无法更改的权限