即使所有者ID与用户ID

时间:2016-09-24 16:51:39

标签: php chmod

我创建了一个文件夹/ home / UploadContent with owner:group as apache:apache,与php进程相同的组和用户。然后我使用chmod将权限设置为775,这应该允许php将上传的文件写入此目录。我试过了,它给了我相同的权限错误。

确切的错误是“无法打开流:权限被拒绝”。

我写了一个小的php程序来测试是否: $Owner = fileowner("/home/UploadContent/"); $Current = exec("whoami"); $Id = exec("id -u " . $Current); echo ($Owner . " is owner, " . $Id . " is user.");

这总是返回“48是所有者,48是用户。”

这意味着php具有正确的写入,读取和执行权限,但它仍然会抛出错误。

1 个答案:

答案 0 :(得分:0)

[通过评论推广]

听起来像SELinux问题......

尝试在bash提示符下运行class RetrieveMessages(APIView): def post(self, request, *args, **kwargs): posted_data = self.request.data city = posted_data['city'] return_data = [ {"echo": city} ] return Response(status=200, data=return_data) def get.... ,然后重新运行该脚本。如果这样可以解决问题,则需要配置SELinux以允许您的进程访问指定的文件夹。

您可以使用setenforce 0重新启用SELinux。如果做不到这一点,SELinux将在启动时重新启用。

在Centos / RedHat上,我使用audit2allow通过分析审核日志来制定适当的策略。我不知道其他发行版的标准是什么。 This Wiki page解释了SELinux的作用以及如果您希望服务器安全,它的重要性。

我不知道有任何方法可以通过配置文件配置SELinux,但是您可以使用chcon来更改特定资源(如文件)的安全上下文。有关安全上下文如何工作的更多详细信息,请参见here

最后,您可以disable SELinux entirely,但不建议这样做。

正如@VicSeedoubleyew在评论中指出的那样,有一个有用的清单可以解决这个问题和类似问题available here