Apache Web 服务器 - Selinux,目录权限

Apache Web 服务器 - Selinux,目录权限

我尝试在 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/wwwapache 可以毫无问题地访问。

我这里遗漏了什么吗?

答案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

相关内容