我正在尝试audit2allow
使用Symfony\Component\Process\Process
.
当我exec("audit2allow -a -M a2a");
在 PHP 中运行时,它工作得很好,a2a.pp
并且a2a.te
已经生成。
$process = new Process(['audit2allow', '-a', '-M', 'a2a']);
$process->run();
if (!$process->isSuccessful()) {
throw new ProcessFailedException($process);
}
echo $process->getOutput();
但是,上面的代码产生下面的输出
Symfony\Component\Process\Exception\ProcessFailedException : The command "'audit2allow' '-a' '-M' 'a2a'" failed.
Exit Code: 1(General error)
Working directory: /var/www/html/example
Output:
================
compilation failed:
a2a.te:6:ERROR 'syntax error' at token '' on line 6:
/usr/bin/checkmodule: error(s) encountered while parsing configuration
/usr/bin/checkmodule: loading policy configuration from a2a.te
这是有空时的典型输出/var/log/audit/audit.log
。我需要进行哪些更改才能使其正常工作?Symfony 声称这不是一个错误。
https://github.com/symfony/symfony/issues/35862
更新
使用Symfony\Component\Process\Process
(上面的代码)实际上会生成文件a2a.te
,但它只有 1 行。
module a2a 1.0;
而 usingexec()
会生成a2a.te
包含多行的文件:
module a2a 1.0;
require {
type kernel_t;
type vmblock_t;
type container_t;
...
为什么运行相同的命令Symfony\Component\Process\Process
并exec()
给出不同的结果?