When SELinux is installed there's a setting - httpd_can_network_connect - that often prevents PHP's fsockopen() from making outbound connections when it was instantiated by a request coming in via HTTP.
I would like to be able to see, via PHP, if a system has SELinux / httpd_can_network_connect enabled. If so I'd present the user with a warning saying that this setting could interfere with the page.
I installed SELinux on an Ubuntu machine and altho httpd_can_network_connect doesn't even appear to be an option that's available to me SELinux none-the-less does appear to be installed and I'm not seeing any indications of it installed even in the phpinfo() output..
Any ideas?
Not sure about selinux integration with PHP. You could use the shell command.
$getenforce = trim(shell_exec("getenforce"));
if ($getenforce == "Disabled" or $getenforce == "Permissive") {
// good to go
}
Although, getenforce may not exist on all Linux systems, so you may want to test the function somehow. Here is something that may work for that:
exec("getenforce", $getenforce, $return);
if ($return or ($getenforce[0] == "Disabled" or $getenforce[0] == "Permissive")) {
// good to go
}
As the return value should be greater than 0 if the user either doesn't have access to or the getenforce command doesn't exist.
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.
There are some php bindings for the libselinux userspace library that allows you (among other things) to get selinux booleans. See php-pecl-selinux in the fedora project packages archive. Here is the pecl page.
Among other things it defines the selinux_get_boolean_active
function which should do the job for you, it takes the boolean name and returns a long
or -1 on failure.
There is not much documentation online but you can refer to the libselinux man pages and summary for function signatures.
Hope this helps!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With