特定文件夹中新文件的权限

时间:2015-05-19 13:00:59

标签: php apache symfony debian vagrant

我在一个流浪者vm上运行apache的Symfony2应用程序。 Apache以用户www-data的形式运行,php脚本通常以用户vagrant运行。

由于同步文件夹中的缓存速度很慢,因此我使用/dev/shm/project/cache/dev/shm/project/logs作为我的日志。

我设置了如下所述的权限:http://symfony.com/doc/current/book/installation.html#book-installation-permissions

sudo setfacl -R -m u:"www-data":rwX -m u:"www-user":rwX -m u:"vagrant":rwX /dev/shm/project/cache /dev/shm/project/logs
sudo setfacl -dR -m u:"www-data":rwX -m u:"www-user":rwX -m u:"vagrant":rwX /dev/shm/project/cache /dev/shm/project/logs

我的问题是,当我phpunit作为vagrant运行时,使用以下权限创建缓存文件,这在通过apache访问时是个问题,因为它会导致 RuntimeException “无法写入缓存文件......”

$ ls -la /dev/shm/project/cache/test
total 2320
drwxrwxr-x+ 7 vagrant vagrant    400 May 19 12:52 ./
drwxrwxr-x+ 3 root    root        60 May 19 12:52 ../
drwxrwxr-x+ 2 vagrant vagrant  38700 May 19 12:52 annotations/
-rw-r--r--+ 1 vagrant vagrant 233164 May 19 12:52 appTestDebugProjectContainerCompiler.log
-rw-r--r--+ 1 vagrant vagrant 538934 May 19 12:52 appTestDebugProjectContainer.php
-rw-r--r--+ 1 vagrant vagrant  57446 May 19 12:52 appTestDebugProjectContainer.php.meta
-rw-r--r--+ 1 vagrant vagrant 847598 May 19 12:52 appTestDebugProjectContainer.xml
-rw-r--r--+ 1 vagrant vagrant 174805 May 19 12:52 appTestUrlGenerator.php
-rw-r--r--+ 1 vagrant vagrant  16185 May 19 12:52 appTestUrlGenerator.php.meta
-rw-rw-r--+ 1 vagrant vagrant   5050 May 19 12:52 classes.map
drwxrwxr-x+ 3 vagrant vagrant     60 May 19 12:52 doctrine/
...

每次我必须运行一些脚本时,我都不想切换用户。我希望设置新文件的权限,以便两个用户都可以更改它们。

修改:还有第三位用户:www-user。该用户是fpm的用户。所以实际上这个用户和流浪者用户必须拥有所有文件的读写权限。我已经更改了acl,但它仍然无效。

2 个答案:

答案 0 :(得分:0)

您可以解决此问题,将当前用户(vagrant?)添加到www-data用户组,该用户组与Apache用户相同。

在类似的环境中,我使用了一个专用用户,这是该组的一部分。

答案 1 :(得分:0)

你可以在每个3个用户的主目录中添加umask(0002)到.profile(这是linux的方式,只是不确定VM)

  

将以下行放在app / console的开头,   web / app.php和web / app_dev.php文件:

     

的umask(0002); //这将允许权限为0775

p.s:所有3个用户必须属于www-data用户组