我现在有一个简单的架构,看起来像这样:
用户发送电子邮件>后缀> Procmail> PHP脚本>写入第三方Web App
第三方网络应用恰好是CMS(我使用其API创建记录)。
我遇到的问题是用户正在向“支持”用户发送电子邮件,其中Web服务器在用户“apache”上运行。
由于此设置,所有附件都是使用“support”用户和“support”组创建的,但是我需要将它们实际创建为“apache:apache”(以便CMS可以读取和在其模板中显示这些附件)。
我理解PHP有chown和chmod函数,但是当尝试从命令行运行这些命令时,我无法将文件的所有权移交给用户“apache”。
我是否有一种简单的方法可以保留基于create目录的文件权限?这是我需要从php.ini更改的内容吗?或许我需要重新考虑架构?
感谢您的帮助!
答案 0 :(得分:0)
如果您通过以下方式运行Linux,则可以在文件系统级别解决此问题:
其中foo是保存文件的文件夹。
现在所有(新创建的)文件都应该由support支持:apache。如果你确保将文件创建为664,那么这两个地方都可以读/写它。
这不是唯一(也许甚至不是最好的)解决问题的方法,但它可能是最简单的。
答案 1 :(得分:0)
我想也许你需要重新思考你的架构,并为第三方应用程序运行apache来创建文件。一种方法是使用setuid脚本来调用API。
除了root之外, chown
通常无法工作,因为让非root用户将文件所有权更改为其他人通常是一个安全漏洞。
答案 2 :(得分:0)
为了解决这个问题,我最终做了一些狡猾的事。
在以不同的用户身份创建文件后,我运行了chgrp和chmod命令(使用PHP API),所有这些命令都是honkie dory。谢谢你的回复。