Vagrant 共享/同步文件夹权限

Posted

技术标签:

【中文标题】Vagrant 共享/同步文件夹权限【英文标题】:Vagrant shared/synced folders permissions 【发布时间】:2014-09-17 14:48:57 【问题描述】:

根据我的研究,我了解到 VirtualBox 同步文件夹在安装过程中设置了权限。后来,我无法更改它,因此整个同步文件夹的权限对于共享文件夹中的每个文件/文件夹必须相同。在尝试使用或不使用超级用户权限进行更改时,更改会立即还原。

这如何与 Symfony php 框架一起工作,其中对不同的文件/文件夹有几种不同的权限? (即应用程序/控制台需要执行权限,但我不想到处都有 7XX)。

我在不同但类似的问题 (Vagrant and symfony2) 中发现,我可以将 Vagrantfile 中所有内容的权限设置为 777,但是这是不可取的,因为我需要在我的源代码后面使用 GIT,而不是部署到生活环境。在生产中运行低于 777 的所有内容,很好地说,是不正确的。

你们是如何应对这种情况的?你的权限设置是什么?

【问题讨论】:

我从来没有遇到过这些问题,因为 Git 在主机上运行,​​并且它正确使用了主机文件系统的文件权限。你能更具体地描述一下你的设置吗? @Gerry 谢谢你,这就是我目前正在做的事情,似乎是唯一合理的解决方案。我正在从主机系统(Windows 7)操作 Git,以及从来宾(behat、composer 等)开发/测试的所有其他内容。 【参考方案1】:

可能的解决方案是使用rsync synced folder strategy,以及vagrant rsync 和vagrant rsync-auto 命令。

这样您将失去双向同步,但您可以管理文件权限和所有权。

【讨论】:

我也在研究 rsync,但是还有另一个问题是文件只能以一种方式同步,从主机到任务。这样,我将不得不运行每个命令来更新主机上不适合 Windows 主机的任何内容。 有关情况的更多更新。除了我可能能够忍受的双向问题之外,RSYNC 还会更改权限级别。 我觉得同步是不可预测的,因为 vagrant 依赖于主机操作系统、VM 和 SYNC 提供程序的太多默认值。【参考方案2】:

我也有类似的情况。我开始使用 Vagrant 挂载选项,并发现当我升级部分技术堆栈(内核、Virtualbox、Vagrant、Guest Additions)时,我在尝试在同步文件夹中设置权限时开始出现不同的行为。

在某些时候,我在我的 shell 配置器中更新了一些权限非常好。起初,变化反映在客人和主人身上。在另一个时间点,它按照我预期的方式完成,更改仅反映在来宾而不是主机文件系统中。在我的主机上更新内核和 VB 后,我注意到来宾中的权限更改仅反映在主机上。

我试图使用 DKMS 针对旧版本的内核编译 VBOX。还没有运气。

【讨论】:

【参考方案3】:

现在我有了一点经验,其实我可以回答这个问题了。

这个问题有3个解决方案:

在您的主机系统中使用 Git,因为 vagrant basic shared folders 设置以某种方式强制 777(至少在 Windows 主机上) 使用 vagrant 中的 NFS shared folders 选项(在 Windows 开箱即用时不可用) 配置更复杂的 rsync,如Emyl's 回答中所述(同步速度较慢)。

【讨论】:

以上是关于Vagrant 共享/同步文件夹权限的主要内容,如果未能解决你的问题,请参考以下文章

rsync同步windows共享文件,权限无法同步

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

Vagrant 共享和同步文件夹

在 Vagrant 下启用 SMB 文件共享

Vagrant:如何禁用 Windows 主机的 NFS 同步文件夹?

Vagrant Homestead'存储'文件夹权限被拒绝[已结束]