2009-08-04 55 views
38

我的朋友的網站工作正常,直到他將文檔根從/var/www/xxx移動到/home/user/xxx在用戶的主目錄中拒絕Apache 13權限

當我們嘗試通過網絡瀏覽器訪問網站時,Apache給出了13個權限被拒絕的錯誤消息。

該站點被配置爲虛擬目錄。所有的Apache配置都沒有變化(目錄更改除外)

我們嘗試了chmod 777 /home/user/xxx,chown apache/home/user/xxx。但他們沒有工作。

在用戶的主目錄中是否設置了某種安全功能?服務器操作系統是CentOS(Godaddy VPS)。

任何幫助表示讚賞!

謝謝!

+3

應該去serverfault。 – 2009-08-04 03:21:58

+0

直到你提到它才知道= =)我想我會試試看。爲什麼他們保留兩個(也許更多?)網站呢?集中這些類別不是更好嗎? – Dave 2009-08-04 03:50:02

+0

@Dave:stackoverflow.com用於編程問題; serverfault.com用於sysadmin/server問題; superuser.com是針對一般「高級用戶」和其他與計算機有關的其他問題。我想,幫助人們專注於他們的專業領域。 – Josh 2009-08-04 13:47:52

回答

84

原來......除xxx之外,我們還必須chmod 755父目錄user。

-2

你是否更改了單個文件的權限以及目錄?

chmod -R 777 /home/user/xxx 
+2

你永遠不應該對可公開訪問的文件執行chmod 777 – 6bytes 2014-02-11 22:08:23

3

Apache的錯誤日誌將解釋您爲什麼拒絕權限。此外,serverfault.com是這樣一個問題的更好的論壇。

如果錯誤日誌只是簡單地說「權限被拒絕」,su讓用戶運行web服務器並嘗試從相關文件中讀取。舉例來說:

sudo -s 
su - nobody 
cd/
cd /home 
cd user 
cd xxx 
cat index.html 

看看其中一個是否會給你「權限被拒絕」的錯誤。

+0

是的,我們查看了錯誤日誌。它只有(13)許可被拒絕。 是否有一些參數可以設置爲啓用更多調試輸出? – Dave 2009-08-04 03:51:35

2

可能是SELinux。檢查相應的日誌文件(/ var/log/messages? - 我已經使用RedHat衍生產品一段時間了)來查看是否阻止了訪問。

+0

感謝您的幫助。我試圖查看/ var/log/messages;有一大堆:消息,messages.1.gz,messages.2.gz,...直到messages.14.gz。/var/log/messages是空的;所以是我解壓縮後的其他人... – Dave 2009-08-04 04:35:26

3

你不能在httpd.conf中設置Loglevel進行調試嗎? (我用FreeBSD)

EE USR /本地/ etc/apache22/httpd.conf中

變化記錄等級:

「的LogLevel:控制記錄在error_log中的消息的數量。 可能的值包括:debug,info,notice,warn,error,crit, alert,emerg。'

嘗試更改爲調試並在此之後重新檢查錯誤日誌。

+0

謝謝,現在的錯誤日誌是:(13)權限被拒絕:/home/user/.htaccess pcfg_openfile:無法檢查htaccess文件,確保它是可讀的 – Dave 2009-08-05 20:01:11

6

不知道,如果你已經固定,但在你的httpd.conf

請查看您的用戶/組設置。通常它會被設置爲

用戶WWW 集團WWW

如果是將其更改爲使用的CentOS 5.5姓名/組

用戶格雷格 組人員

37

IM,對我來說是SElinux搞亂了,我忘了檢查一下。 你可以通過做作爲根臨時禁用它

echo 0 > /selinux/enforce 

希望它能幫助別人

11

SELinux的原因是該問題.....

TException:錯誤:TSocket:無法連接到localhost:9160(Permission denied [13]) 要解決這個問題,你需要改變一個SELinux布爾值(它會在重新啓動時自動存在)。您可能還想重新啓動httpd以重置代理工作器,但這不是嚴格要求。

