2016-04-04 13 views
0

でエラーなし(「pidを殺す」)PHPの幹部をブロック:、私はプロセスを一覧表示することができませんでしたSELinuxが、私は、プロセスの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-のhttpd-許可-PS-aux.te、カスタムのSELinuxモジュールをコンパイルすることにより固定:

policy_module(myhttpd,1.0.0) 

gen_require(` 
    type httpd_t; 
') 

domain_read_all_domains_state(httpd_t); 

私はとすでに無効になっdontaudit文ました:

semodule -DB 

同じユーザーが以前に開始したプロセスはすべて終了できません。apache /var/log/audit/audit.logファイルにはエラーは記録されません。完全に理解するために

は、私が殺すためにしようとしているPHPスクリプトは、このコマンドで実行されます。

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

私はそれがSELinuxのことを知っている

echo 0 > /selinux/enforce 

でSELinuxをオフにするようになりますので、それは働く。

答えて

0

明らかに、私はエラーが表示されるようにauditdを再起動しなければなりませんでした。

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; 
関連する問題