为啥即使它是组的成员,apache也不能写入文件夹?
Posted
技术标签:
【中文标题】为啥即使它是组的成员,apache也不能写入文件夹?【英文标题】:Why can't apache write to a folder even though it's a member of the group?为什么即使它是组的成员,apache也不能写入文件夹? 【发布时间】:2014-06-09 01:18:09 【问题描述】:我正在使用 CentOS。
我有一个目录,例如:
drwxrwsr-x 2 someuser deploy 4096 Apr 23 23:29 logs
Apache 是部署组的成员:
deploy:x:509:dev,apache
我相信我确信运行 apache 的用户实际上是“apache”:
$ ps aux | egrep '(apache|httpd)'
apache 26573 0.0 2.6 429516 13176 ? S 22:54 0:00 php-fpm: pool www
所以如果组有写权限,组是deploy
,而apache用户是这个组的一部分,为什么不能写到那个文件夹呢?如果我将组更改为apache
,那么apache可以写,但我不明白为什么需要这样做。
【问题讨论】:
这是一台 CentOS 机器 - SELinux 正在运行吗?如果是这样,您需要在该目录上设置正确的 httpd 读/写上下文。/usr/sbin/getenforce
查看 SELinux 是否处于活动状态...
$ /usr/sbin/getenforce
返回已禁用
加入deploy
组后是否重启了apache? (我不认为需要重新启动)除了“权限被拒绝”之外,Apache 错误日志是否提供了任何详细信息?
这让我走上了正确的道路。我实际上已经重新启动了 apache 服务。当我检查 apache 日志时,它们是空的。事实证明,nginx 正在此服务器上处理请求,而 PHP 正在通过 php-fpm 服务运行。由于 php-fpm 已经设置为作为 apache 运行,并且我已经将 apache 作为部署组的成员,因此只需要重新启动 php-fpm 服务。感谢您帮我解决这个问题!
【参考方案1】:
添加到部署组后是否重新启动了apache? (我不会 预计需要重新启动)Apache 错误日志是否为您提供 除了“权限被拒绝”之外的任何细节? ——迈克尔·伯科夫斯基
这让我走上了正确的道路。事实上,我已经重新启动了 apache 服务。但是,当我按照迈克尔的建议检查 apache 日志时,它们是空的。经过进一步探索,发现 nginx 正在处理此服务器上的请求,而 PHP 正在通过 php-fpm 服务运行。由于 php-fpm 已经设置为以 apache 用户身份运行,并且我已经将 apache 添加为部署组的成员,因此只需要重新启动 php-fpm 服务。谢谢你帮我解决这个迈克尔。
【讨论】:
感谢 php-fpm 的提示。这正是我的情况。一个多小时试图弄清楚这一点.. 这里也一样,感谢 Google 找到这个问题/答案。我从来没有想过要重启 php-fpm 服务。以上是关于为啥即使它是组的成员,apache也不能写入文件夹?的主要内容,如果未能解决你的问题,请参考以下文章
为啥即使对于“写入时复制”的 const 成员函数也返回代理类?