SELINUX 错误:无法解析 /var/lib/selinux/targeted/tmp/modules/100/abrt/cil:73 处的 typeattributeset 语句

问题描述 投票:0回答:1

在Redhat 8上,基于audit.log中生成的以下SELINUX拒绝日志(注意,为了保密起见,我已将原始日志的部分部分替换为三个点):

type=AVC msg=audit(...): avc: denied { read} for pid=1 comm="systemd" name="pcsd.service" dev="dm-0" ino=... scontext=system_u:system_r:init_t:s0 tcontext=system_u:object_r:unlabeled_t:s0 tclass=lnk_file permissive=1

我尝试使用以下命令生成自定义策略:

sepolicy generate --application -n init /usr/lib/systemd/systemd

上述命令成功生成以下文件:

init.fc init.if init.pp init_selinux.spec init.sh init.te

当我尝试运行

init.sh
时,它失败并出现以下错误:

/usr/sbin/semodule -i init.pp
libsemanage.semanage_direct_install_info: Overriding init module at lower priority 100 with module at priority 400.
Failed to resolve typeattributeset statement at /var/lib/selinux/targeted/tmp/modules/100/abrt/cil:73
/usr/sbin/semodule: Failed!

对于为什么我会收到此错误有什么想法吗?

蒂亚

runtime-error selinux
1个回答
0
投票

SELinux 模块存储允许 SELinux 模块优先。

虽然

semodule
使用的默认优先级是 400,但策略包中使用的优先级是 100。

使用更高的优先级,您可以使用同名的修改后的模块覆盖现有模块。

现在,您尝试用较低优先级的模块覆盖具有较高优先级的模块。

你的错误中,

semodule
在abrt策略包中抱怨了这个问题,并给出了对应的通用中间语言行号作为参考。

要获取 CIL 文件中的失败行,请找到 abrt.pp 文件并调用 pp 编译器来获取 CIL 代码。 pp 编译器位于名为 hll 的高级语言基础结构文件夹中。

例如

/recipe-sysroot-native/usr/libexec/selinux/hll/pp ./refpolicy/abrt.pp > abrt.txt

现在您可以检查 abrt.txt 中给定的行号,看看哪一行与您的 init.pp 冲突。

© www.soinside.com 2019 - 2024. All rights reserved.