24.5. 对 systemd 无法加载 IMA 策略的故障排除
如果 systemd 没有加载 /etc/ima/ima-policy,系统挂起并显示错误 systemd[1]:Freezing execution。
[ 5.829882] ima: policy update failed
[ 5.830094] ima: signed policy file (specified as an absolute pathname) required
[!!!!!!] Failed to load IMA policy.
…
[ 5.859994] systemd[1]: Freezing execution.
您可以使用三种方法来恢复您的系统。
24.5.1. 关闭安全引导 复制链接链接已复制到粘贴板!
如果因为未签名策略而无法加载策略,您可能会看到类似以下示例的错误。
[ 5.661906] ima: policy update failed
[ 5.662290] ima: signed policy file (specified as an absolute pathname) required
[ 5.662496] systemd[1]: Failed to load the IMA custom policy file /etc/ima/ima-policy1: Permission denied
[ 5.662663] ima: policy update failed
[ 5.662856] audit: type=1800 audit(1744968172.925:7): pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 op=appraise_data cause=IMA-signature-required comm="systemd" name="/etc/ima/ima-policy" dev="vda3" ino=25679834 res=0 errno=0
[ 5.663205] audit: type=1802 audit(1744968172.925:8): pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 op=policy_update cause=failed comm="systemd" res=0 errno=0
[!!!!!!] Failed to load IMA policy.
作为临时解决方案,您可以临时关闭安全引导,并遵循 为 UEFI 系统部署自定义签名的 IMA 策略 来解决这个问题。
24.5.2. 使用 init=/bin/bash 内核参数引导系统 复制链接链接已复制到粘贴板!
要使用 init=/bin/bash 内核参数引导系统,您可以使用以下步骤:
-
修改 bootloader 条目并添加
init=/bin/bash内核参数。 访问 shell 后,使用写权限重新挂载系统:
# mount -o remount,rw /将
/etc/ima/ima-policy重命名为/etc/ima/ima-policy.bak:# mv /etc/ima/ima-policy /etc/ima/ima-policy.bak重启系统:
# echo 1 > /proc/sys/kernel/sysrq # printf "s\nb" > /proc/sysrq-trigger解决
/etc/ima/ima-policy.bak中的任何问题,并验证是否可以载入该策略:# echo /etc/ima/ima-policy.bak >> /sys/kernel/security/integrity/ima/policy将
/etc/ima/ima-policy.bak重命名为/etc/ima/ima-policy:# mv /etc/ima/ima-policy.bak /etc/ima/ima-policy
24.5.3. 使用 initcall_blacklist=init_ima 内核参数引导系统 复制链接链接已复制到粘贴板!
如果系统挂起并显示错误 systemd[1]:Freezing 执行,您可以使用 initcall_blacklist=init_ima 内核参数引导系统来禁用 IMA 策略。
-
修改引导装载程序条目并添加
initcall_blacklist=init_ima内核参数。 将
/etc/ima/ima-policy重命名为/etc/ima/ima-policy.bak:# mv /etc/ima/ima-policy /etc/ima/ima-policy.bak重启系统:
# systemctl reboot解决
/etc/ima/ima-policy.bak中的任何问题,并验证是否可以载入该策略:# echo /etc/ima/ima-policy.bak >> /sys/kernel/security/integrity/ima/policy将
/etc/ima/ima-policy.bak重命名为/etc/ima/ima-policy:# mv /etc/ima/ima-policy.bak /etc/ima/ima-policy