setsebool -P httpd_can_network_connect 1

(13)拒絕權限

錯誤13表示一個文件系統權限問題。也就是說,由於權限不正確,Apache被拒絕訪問文件或目錄。通常,這並不意味着Apache配置文件存在問題。

爲了提供文件,Apache必須具有操作系統授予的適當權限來訪問這些文件。特別是,httpd.conf中指定的用戶或組必須能夠讀取將要提供的所有文件,並搜索包含這些文件的目錄以及直至文件系統根目錄的所有父目錄。

對於不屬於在httpd.conf中指定的用戶或組的資源,類Unix系統的典型權限爲普通文件爲644 -rw-r-r--目錄或CGI爲755 drwxr-xrx腳本。您可能還需要在支持它們的操作系統上檢查擴展權限(例如SELinux權限)。

一個例子

比方說,你訪問一個類Unix系統上的文件/usr/local/apache2/htdocs/foo/bar.html時收到Permission denied錯誤。

首先檢查該文件上的現有權限:

CD的/ usr /本地/ Apache2的/ htdocs中/富 ls -l命令bar.htm

如果有必要解決這些問題:

搭配chmod 644 bar.html

然後對目錄和每個父目錄(/ usr/local/apache2/htdocs/foo,/ usr/local/apache2/htdocs,/ usr/local/apache2,/ usr/local ,/ usr):

ls -la chmod + x。 cd ..

重複直到根

在某些系統上,該實用程序那枚可以用來幫助通過列出的權限,沿路徑的每個組件找到權限問題:

對蝦-m在/ usr /本地/apache2/htdocs/foo/bar.html

如果所有標準權限都正確,並且仍然收到權限被拒絕錯誤,則應檢查擴展權限。例如,您可以使用setenforce 0命令關閉SELinux並檢查問題是否消失。如果是這樣,ls -alZ可以用來查看SELinux權限和chcon來修復它們。

在極少數情況下,這可能是由其他問題引起的,例如apache2.conf文件中其他位置的文件權限問題。例如,WSGIScriptAlias指令不映射到實際文件。錯誤消息可能不準確,哪些文件不可讀。

即使「只是測試服務器」,也不要將文件或目錄設置爲模式777,即使是「僅測試」。測試服務器的目的是在安全的環境中正確地做事,而不是爲了避免做錯事。它會告訴你的是如果問題出在實際存在的文件上。

0

錯誤:

 
[error] [client 127.0.0.1] (13)Permission denied: Could not open password file: /home/XXX/svn/svn_password 

信息:

 
##SELinux Security Context File Labels 
#httpd_sys_content_t The type used by regular static web pages with .html and .htm extensions. 
#httpd_sys_script_ro_t Required for CGI scripts to read files and directories. 
#httpd_sys_script_ra_t Same as the httpd_sys_script_ro_t type but also allows appending data to files by the CGI script. 
#httpd_sys_script_rw_t Files with this type may be changed by a CGI script in any way, including deletion. 
#httpd_sys_script_exec_t The type required for the execution of CGI scripts 

解決方案:

 
[[email protected]]# perror 13 
OS error code 13: Permission denied 
[[email protected]]# chown apache.apache /home/XXX/svn/ -R 
[[email protected]]# semanage fcontext -a -t httpd_sys_script_rw_t "/home/XXX/svn(/.*)?" 
[[email protected]]# restorecon -R -v /home/XXX/svn/ 
[[email protected]]# restorecon reset /home/XXX/svn/ context 
[[email protected]]# ls -dZ /home/XXX/svn/ 
drwxr-xr-x. apache apache system_u:object_r:httpd_sys_rw_content_t:s0 /home/XXX/svn/ 
[[email protected]]# ls -dZ /home/XXX/svn/svn_password 
-rwxr-xr-x. apache apache system_u:object_r:httpd_sys_rw_content_t:s0 /home/XXX/svn/svn_password 
[[email protected]]# 

相關問題