linux — SELinux блокирует exec php (‘kill pid’) без каких-либо ошибок в журнале

Я пытаюсь получить PID процесса и убить его с помощью этого кода:

<?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);
?>

Первоначально я не мог перечислить процессы, которые я исправил, скомпилировав собственный модуль SELinux, SELinux-HTTPD-разрешительный пс-aux.te:

policy_module(myhttpd,1.0.0)

gen_require(`
type httpd_t;
')

domain_read_all_domains_state(httpd_t);

Я уже отключил донатаудит заявления с:

semodule -DB

Но я не могу убить процесс, который я ранее запустил тем же пользователем: апаш. В файле /var/log/audit/audit.log ошибок не зарегистрировано.

Для полного понимания PHP-скрипт, который я пытаюсь уничтожить, выполняется с помощью этой команды:

su -s /bin/sh apache -c php -f /path/to/scriptname.php

Я знаю, что это SELinux, потому что отключение SELinux с помощью

echo 0 > /selinux/enforce

заставит это работать.

0

Решение

Видимо мне пришлось перезапустить Audit для ошибок, чтобы показать.

service auditd restart

Это ошибка:

type=AVC msg=audit(1459790992.546:15889813): avc:  denied  { signal } for  pid=25478 comm="sh" scontext=unconfined_u:system_r:httpd_t:s0 tcontext=system_u:system_r:initrc_t:s0 tclass=process
Was caused by:
Missing type enforcement (TE) allow rule.

You can use audit2allow to generate a loadable module to allow this access.

Я смог решить проблему через audit2allow инструмент. Это сгенерированный пользовательский модуль, который исправил проблему.

module selinux-httpd-allow-signal 1.0;

require {
type httpd_t;
type initrc_t;
class process signal;
}

#============= httpd_t ==============
allow httpd_t initrc_t:process signal;
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]