我以用户身份运行 PHP www-data
,而 Nginx 以用户身份运行nginx
。我需要删除/var/cache/nginx/
用户拥有的中的文件nginx
,我想使用 PHP 来执行此操作。
有没有办法允许www-data
删除文件/var/cache/nginx/
?
或者有没有办法在 PHP 中rm
以用户身份执行?nginx
答案1
在操作系统级别,您可以通过两种方式解决此问题:
- 文件系统 ACL(有点复杂)
- 用户组——我认为这有点容易
脚步:
- 修改 nginx 的 init 脚本以包含
umask 007
- 这将允许创建具有组可写权限的文件 - 修改用户
www-data
以使其也属于nginx
该组 - 例如usermod -a -G nginx www-data
- 重新启动受影响的服务就好了。
答案2
您可以使用扩展文件系统访问列表进行调整,例如
setfacl -R -d -mu:www-data:rwX /var/cache/nginx
答案3
我更新了我的nginx.conf
以运行 Nginx www-data
,这成功了。