在 vagrant 共享目录上运行 setfacl

Jos*_*kin 10 virtualbox symfony vagrant

尝试使用流浪虚拟机启动并运行 Symfony2 项目。我已经看过无数关于此的文章,但事实证明,正确获得缓存目录的权限是极其痛苦的。

在我的Vagrantfile

config.vm.share_folder("src", "/var/www", "../www")
Run Code Online (Sandbox Code Playgroud)

我的虚拟机fstab文件:

proc            /proc           proc    nodev,noexec,nosuid 0       0
/dev/mapper/ubuntu--1110-root /               ext4    acl,errors=remount-ro 0       1
# /boot was on /dev/sda1 during installation
UUID=4ed7eaaf-6f42-48ba-b5ed-f0c1df9add38 /boot           ext2    defaults        0       2
/dev/mapper/ubuntu--1110-swap_1 none            swap    sw              0       0
Run Code Online (Sandbox Code Playgroud)

虚拟机上已经安装了 acl 包。

当我按照 Symfony2 安装说明在 /var/www 中运行以下命令时:

 sudo setfacl -R -m u:apache:rwx -m u:username:rwx app/cache app/logs
Run Code Online (Sandbox Code Playgroud)

我得到:

不支持操作

我可以在 FS(共享目录之外)的任何其他目录或文件上运行该命令,并且该命令有效。是什么赋予了?

小智 6

要绕过 Symfony2 和 Vagrant 的所有权限问题,最简单的解决方案是将运行 apache 的用户和组更改为 vagrant。为此,请编辑文件 /etc/apache2/envvars 并将第 16 行和第 17 行替换为以下内容: export APACHE_RUN_USER=vagrant export APACHE_RUN_GROUP=vagrant 请注意,这些说明适用于 Ubuntu 上的 apache 2.2,请参考您的 apache 和操作系统版本所以。

如果您不想更改 apache 用户和组,您也可以挂载一个 ramdisk 并将您的 symfony 项目放在上面。然后 vagrant 就可以修改这个磁盘的权限了。有关如何挂载 ramdisk 的说明,请参阅此链接