apache 权限被拒绝:httpd:无法打开错误日志文件/etc/httpd/logs/error_log

uubf1zoe  于 2022-11-25  发布在  Apache
关注(0)|答案(6)|浏览(428)

当我想在centOS 6.7上重新启动httpd搜索时,出现以下错误:

/etc/init.d/httpd restart
Stopping httpd:                                            [FAILED]
Starting httpd: (13)Permission denied: httpd: could not open error log file /etc/httpd/logs/error_log.
Unable to open logs
                                                           [FAILED]

这是错误日志(_L):

ls -Z /etc/httpd/logs/error_log
-rw-r--r--. root root unconfined_u:object_r:var_t:s0   /etc/httpd/logs/error_log

我还禁用了selinux。
有什么问题吗?

0kjbasz6

0kjbasz61#

httpd可能以用户apache或用户httpd的身份运行。您的日志由root拥有且只能由其写入。请更改日志文件的所有权以使其正常工作。
这样就可以了:

~# chown apache:apache /etc/httpd/logs/error_log
ef1yzkbh

ef1yzkbh2#

也许你应该把那个forder的组改成apache,不推荐root作为服务器的所有者。无论如何apache应该在http启动后自己改变这个...
httpd Wiki开始:
在开始之前,我们需要知道Apache HTTP服务器(httpd)是作为特定的用户和组运行的。
在Linux以及大多数其他类Unix系统上,httpd以“root”用户身份启动; UID=root,GID=root。这是必需的,因为只有该用户可以绑定到端口80和443(实际上是1024以下的任何端口)。
在http启动并绑定到其端口(由httpd.conf中的Listen语句定义)后,它会将user更改为httpd. conf中指定的用户。通常:
用户:apache
组:Apache
请注意,基于Debian的系统,包括Ubuntu,使用“www-data”代替。
作为可能的解决方案,您应该将自己添加到apache组中。

usermod -a -G apache (username)

然后道:

chgrp apache (folderPath)
chmod g+rwxs (folderPath)

不管怎么说,这很奇怪...告诉我这是否解决了你的问题,如果没有,我会编辑它,只要你提供我进一步的信息:)

xjreopfe

xjreopfe3#

在CentOS 7中
尝试禁用SElinux,然后重新启动
systemctl重新启动httpd
注意:永远不要让SElinux处于禁用状态。如果问题得到解决,则启用(强制)它,然后在SElinux中启用httpd
https://www.serverlab.ca/tutorials/linux/web-servers-linux/configuring-selinux-policies-for-apache-web-servers/

hsgswve4

hsgswve44#

如果您使用的是RedHat/Fedora/CentOS/RockyLinux,请尝试执行以下命令(14:00是自错误发生以来的时间):

journalctl -t setroubleshoot --since=14:00

您可能会看到以下错误:

Jun 25 14:21:33 fedora setroubleshoot[1609]: SELinux is preventing httpd from open access on the file /var/log/gitea/error_log. For complete SELinux messages run: sealert -l 5e2bf467-e935-4fa7-a7fd-d0f7f257828e
Jun 25 14:21:33 fedora setroubleshoot[1609]: SELinux is preventing httpd from open access on the file /var/log/gitea/error_log.

                                             *****  Plugin catchall (100. confidence) suggests   **************************

                                             If you believe that httpd should be allowed open access on the error_log file by default.
                                             Then you should report this as a bug.
                                             You can generate a local policy module to allow this access.
                                             Do
                                             allow this access for now by executing:
                                             # ausearch -c 'httpd' --raw | audit2allow -M my-httpd
                                             # semodule -X 300 -i my-httpd.pp

这意味着缺少权限与chmod无关,而是与SELinux有关。
要解决此问题,您需要执行以下命令(请相应地调整日志目录):

semanage fcontext -a -t httpd_sys_rw_content_t '/var/log/gitea(/.*)?'
restorecon -Rv '/var/log/gitea/'
systemctl restart httpd

错误应该会消失。而且请永远不要永久关闭SELinux(正如有人可能建议的那样),因为您的服务器可能会受到损害。

zmeyuzjn

zmeyuzjn5#

在我的情况下,我已经做了下面的行动后,能够启动httpd服务没有任何错误。
错误:

# sudo tail -f /etc/httpd/logs/error_log
Sep 27 09:09:19 MASTERREPOWEB systemd[1]: Starting The Apache HTTP Server...
Sep 27 09:09:20 MASTERREPOWEB httpd[33693]: (13)Permission denied: AH00091: httpd: could not open error log file /etc/httpd/logs/error_log.
Sep 27 09:09:20 MASTERREPOWEB httpd[33693]: AH00015: Unable to open logs
Sep 27 09:09:20 MASTERREPOWEB systemd[1]: httpd.service: Main process exited, code=exited, status=1/FAILURE

解决方法:

ls -lZ /etc/httpd/logs/error_log
sudo chcon -Rv system_u:object_r:httpd_log_t:s0 /etc/httpd/logs/
sudo systemctl restart httpd
sudo systemctl status httpd
s6fujrry

s6fujrry6#

只需以超级用户身份运行即可:

service httpd start

正在启动httpd:(13)权限被拒绝:httpd:无法打开错误日志文件/etc/httpd/logs/error_log。
无法打开日志[失败]

sudo service httpd start

正在启动httpd:[确定]

相关问题