Apache Webserver - 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/www
apache 可以毫無問題地訪問它。我在這裡錯過了什麼嗎?
事情不在這裡加起來。起初我沒有註意到。一件事是 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
由系統策略分配的。