2010-10-20 134 views
3

你好我使用PHP腳本中的命令了shell_exec:Apache用戶權限

$output = shell_exec('ls -l'); 
print_r($output); 

終端:PHP test.php的

預期導致目錄列表。

切換到我的瀏覽器我得不到輸出。

我需要授予用戶'apache'的特權,以便它可以執行某些命令,或將用戶添加到具有這些特權的組中。我知道如何將用戶添加到組等,我只是想知道什麼最佳實踐方法是授予這種權限的Apache用戶。

回答

0

這花了我一段時間才弄清楚,所以可能對其他人有好處。

問題是我試圖在/ etc/sudoers中給apache用戶權限,而SELinux是(正確地)否認它們。

所以我很快禁用了SELinux for httpd,並且所有工作都正常。

這對於公共Web服務器來說遠非理想情況。

至於最佳實踐,應使用audit2allow來設置許可操作。

0

如果您在所需的目錄中執行ls -Z,您將看到該目錄的SELinux權限。

允許在httpd/apache的守護進程來訪問你可以執行該目錄(-R選項是讓遞歸):

chcon -Rv --type=httpd_sys_content_t /desired/path 

希望它能幫助。