You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RHEL8下SELinux静默阻止PHP获取进程列表且无审计日志的排查求助

RHEL8下SELinux静默阻止PHP获取进程列表且无审计日志的排查求助

各位SELinux和PHP运维的大佬们,我遇到一个棘手的问题想请教大家:

我们有一套用PHP实现的服务器健康检查系统,访问状态页时会通过shell_exec("ps -ax")验证特定服务进程是否运行,一旦检测到异常就返回错误提示。

在之前的RHEL7环境里,我们遇到过ps -ax只能返回PHP用户自身进程的问题,排查后发现是SELinux的限制——当时在auditd.log里能看到明确的拒绝记录,最后通过加载下面这个SELinux策略模块解决了问题:

require {

type httpd_t;

type initrc_t;

class dir getattr;

class dir search;

class file read;

class file open;

}

#============= httpd_t ==============

allow httpd_t initrc_t:dir getattr;

allow httpd_t initrc_t:dir search;

allow httpd_t initrc_t:file read;

allow httpd_t initrc_t:file open;

现在我们在RHEL8上重建这套系统,同样的策略模块却失效了:shell_exec("ps -ax")依旧只能看到当前PHP用户的进程。更奇怪的是,这次在audit日志里完全找不到任何和PHP相关的SELinux拒绝记录!我已经禁用并移除了之前的策略模块,情况还是一样。

我做了个测试:把SELinux切换到Permissive模式后,PHP就能正常看到所有运行的进程;切回Enforcing模式就又回到原来的状态——这说明确实是SELinux在阻止,但它就是不记录拒绝日志。

我自己尝试过这些方法,都没拿到有用的日志:

  • 执行auditctl -w /usr/sbin/php-fpm和auditctl -w /usr/bin/ps添加审计规则,现在能在audit.log里看到ps被执行的记录,但还是看不到具体被拒绝的操作内容。

我对SELinux的了解不多,现在有点抓瞎了,有没有大佬知道怎么让SELinux强制记录这次阻止的原因?为什么这个操作的拒绝日志会被排除呢?

备注:内容来源于stack exchange,提问作者Jared

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 11:45:30