2014-01-20 57 views
3

我已經打了一個問題:Apache的權限:無法在CentOS 6.5檢查.htaccess文件,但不適合在/ var/WWW

[週一12月28日12點10分52秒2012] [a] [client 127.0.0.1](13)Permission denied:/srv/www/website/.htaccess pcfg_openfile:無法檢查htaccess文件,確保它可讀

基本上,我正在建立一個全新的服務器,試圖將我的所有網站遷移到/ srv/www文件夾而不是/ var/www,因爲它似乎是未來的標準(有關它的全部討論只是谷歌)。

我所做:

1)加入

2)添加的用戶一個新的組(GROUPADD開發者)一(GID 501),根,apache的,沒有人對上述組 (usermod命令-G develoeprs一個& & usermod命令-G develoeprs阿帕奇& & usermod命令-G develoeprs根& & usermod命令-G develoeprs沒有人)

3)複製所有文件夾&個文件到/ SRV /萬維網

4)改變所有權整個/ SRV /萬維網的到Apache:開發者(CHOWN -R阿帕奇:開發商/ SRV/WWW)

5)改變模式,以便/ SRV /萬維網是組可讀/可寫/可搜索(搭配chmod -R 2775/SRV/WWW)

6)加入 '的umask 002' 來的在/ etc/SYSCONFIG/httpd的末尾,以便它在組可寫模式下運行

7 )加入虛擬主機(S)和以/etc/httpd/conf.d/vhosts.conf(服務的httpd configtest拋出OK)

NameVirtualHost *:80 
NameVirtualHost *:443 

SSLStrictSNIVHostCheck off 

<VirtualHost *:443> 
    ServerAdmin [email protected] 
    DocumentRoot /srv/www/test 
    ServerName test.domain.com 
    ServerAlias test.domain 
    SSLEngine on 
    SSLCertificateFile /etc/httpd/certs/domain.com/server.crt 
    SSLCertificateKeyFile /etc/httpd/certs/domain.com/server.key 
    <Directory /srv/www/test> 
     Options Indexes FollowSymLinks MultiViews 
     AllowOverride All 
     Order allow,deny 
     allow from all 
    </Directory> 
</VirtualHost> 

8)重啓 9)啓動httpd的手動,因爲它要求SSL證書的密碼,否則自動啓動失敗(需要考慮如何在重新啓動後自動啓動)服務器

我仍然得到同樣的上述錯誤信息。

然後,我試圖改變主文件夾在/ etc/passwd中apache的用戶/ SRV/WWW(服務器重新啓動),但仍然沒有喜悅也就是權限被拒絕。我甚至重命名了舊的/ var/www文件夾,並在/ var/www中創建了一個符號鏈接到/ srv/www。另一個嘗試是回到根目錄:root,apache:apache和:developers組。

/SRV /網絡/ [NOT WORKING]

drwxr-XR-X。 2根根(的cgi-bin,錯誤,HTML,圖標)

drwxrwsr-X。 5名Apache的開發人員(所有其他網站文件夾)

-rwxrwsr-X。 1個阿帕奇開發者(所有文件)

/SRV/

drwxrwsr-X。4個apache的開發者的WWW

/無功/網絡[WORKING]

drwxr-XR-X。 2 root root(cgi-bin,error,html,icons)

drwxrwxr-x。 3 apache開發者(所有其他網站文件夾)

-rwxrwxr-x。 1 apache開發人員(所有網站文件)

然後,只要我將我的一個網站文件夾複製到/ var/www並在/etc/httpd/conf.d/vhosts.conf中指向路徑,它就開始工作精細!

是否有人知道爲什麼它不在/ SRV/WWW文件夾中工作?

+0

當我設置apache日誌級別進行調試時,只有在訪問虛擬主機時纔會得到這個:XXXX - - [20/Jan/2014:21:30:40 +0100]「GET/HTTP/1.1」404 - - 「」Mozilla/5.0(Macintosh; Intel Mac OS X 10.8; rv:26.0)Gecko/20100101 Firefox/26.0「 – webcoder

回答

6

我終於到了問題的底部。這是由於SELinux策略覆蓋了基本的傳統自主訪問控制(DAC)方法,例如通常用於控制用戶文件訪問的文件權限或訪問控制列表(ACL)等!

$ sestatus 
SELinux status:     enabled 
SELinuxfs mount:    /selinux 
Current mode:     enforcing 
Mode from config file:   enforcing 
Policy version:     24 
Policy from config file:  targeted 

$ setenforce 
usage: setenforce [ Enforcing | Permissive | 1 | 0 ] 

$ setenforce Permissive 

$ sestatus 
SELinux status:     enabled 
SELinuxfs mount:    /selinux 
Current mode:     permissive 
Mode from config file:   enforcing 
Policy version:     24 
Policy from config file:  targeted 

有關SELinux在Centos的更多信息。只要我切換到Permissive模式my/srv /開始工作。

如果你知道什麼,爲什麼你這樣做,那麼你可以永久在/ etc/SELinux的/ config中通過更改以下行禁用SELinux:

SELINUX=enforcing 

SELINUX=disabled 

重新啓動服務器,你應該永久禁用它。

注:當從禁用切換要麼允許式或強制 模式,強烈建議系統重新引導和 文件系統重新標記。

+0

你今天救了我的命。我能做些什麼來報答你嗎? @webcoder –

+1

這是非常糟糕的建議一般。 SELinux不是你想在Web服務器上禁用_especially_的東西! – Jannes

0

你確定用戶「apache」可以通過文件夾「/ src」嗎? 什麼是擁有者和文件夾「/ src」的權限?

+0

drwxr-xr-x。 2 root root 4096 Jan 20 11:55 srv drwxr-xr-x。 19 root root 4096 Jan 20 10:39 var 雖然網站只能在/ var中使用,但兩者的權限相同。 – webcoder

+0

您可以測試這兩個命令: 'chown -R apache:developers/srv/www' 'chmod -R u = rwX,g = rX,o = rX/srv/www' – Georgio

+0

Forbidden,You do not have訪問/在此服務器上的權限。 此外,嘗試使用ErrorDocument處理請求時遇到404 Not Found錯誤。 我很笨...權限似乎沒有影響到這一點。我也檢查過httpd.conf,沒有什麼具體的東西可以使用/ var /文件夾,這是Apache可以爲其網站服務的唯一一個。這很奇怪。 – webcoder