我的审计插件进程需要能够迭代/proc
和读取/proc/pid/stat
文件,但 SElinux 拒绝这样做。
我的插件的进程上下文:
ps auxZ | grep -i myplugin
system_u:system_r:auditd_t:s0 root 8143 0.3 0.3 96188 6284 ? D<l 11:02 0:00 myplugin
拒绝日志示例:type=AVC msg=audit(1705309402.866:1150): avc: denied { getattr } for pid=8143 comm="myplugin" path="/proc/42" dev="proc" ino=95999 scontext=system_u:system_r:auditd_t:s0 tcontext=system_u:system_r:kernel_t:s0 tclass=dir permissive=0
我通过使用创建一个 selinux 策略解决了这个问题audit2allow
,它读取审核日志并创建必要的allow
语句。但.te
结果发现该文件太大,无法读取,超过 100 行。此外,如果我理解正确,这是一个不可靠的解决方案,因为,例如,下次运行插件并迭代时/proc
,可能已经有一些新进程,因此,一个/proc
带有新安全上下文的新文件我当时没有这样做,并且我的保单中audit2allow
没有关于此文件的声明。allow
结果,SElinux 将拒绝访问这个新文件。
有没有更简单、更可靠的方法来解决这个问题呢?本质上,我需要一个策略,规定某个进程可以读取所有文件,而/proc
无需列出每个可能的文件。