这两天在折腾欧拉系统,在修改httpd的默认端口时,报错如下:
Sep 27 16:55:13 localhost httpd[9604]: (13)Permission denied: AH00072: make_sock: could not bind to address [::]:900
Sep 27 16:55:13 localhost httpd[9604]: (13)Permission denied: AH00072: make_sock: could not bind to address 0.0.0.0:900
Sep 27 16:55:13 localhost httpd[9604]: no listening sockets available, shutting down
Sep 27 16:55:13 localhost httpd[9604]: AH00015: Unable to open logs
Sep 27 16:55:13 localhost systemd[1]: httpd.service: Main process exited, code=exited, status=1/FAILURE
Sep 27 16:55:13 localhost systemd[1]: httpd.service: Failed with result 'exit-code'.
Sep 27 16:55:13 localhost systemd[1]: Failed to start The Apache HTTP Server.
Sep 27 16:55:14 localhost setroubleshoot[2584]: SELinux is preventing ftdc from search access on the directory nfs. For complete SELinux messages run: sealert -l 12fdc6cf-85e2-4d8e-8744-018f53c03778
提示无权限,结合后面的SELinux日志,猜测可能和SELinux有关。为了快速验证猜测是否正确,我选择直接关闭SELinux服务。
关闭 SELinux 可以通过以下2种方法完成,分为临时关闭和永久关闭。
1. 临时关闭 SELinux
这种方式在系统重启后就没了,因此不建议。
步骤:
先确认当前的 SELinux 状态,运行以下命令:
getenforce
输出将是 Permissive
或 Enforcing
。
如果为Enforcing,那就
使用以下命令来临时将 SELinux 设置为 Permissive
模式(即不强制执行安全策略,但仍会记录警告):
setenforce 0
可再次运行getenforce命令
确认当前的 SELinux 状态是否修改成功。
2. 永久关闭 SELinux
这种方式会在系统重启后仍然保持 SELinux 关闭。
步骤:
同前面一样,我们先确认当前的 SELinux 状态,运行以下命令:
getenforce
如果输出是 Enforcing,
则编辑 /etc/selinux/config
文件,找到如下行:
SELINUX=enforcing
将其修改为:
SELINUX=disabled
保存并退出编辑器,然后重启系统以便更改生效。
在重启后,可运行以下命令以确认 SELinux 已被关闭:
sestatus
输出如类似:
SELinux status: disabled
则说明修改已生效。
这时候,我们再去重启下httpd,发现问题解决了,印证了前面的猜测。
当然,SELinux也可以配置端口规则,有兴趣的同学可以自己研究下。