Apache-2.2

Apache 權限被拒絕

  • January 30, 2017

我正在嘗試使用 CentOS 6 和 Apache 啟動網路伺服器。網站文件託管在 Windows 文件共享中。這是fstab文件中用於掛載 Web 文件的行: \\192.168.1.10\apache /var/www/html cifs credentials=/root/secret.txt,uid=apache,gid=apache 0 0. 這似乎工作正常。

這是 vhost.conf 文件:

Listen 80
<VirtualHost *:80>
   ServerAdmin webmaster@domain.com
   ServerName sub.domain.com
   DocumentRoot "/var/www/html/domain.com/sub/public_html"
   #ErrorLog /var/www/html/domain.com/sub/logs/error.log
   #CustomLog /var/www/html/domain.com/sub/logs/access.log combined
</VirtualHost>

我執行了命令ls -l /var/www/html/domain.com/sub/public_html,這是輸出:

total 1
-rwxr-xr-x. 0 apache apache  0 Jan 26 20:43 index2.txt
-rwxr-xr-x. 0 apache apache 45 Jan 26 19:33 index.html

命令ls -l /var/www/html/domain.com/sub輸出為:

total 0
drwxr-xr-x. 0 apache apache 0 Jan 26 20:00 logs
drwxr-xr-x. 0 apache apache 0 Jan 26 20:43 public_html

當我訪問http://sub.domain.com時,我會看到通用的 Apache 螢幕。一時興起,我去了網址http://sub.domain.com/index.html>;並且瀏覽器說我無權訪問該頁面-對於<http://sub.domain.com/index2.txt>也是如此。對於網址<http://sub.domain.com/index2.html,瀏覽器表示該文件不存在。這告訴我我的“手指”都指向正確的方向。 知道我的問題可能是什麼嗎?

文件中的日誌行vhost.conf被註釋掉,因為httpd不會重新啟動。我認為這是同樣的問題。

既然Apache設置本身沒有明顯問題,那肯定是作業系統設置的權限有問題。

Apache 要求 apache 使用者也可以訪問父目錄。

由於 CentOS 帶有 SELinux,這也可能是問題所在。也許您沒有對 SELinux 進行主動權限設置,但 Linux 本身俱有用於遠端掛載的預設 SELinux 設置。

您可以使用ls -Z.

這是 askubuntu 中一個有趣的 OP:https ://askubuntu.com/questions/451922/apache-access-denied-because-search-permissions-are-missing

我們可以在您的問題中看到您正在執行 SELinux,並試圖讓 Apache 從 CIFS 共享中讀取 Web 內容。預設情況下,SELinux 不允許這樣做,但您可以通過設置適當的布爾值來啟用它。

setsebool -P httpd_use_cifs 1

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