更改 /vagrant 的权限

5

由于/vagrant目录的文件权限和所有权,我无法访问vagrant中的Apache服务器。我该如何更改/vagrant的默认所有者和文件权限?

默认权限如下: drwx------ 1 vagrant vagrant 4096 Apr 18 19:53 vagrant

我应该在Vagrantfile中做哪些更改以覆盖默认权限?

Vagrant版本为1.5.3

我的Vagrantfile

Vagrant.configure("2") do |config|
    config.vm.provider :virtualbox do |vb|
    #...
    end
config.vm.synced_folder ".", "/vagrant", :mount_options => ["dmode=777","fmode=666"]
end
4个回答

4
在Vagrant API版本2中,您可以像这样共享文件夹:
config.vm.synced_folder "/Direct/Path/To/Your/Folder", "/Direct/Path/To/The/Vagrant/Folder", :owner => "www-data", :group => "www-data"
config.vm.synced_folder "/Direct/Path/To/Another/Folder", "/Direct/Path/To/The/Other/Vagrant/Folder", :owner => "www-data", :group => "www-data"

您需要将此信息放置在以下文本后的块中:
# Share an additional folder to the guest VM. The first argument is
# the path on the host to the actual folder. The second argument is
# the path on the guest to mount the folder. And the optional third
# argument is a set of non-required options.

我曾经遇到了你所描述的同样问题,通过这种方式我解决了它。希望能对你有所帮助。如果你需要更多关于这个问题的信息,我强烈推荐阅读RT(F)M


谢谢回复!我已经尝试了几乎所有可能的config.vm.synced_folder语法,但仍然没有成功。 - SuperJesus
很遗憾听到这个问题,我从未遇到过使用Vagrant的问题。如果有什么问题的话,尝试更新或重新安装Vagrant?祝一切顺利。 - Rixhers Ajazi

1

回答您的问题:

我应该如何更改Vagrantfile以覆盖默认权限?

我不知道有什么其他方法可以更改权限。

要通过更改主机上的权限来解决此问题。一种方法是使同步文件夹具有组写入权限,使用 chmod -R g+w <同步文件夹>。 然后在vagrant VM中,使用 usermod -a -G www-data vagrant 将apache服务器用户(ubuntu上的www-data)添加到vagrant组中。-a非常重要,因为它将新组附加到该用户的组列表中。如果省略,则新组将替换旧列表。

您还需要确保vagrant VM上的umask设置为0022,使用 umask 0022。然后重新启动apache服务器。

您可能还需要在主机机器上设置同步文件夹的粘滞位,使用 chmod -R +s <同步文件夹>

我要感谢我的同事给了我这个答案。


1

当我尝试弄清如何做类似的事情时,这是我考虑过的一个选项:

config.vm.synced_folder "./sites", "/var/sites/", id: "vagrant-root",
  owner: "vagrant",
  group: "www-data",
  mount_options: ["dmode=775,fmode=664"]

0
问题已通过将主机文件夹权限更改为755,然后运行vagrant reload来进行临时解决。我几乎尝试了config.vm.synced_folder的每个语法,但都无济于事。在vagrant up / reload期间,我的vagrantfile中的这些命令似乎被忽略了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接