Shell PHP-FPM rm权限被拒绝

Shell PHP-FPM rm权限被拒绝,shell,nginx,permissions,php,Shell,Nginx,Permissions,Php,我有nginx+php fpm,我需要从php脚本中递归删除文件夹: <?php error_reporting(E_ALL); ini_set('display_errors', '1'); ini_set('display_startup_errors', '1'); $out = shell_exec('/bin/rm -vrf /data/vmail/test'); var_dump($out); PHP-FPM在用户“nginx”下运行 NGINX在用户“NGINX”下运行

我有nginx+php fpm,我需要从php脚本中递归删除文件夹:

<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
$out = shell_exec('/bin/rm -vrf /data/vmail/test');
var_dump($out);
  • PHP-FPM在用户“nginx”下运行
  • NGINX在用户“NGINX”下运行
  • /数据/vmail和所有子文件夹都属于vmail:vmail(chmod 770)
存在补充组:

# groups nginx
nginx : nginx vmail
# groups vmail
vmail : vmail nginx
解决
  • 如果将I chown
    /data/vmail/test
    发送到nginx:nginx,则其内容将变为可删除。但是
    /data/vmail/test
    仍然不是,只要
    /data/vmail
    属于vmail:vmail我想
  • 如果I
    chmod-R 777/data/vmail/test&&chmod 777/data/vmail
    则表示的文件夹可删除
  • PHP函数
    rmdir()!但是,大型文件夹的递归删除太占用资源
我不认为这些选择是解决问题的办法。此外,我不考虑根用户和<代码> /ETC/Sudoes>代码>或运行PHP FPM作为根的解决方案。所以如何使/bin/rm工作

附加信息##

删除目录内容是目录中的写入操作。因此,运行PHP的用户需要在/data/vmail上具有写入权限。

启动PHP fpm后是否更改了组所有权?万一。。。
# groups nginx
nginx : nginx vmail
# groups vmail
vmail : vmail nginx