2013-05-16 74 views
1

運行的Apache和我的Web服務器無法看到任何文件,除非root用戶創建或將它們複製。我的Apache如何才能訪問根文件?在CentOS 6.4

ps aux | grep apache表示apache的運行作爲apache的用戶,而不是根。 我試過chown apache:apache這個文件。 我甚至在文件上設置了chmod 777

-rwxrwxrwx. 1 apache apache 2300 May 15 17:46 example.php 

我仍然收到http 500錯誤,還有什麼可能是錯誤的?

也就算我chown將此文件根:根,它不會工作,我需要真正cp file.php file.php爲根之前它會工作。我不明白!

chcon -t httpd_sys_content_t example.php讓我有! - 謝謝克里斯。 這是否意味着我需要改變我的FTP用戶的安全上下文設置,以便他們可以上傳文件,這樣還是我需要改變SELinux的一個規則,以允許更大範圍的文件來執行?

+0

對於不工作的文件,我得到「unconfined_u:object_r:user_home_t:s0」,對於有效的文件,我得到「unconfined_u:object_r:httpd_sys_content_t:s0」。禁用SELinux確實允許正確訪問文件 – mageApprentice

回答

1

的SELinux這裏可能是一問題。

請不要ls -lZ example.php

要排除的SELinux,您可以:

getenforce 

然後

setenforce 0 

,然後再試一次訪問這個文件......

這將暫時放SELinux處於寬容模式。 您可能需要更改文件的上下文!讓我們知道它是如何去的,我們會從那裏拿走它。

更新:

正如預期的那樣,SELinux的是訪問該文件停止Apache。如果你信任這個文件,你可以改變它的背景:

chcon -v --type=httpd_sys_content_t example.php 

如果有一個以上的文件,你可以使用-R標誌,所以:

chcon -vR --type=httpd_sys_content_t /html/ 

正如你已經注意到了,與ls你有-Z標誌顯示SELlinux上下文。例如,您可以嘗試使用此標誌與其他程序,如ps

要解決SELinux問題,我推薦sealert - setroubleshoot-server的一部分。

我怎麼知道你最有可能使用SELinux?你的文件系統被標記。 我怎麼知道你的fs被貼上了標籤? -rwxrwxrwx**.** - 權限結束處的點表示fs已標記。

不要忘記更改權限!你真的不想要777 ... 希望有所幫助。

+0

對於不工作的文件,我得到「unconfined_u:object_r:user_home_t:s0」,對於有效的文件,得到「unconfined_u:object_r:httpd_sys_content_t:s0」。禁用SELinux確實允許正確訪問文件 – mageApprentice

+0

好吧,我現在正在讀SELinux中更多關於安全上下文的文章 – mageApprentice

+0

非常感謝Chris,你爲我節省了一大筆頭痛。根據你的建議我會開始研究sealert。 – mageApprentice

-2

如果已經啓用suphp然後用777級權限的文件將無法正常工作,並給予500錯誤,更改權限644

同時檢查錯誤日誌以相同的,如果你仍然面臨着同樣的問題。

爲什麼你想「CP file.php file.php」具有相同的名稱,複製使用其他名稱如下或複製到file.php不存在另一個位置。

CP file.php file.php李明博

CP file.php另一-DIR/file.php

+0

我不確定suphp是什麼,但我認爲我沒有啓用它?我只是觀察到,以root用戶身份複製文件使它們正常工作。還有644權限不起作用 – mageApprentice