2010-10-20 126 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 

希望它能帮助。