Apache 權限被拒絕
我正在嘗試使用 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