gpt4 book ai didi

php - 检测是否有人安装了 selinux/启用了 httpd_can_network_connect

转载 作者:IT王子 更新时间:2023-10-29 01:13:19 24 4
gpt4 key购买 nike

当安装 SELinux 时,有一个设置 - httpd_can_network_connect - 通常会阻止 PHP 的 fsockopen() 在由通过 HTTP 传入的请求实例化时建立出站连接。

我希望能够通过 PHP 查看系统是否启用了 SELinux/httpd_can_network_connect。如果是这样,我会向用户发出警告,说明此设置可能会干扰页面。

我在一台 Ubuntu 机器上安装了 SELinux 并且还安装了 httpd_can_network_connect doesn't even appear to be an option that's available对我来说,SELinux 似乎确实已安装,即使在 phpinfo() 输出中我也没有看到它已安装的任何迹象。

有什么想法吗?

最佳答案

不确定 selinux 与 PHP 的集成。您可以使用 shell 命令。

$getenforce = trim(shell_exec("getenforce"));
if ($getenforce == "Disabled" or $getenforce == "Permissive") {
// good to go
}

尽管 getenforce 可能并不存在于所有 Linux 系统上,因此您可能希望以某种方式测试该功能。以下是可能适用的方法:

exec("getenforce", $getenforce, $return);
if ($return or ($getenforce[0] == "Disabled" or $getenforce[0] == "Permissive")) {
// good to go
}

如果用户无权访问或 getenforce 命令不存在,则返回值应大于 0。

Note: On my system, getenforce is in /usr/sbin, so you may need to specify the full path to getenforce if sbin isn't in the user's include path. There appear to be no restrictions on non-superusers running getenforce from my testing.

关于php - 检测是否有人安装了 selinux/启用了 httpd_can_network_connect,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30271436/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com