为啥即使它是组的成员,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 成员函数也返回代理类?

是组的当前用户成员

为啥即使从类内部获取成员函数指针值也需要类名限定?

为啥即使在关闭临时文件后我也能够写入和读取它?

为啥我的 React 应用程序不能使用我的 Apache .htaccess 文件来防止 404?

为啥 netCDF4 文件大小与写入方式如此不同?