Centos

Apache CentOS 7 403 禁止任何人?

  • November 13, 2017

我正在嘗試設置一個可以 FTP 到我的 Linux CentOS 7 伺服器並從我的 Windows 7 系統更新網站文件的情況。此時我可以使用 vsftp (/home/robert) FTP 到我的使用者文件夾,而 Apache 似乎適用於預設網站 (/var/www/html)。我為埠 8080 創建了一個虛擬主機,如果我將它指向 /var/www/8080/public_html 它可以正常工作,但是一旦我將它指向 /home/robert/public_html 它就會返回 403 Forbidden。您無權訪問此伺服器上的 /。apache錯誤日誌顯示

[Wed Mar 18 16:12:27.546621 2015] [core:error]
[pid 21204] (13)Permission denied: [client 192.168.1.66:57090]
AH00035: access to / denied (filesystem path '/home/robert')
because search permissions are missing on a component of the path

apache conf 文件 (/etc/httpd/conf/httpd.conf) 有這個虛擬主機條目

Listen 80
Listen 8080

# Virtual Hosts
<VirtualHost *:8080>
   ServerName 192.168.1.10:8080
#   DocumentRoot /var/www/8080/public_html
   DocumentRoot /home/robert/public_html
</VirtualHost>

/home/robert/public_html/index.html 的權限如下

drwxr-xr-x.   7 root root   66 Mar  9 17:16 home
dr-x---r-x. 15 robert robert 4096 Mar 16 22:51 robert
drwxr-xr-x. 2 robert robert   23 Mar 17 23:28 public_html
-rwxr-xr-x. 1 robert robert 332 Mar 17 23:28 index.html

這似乎是一個權限問題,但我不清楚如何繼續。我需要將 apache 使用者添加到我的 robert 個人組嗎?selinux 在這裡做什麼?任何幫助,將不勝感激。謝謝你。

更新: 好的,在我看來,所有網站都應該位於 /var/www/ 文件夾下。似乎 selinux 想要這樣。那麼我如何遠端 FTP 和訪問(讀/寫)網站文件???假設我希望使用者 robert 通過 FTP 到 /var/www/testweb 並能夠在那裡讀/寫文件。這是怎麼實現的???

**更新:**我查看了發布的答案並執行了以下三個命令

setsebool -P httpd_enable_homedirs on
setsebool -P ftp_home_dir on
restorecon -r -v /home

看起來它做了一些事情,但結果是一樣的。我仍然可以 FTP 到使用者文件夾,但網站沒有顯示…403 錯誤。

**更新:**我也嘗試執行以下命令,但是它在所有文件上都出錯了

我跑的命令

chcon -Rv --type=httpd_t /home/robert/public_html

我收到的錯誤

chcon: failed to change context of ‘index.html’ to ‘unconfined_u:object_r:httpd_t:s0’: Permission denied

我還使用 setenforce 0 關閉了 selinux,但我仍然得到 403。建議表示讚賞……謝謝。

我想我想通了。Apache 正在工作,但最後一個使 ftp 工作同時仍然執行 selinux 的命令是

setsebool -P ftpd_full_access on

一旦我設置了它,那麼 FTP 就可以正常工作了。所以現在我可以從我的 Windows 7 機器上進行 FTP、更新、發布更改我的網站文件,而 Apache 會愉快地傳遞內容。哇…這需要幾天時間才能解決。瘋狂的。我設置另一個使用者只是為了測試,一切正常。

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