Apache CentOS 7 403 禁止任何人?
我正在嘗試設置一個可以 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 會愉快地傳遞內容。哇…這需要幾天時間才能解決。瘋狂的。我設置另一個使用者只是為了測試,一切正常。