Centos

Apache Webserver - Selinux,目錄權限

  • February 22, 2020

我試圖在 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 可以毫無問題地訪問它。

我在這裡錯過了什麼嗎?

事情不在這裡加起來。起初我沒有註意到。一件事是 aureport 顯示不相關的日誌。

我在埠 9000 上獲取,但在報告中我們看到 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/. 實際上這個目錄是完全空的。

Apaches 對該目錄的權限很好,當我在那裡放置一個實際的索引文件時,我可以毫無問題地獲取它。


最後,還有一個懸而未決的問題:為什麼即使網路選項卡也給出了 403,我也無法獲取我可以在瀏覽器中看到的伺服器生成的 HTML 頁面?

我想使用我自己的內容,所以我並沒有完全把那隻兔子全下去。如果有人需要了解更多資訊,我會從這裡開始:https ://httpd.apache.org/docs/2.4/mod/mod_autoindex.html

很抱歉,但我認為您的問題與您系統上的實際情況不符。在香草 CentOS 8 上:

[root@tux ~]# semanage port -l | grep websm_port_t
websm_port_t                   tcp      9090
websm_port_t                   udp      9090
[root@tux ~]# 

websm_port_t當您在問題中引用 9000 時,埠 9090 被標記為。您真正在尋找哪個埠?預設情況下,埠 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由系統策略分配的。

引用自:https://serverfault.com/questions/1004048