我尝试在 centos 8 上设置 apache。服务正在运行。当我使用 wget 测试时,我得到 403
$ wget 127.0.0.1:9000
--2020-02-21 11:27:42-- http://127.0.0.1:9000/
Connecting to 127.0.0.1:9000... connected.
HTTP request sent, awaiting response... 403 Forbidden
2020-02-21 11:27:42 ERROR 403: Forbidden.
我将所有者更改/var/www/html/
为apache
用户组,但没有帮助。
$ ls -laZ /var/www/html
total 8
drwxr-xr-x. 2 apache root system_u:object_r:httpd_sys_content_t:s0 4096 Dec 23 20:47 .
drwxr-xr-x. 4 root root system_u:object_r:httpd_sys_content_t:s0 4096 Feb 21 10:27 ..
当我运行自动报告时,我看到了这一点
$ sudo aureport -a codingsafari@213
AVC Report
===============================================================
# date time comm subj syscall class permission obj result event
===============================================================
1. 02/16/2020 20:52:51 ? (null) 0 (null) (null) (null) unset 745
2. 02/16/2020 22:35:35 ? (null) 0 (null) (null) (null) unset 1391
3. 02/21/2020 10:29:41 httpd system_u:system_r:httpd_t:s0 49 tcp_socket name_bind system_u:object_r:websm_port_t:s0 denied 1144
4. 02/21/2020 10:29:41 httpd system_u:system_r:httpd_t:s0 49 tcp_socket name_bind system_u:object_r:websm_port_t:s0 denied 1145
此时我不知道该怎么做。看来我应该允许name_bind
。我不需要为 tomcat 执行此操作。我还希望/var/www
apache 可以毫无问题地访问。
我这里遗漏了什么吗?
答案1
很抱歉,但我认为您的问题与您的系统上的实际情况不符。在原始 CentOS 8 上:
[root@tux ~]# semanage port -l | grep websm_port_t
websm_port_t tcp 9090
websm_port_t udp 9090
[root@tux ~]#
端口 9090 被标记为,websm_port_t
而您在问题中指的是 9000。您真正要找的是哪个端口?默认情况下,端口 9000 将被标记为供 Apache 使用(因此您可能需要更正您的 Apache 配置,因为它似乎试图使用端口 9090)。
[root@tux ~]# semanage port -l | grep http_port_t
http_port_t tcp 80, 81, 443, 488, 8008, 8009, 8443, 9000
pegasus_http_port_t tcp 5988
[root@tux ~]#
如果你坚持使用端口 9090,那么SELinux 端口“已在策略中定义,无法删除”这可能会让您感兴趣,因为该端口是websm_port_t
由系统策略分配的。
答案2
这里的事情不对劲。我一开始没注意到。有一件事是 aureport 显示了不相关的日志。
我在端口 9000 上使用 wget,但在报告中我们看到的是 9090。此外,如果 selinux 阻止了 httpd 的端口,我们可以肯定我们不会看到任何 403 甚至初始连接,因为 httpd 甚至不会运行。
那么,如果这份报告毫无用处,我们如何才能获得有关情况的更多信息?为什么不先简单地检查一下 Apache 错误日志呢?
sudo cat /var/log/httpd/error_log | grep /www/html/ | tail 5
就我而言,我看到了这一行:
[Fri Feb 21 19:54:56.715734 2020] [autoindex:error] [pid 803:tid 139796269750016]
[client 127.0.0.1:51032] AH01276: Cannot serve directory /var/www/html/:
No matching DirectoryIndex (index.html) found, and server-generated directory
index forbidden by Options directive
问题在于 Apache Web 服务器的默认页面不在 中
/var/wwww/html/
。事实上,该目录完全是空的。
Apache 对这个目录的权限很好,当我把实际的索引文件放在那里时,我可以毫无问题地获取它。
最后,仍有一个悬而未决的问题:为什么我无法获取可以在浏览器中看到的服务器生成的 HTML 页面,即使网络选项卡也出现 403?
我想使用自己的内容,所以我没有完全深入研究。如果有人需要了解更多信息,我会从这里开始:https://httpd.apache.org/docs/2.4/mod/mod_autoindex.html