httpd 服务器未启动:(13)权限被拒绝:make_sock:无法绑定到地址 [::]:88

问题描述 投票:0回答:16

我正在尝试在 centos 6 上启动 httpd 服务器。它抛出以下错误:

[root@machine ~]# service httpd start
Starting httpd: (13)Permission denied: make_sock: could not bind to address [::]:88
(13)Permission denied: make_sock: could not bind to address 0.0.0.0:88
no listening sockets available, shutting down
Unable to open logs
                                                           [FAILED]

我还检查了端口88,它没有被使用。 我也检查了semanage,但没有帮助。

任何帮助将不胜感激。

apache centos
16个回答
135
投票

我碰巧遇到了这个问题,因为缺少 SELinux 权限。默认情况下,SELinux 只允许 apache/httpd 绑定到以下端口:

80, 81, 443, 488, 8008, 8009, 8443, 9000

因此,使用默认 SELinux 配置,绑定到我的

httpd.conf
配置的
Listen 88
HTTP 端口和
config.d/ssl.conf
配置的
Listen 8445
TLS/SSL 端口将会失败。

为了解决我的问题,我必须将端口 88 和 8445 添加到系统的 SELinux 配置中:

  1. 安装
    semanage
    工具:
    sudo yum -y install policycoreutils-python
  2. 允许 httpd 使用端口 88:
    sudo semanage port -a -t http_port_t -p tcp 88
  3. 允许 httpd 使用端口 8445:
    sudo semanage port -a -t http_port_t -p tcp 8445

56
投票

似乎您不是以“root”身份运行它。只有 root 可以绑定到此端口 (80)。 检查conf/httpd.conf 文件中的配置,Listen 行并将端口更改为更高的端口。


20
投票

这是对 Abdull 在此线程中某处的答案的补充:

我必须修改而不是添加端口

semanage port -m -t http_port_t -p tcp  5000

因为我在添加端口时遇到此错误

ValueError: Port tcp/5000 already defined


8
投票

在终端以 root 权限运行此命令:

sudo /etc/init.d/apache2 start

您必须是 root 才能启动网络服务器,否则您会收到类似的错误。


7
投票

在安装 centos 6.7 时,我不仅在使用 root 启动 httpd 时遇到问题,而且在使用 xauth 时也遇到问题(出现

/usr/bin/xauth: timeout in locking authority file /.Xauthority
并出现底层权限被拒绝错误)

# setenforce 0

解决了这两个问题。


6
投票

禁用SELinux

暂时禁用 SELinux

sudo setenforce 0

重启httpd服务

service httpd restart

永久禁用 SELinux(重新启动后)

vi /etc/selinux/config

添加行并保存

SELINUX=disabled

3
投票

就我而言,我尝试首先使用端口 88,即使如此,httpd 也不会启动。

我使用了以下命令,即按照一位用户的建议进行修改而不是添加,并且能够运行 httpd。

semanage port -a -t http_port_t -p tcp 88

1
投票

禁用SELINUX后,任何端口都可用。

sudo -s;  
setenforce 0;  
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config;  


0
投票

在 Linux(Centos 6 或更高版本)中,从 0 到 1024 的端口保留供系统使用。 如果您使用 root 或特权用户,您可以强制系统绑定到任何低于 1024 的端口。

我使用非 root 用户从源代码安装了 Apache-2.4,并通过允许高于 1024(例如:8080)的端口并修改了 http.conf 文件解决了这个问题。畅听80改为听8080


0
投票

我在 RHEL 7.5 中尝试启动 httpd 服务以进行 openstack train 安装时也遇到了类似的错误。

-- Unit httpd.service has begun starting up.
Jan 31 10:11:16 controller httpd[1631]: (13)Permission denied: AH00072: make_sock: could not bind to address 10.0.0.11:5000
Jan 31 10:11:16 controller httpd[1631]: no listening sockets available, shutting down
Jan 31 10:11:16 controller httpd[1631]: AH00015: Unable to open logs
Jan 31 10:11:16 controller systemd[1]: httpd.service: main process exited, code=exited, status=1/FAILURE
Jan 31 10:11:16 controller kill[1632]: kill: cannot find process ""
Jan 31 10:11:16 controller systemd[1]: httpd.service: control process exited, code=exited status=1
Jan 31 10:11:16 controller systemd[1]: Failed to start The Apache HTTP Server.
-- Subject: Unit httpd.service has failed

解决方案:通过禁用SElinux解决。


0
投票

我编辑了

/etc/selinux/config
,设置了
SELINUX=disabled
,然后重启;然后它起作用了。 或者,您可以运行
setenforce 0
;您不需要重新启动,但这是一次使用过的。


0
投票

只是为了添加有关此错误的更多信息,我在 CentOS 8.2 上遇到了类似的错误:

sudo journalctl -xe

错误: 权限被拒绝:AH00072:make_sock:无法绑定到地址0.0.0.0:8081

因此,我使用了 Abdull 和 Ulrich-Lorenz Schlüter 的命令,如下所示:

  1. 安装CentOS 8.2的semanage工具:

    sudo yum -y install policycoreutils-python-utils
    (更多信息:https://www.cyberciti.biz/faq/redhat-install-semanage-selinux-command-rpm

  2. 允许 httpd 使用端口 8081:

    sudo semanage port -a -t http_port_t -p tcp 8081

我得到以下输出:ValueError:端口 tcp/8081 已定义

所以,我跑了:

sudo semanage port -m -t http_port_t -p tcp 8081

正如 Ulrich-Lorenz Schlüter 提到的。

  1. 然后:
    sudo systemctl start httpd

现在一切正常。


0
投票

这里实际的解决方案是修改现有端口(如果存在)。例如,当:

semanage port -a -t http_port_t -p tcp 88

最后是:

ValueError: Port tcp/88 already defined

那么端口很可能有不同的类型,要修改它,只需使用:

semanage port -m -t http_port_t -p tcp 88

然后,如果您所在的区域已关闭该端口,则需要通过

firewall-cmd
打开该端口。

另外:禁用 SELinux 是一个潜在的安全漏洞,请勿在生产实例上执行此操作!


0
投票
  1. 检查安全状态

    获得力量

  2. 检查防火墙状态

    firewall-cmd --zone=public --list-all

  3. 检查执行权限

    转到httpd/bin

    #chown root:[您的帐户] ./httpd #chmod +s ./httpd


-1
投票

从 root 用户或 sudo 启动,它工作正常,这里是示例输出:

[ec2-user@ip-172-31-12-164 ~]$ service httpd start
Starting httpd: (13)Permission denied: make_sock: could not bind to address [::]:80
(13)Permission denied: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
                                                           **[FAILED]**
[ec2-user@ip-172-31-12-164 ~]$ sudo service httpd start
Starting httpd:                                            [  OK  ]
[ec2-user@ip-172-31-12-164 ~]$ sudo service httpd status
httpd (pid  3077) is running...

-5
投票

首先杀死所有挂起的httpd实例,然后尝试重新启动Apache:

service httpd restart
© www.soinside.com 2019 - 2024. All rights reserved.