在PHP下以不同的用户删除文件

我以用户www-data运行PHP,Nginx以用户nginx运行。 我需要删除用户nginx拥有的/var/cache/nginx/ ,我想用PHP来完成。

有没有办法让www-data删除/var/cache/nginx/

或者有没有办法在PHP内执行rm作为用户nginx

在操作系统级别,您可以通过以下两种方式来解

  • 文件系统的ACL(这是有点毛茸茸的)
  • 用户组 – 在我看来,它更容易一些

脚步:

  • 修改nginx的初始化脚本以包含umask 007 – 这将允许创build具有组可写权限的文件
  • 修改用户www-data也在nginx组中 – 例如usermod -a -G nginx www-data
  • 重新启动受影响的服务,你应该没问题。

您可以使用扩展文件系统访问列表来调整它,例如

setfacl -R -d -mu:www-data:rwX / var / cache / nginx

我更新了我的nginx.conf来运行Nginx作为www-data ,这个技巧。