在无业游民的共享目录上运行setfacl


10

试图启动一个Symfony2项目并与一个无聊的VM运行。我已经看到了不计其数的文章,但是正确地获得缓存目录的权限被证明是非常痛苦的。

在我的Vagrantfile

config.vm.share_folder("src", "/var/www", "../www")

我的VM的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

ACL软件包已安装在VM上。

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

 sudo setfacl -R -m u:apache:rwx -m u:username:rwx app/cache app/logs

我得到:

不支持操作

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


这并没有解决实际问题,但执行此解决现在:stackoverflow.com/questions/7357120/...
乔什-南京

Answers:


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和OS版本来执行所以。

如果您不想更改apache用户和组,也可以安装ramdisk并将symfony项目放在上面。然后,vagrant可以修改该磁盘上的权限。有关如何安装虚拟磁盘的说明,请参见此链接


3

更好的解决方案是使用属性覆盖。请参阅Opscode Wiki

例如,在角色定义中:

override_attributes({
    "apache" => {
      "user" => "vagrant",
      "group" => "vagrant"
    }
})

我在共享文件夹中的Typo3遇到相同的问题,无法创建临时文件。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.