Je suis en train d'obtenir un processus PID et le tuer avec ce code:SELinux bloquant php exec (« kill pid ») sans aucune erreur dans le journal
<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');
$_script_path = "/path/to/scriptname.php";
$cmd_find_process = "ps aux | grep '[p]hp -f ".$_script_path."'";
echo $cmd_find_process.PHP_EOL;
echo exec($cmd_find_process);
echo PHP_EOL.PHP_EOL;
$cmd = "kill $(".$cmd_find_process." | awk '{print $2}')";
echo $cmd;
echo exec($cmd);
?>
Au début, je ne pouvais pas la liste des processus qui Je fixe en compilant un module SELinux personnalisé, SELinux-httpd-allow-ps-aux.te:
policy_module(myhttpd,1.0.0)
gen_require(`
type httpd_t;
')
domain_read_all_domains_state(httpd_t);
J'ai relevés dontaudit déjà handicapés avec:
semodule -DB
Mais je ne peux pas tuer tout processus que j'ai précédemment démarré par le même utilisateur: apache. Aucune erreur consignée dans le fichier /var/log/audit/audit.log.
Pour une compréhension complète, le script PHP que je suis en train de tuer est exécuté avec cette commande:
su -s /bin/sh apache -c php -f /path/to/scriptname.php
Je sais qu'il est SELinux parce désactivant SELinux avec
echo 0 > /selinux/enforce
fera ça marche.