我知道我可以使用semodule -l
查看我有哪些模块。但是我想查看特定模块中包含的规则。
我读了几乎所有能找到的关于 semodule、seinfo、sesearch 的文档。但我找不到任何方法可以做到这一点。
如果可能的话,有人可以告诉我如何做到这一点吗?
如果不可能,谁能解释一下为什么这么难?检查其他人的模块允许什么样的规则不是一种常见的做法吗?
特别是如果我们允许 rpm 携带策略模块,你怎么知道它不是有害的东西?
当我在其中发现一些字符串规则时,我想知道该怪谁。
更新
我进行了更多研究,并受到以下启发这我在新操作系统中发现/var/lib/selinux/<store>/active/modules/<priority>/<module_name>/{cil,hll,lang_ext}
根据文档:
HLL 数据、缓存的 CIL 数据和 HLL 扩展存储在 /var/lib/selinux//active/modules//<module_name>/{cil,hll,lang_ext} 中。lang_ext 文件包含 HLL 的扩展名(没有换行符),用于确定要执行的编译器目录中的文件以将 HLL 数据编译为 CIL。
看起来 hll 实际上是 .pp 文件的副本。但事实并非如此。如果我尝试对 hll 文件使用 semoudle_unpackage 或 sedismod,它会抛出错误。
libsepol.module_package_read_offsets: wrong magic number for module package: expected 0xf97cff8f, got 0x35685a42
semodule_unpackage: Error while reading policy module from /var/lib/selinux/targeted/active/modules/.../hll
所以到现在我还是没有找到任何解决方案。