Fedora 15 PHP exec() 不起作用

Fedora 15 PHP exec() 不起作用

我无法通过 PHP exec() 函数运行可执行文件。

操作系统:Fedora 15

PHP 安全模式关闭

PHP代码为:

$exe = "/tmp/defne/./CwCssUGxhjAc";
$result = system( $exe, $retval );

chmod 777/tmp/defne/tmp/defne/CwCssUGxhjAc

我可以通过以下方式在命令行运行它:

sudo -u apache /tmp/defne/CwCssUGxhjAc

当我通过 PHP 脚本调用 whoami 时,PHP 给出了 apache。

我可以通过 PHP 运行其他可执行文件,例如 gcc、whoami 等。但我无法运行 C/C++ 编译的二进制文件。

Apache 错误日志中显示:

sh: /tmp/defne/./CwCssUGxhjAc permission denied

Selinux 已启用。

附言:我不要想要禁用 selinux。如果您建议禁用 selinux,感谢您的巧妙想法。我也可以同样禁用我的电脑的电源插头。

答案1

SELinux 几乎肯定阻止了 Apache 执行 中的操作/tmp。您可以通过检查 来验证这一点/var/log/audit/audit.log

简单的解决方案是将二进制文件移动到可执行文件的标准位置;/usr/local/bin这可能是最合适的。

或者,你可以将适当的文件上下文 ( bin_t) 应用到二进制文件:

sudo semanage fcontext -a -t bin_t /tmp/defne/CwCssUGxhjAc
sudo restorecon -v /tmp/defne/CwCssUGxhjAc

相关内容