嗨,我正在使用 PHP 脚本中的 shell_exec 命令:
$output = shell_exec('ls -l');
print_r($output);
终端:php test.php
这会按预期生成目录列表。
切换到我的浏览器我没有输出。
我需要向用户“apache”授予权限,以便它可以执行某些命令,或者将用户添加到具有此类权限的组中。我知道如何将用户添加到组等,我只是想知道向 apache 用户授予此类权限的最佳实践方法是什么。
嗨,我正在使用 PHP 脚本中的 shell_exec 命令:
$output = shell_exec('ls -l');
print_r($output);
终端:php test.php
这会按预期生成目录列表。
切换到我的浏览器我没有输出。
我需要向用户“apache”授予权限,以便它可以执行某些命令,或者将用户添加到具有此类权限的组中。我知道如何将用户添加到组等,我只是想知道向 apache 用户授予此类权限的最佳实践方法是什么。
这花了我一段时间才弄清楚,所以它可能对其他人有益。
问题是我试图在 /etc/sudoers 中授予 apache 用户权限,而 SELinux(非常正确地)拒绝了他们。
所以我很快为 httpd 禁用了 SELinux,一切正常。
尽管对于公共 Web 服务器来说,这远非理想情况。
至于最佳实践,应该使用 audit2allow 来设置许可操作。
如果您在所需目录中执行 ls -Z,您将看到该目录的 SELinux 权限。
要允许 httpd/apache 守护进程访问该目录,您可以执行(-R 选项用于使其递归):
chcon -Rv --type=httpd_sys_content_t /desired/path
希望能帮助到你。