13.6. 故障排除与 fapolicyd 相关的问题
fapolicyd 应用程序框架为故障排除最常见的问题提供了工具,您也可以将 rpm 命令安装的应用程序添加到信任数据库中。
- 在带有容器的系统中运行
fapolicyd 因为
fapolicyd框架没有完全支持命名空间和容器,所以您必须在运行容器的系统中使用临时解决方案。要防止因为fapolicyd导致容器启动失败,请使用以下内容创建/etc/fapolicyd/rules.d/25-runc.rules文件:allow perm=any pattern=ld_so exe=/usr/bin/runc : all allow perm=any uid=0 pattern=ld_so exe=/runc : trust=1保存文件,运行
fagenrules脚本,并输入fapolicyd-cli --reload-rules命令来应用更改。或者,您可以从/etc/文件中的fapolicyd/fapolicyd.confwatch_fs选项中删除tmpfs值,并使用systemctl restart fapolicyd命令重启 fapolicyd 服务,但这会降低系统安全性。- 使用 RPM 安装应用程序
如果使用
rpm命令安装应用程序,您必须执行fapolicydRPM 数据库的手动刷新:安装 < application>:
# rpm -i <application>.rpm刷新数据库:
# fapolicyd-cli --update如果您跳过这一步,系统可能会被冻结,必须重启。
- 服务状态
如果
fapolicyd无法正常工作,请检查服务状态:# systemctl status fapolicydfapolicyd-cli检查和列表--check-config、--check-watch_fs和--check-trustdb选项可帮助您查找语法错误、尚未监视的文件系统和文件不匹配,例如:# fapolicyd-cli --check-config Daemon config is OK # fapolicyd-cli --check-trustdb /etc/selinux/targeted/contexts/files/file_contexts miscompares: size sha256 /etc/selinux/targeted/policy/policy.31 miscompares: size sha256使用
--list选项检查规则的当前列表及其顺序:# fapolicyd-cli --list … 9. allow perm=execute all : trust=1 10. allow perm=open all : ftype=%languages trust=1 11. deny_audit perm=any all : ftype=%languages 12. allow perm=any all : ftype=text/x-shellscript 13. deny_audit perm=execute all : all …
- Debug 模式
Debug 模式提供关于匹配规则、数据库状态等的详细信息。将
fapolicyd切换到 debug 模式:停止
fapolicyd服务:# systemctl stop fapolicyd使用 debug 模式来识别相应的规则:
# fapolicyd --debug因为
fapolicyd --debug命令的输出非常详细,所以您可以将错误输出重定向到文件中:# fapolicyd --debug 2> fapolicy.output另外,若要在
fapolicyd拒绝访问时仅将输出限制为条目,请使用--debug-deny选项:# fapolicyd --debug-deny
- 删除
fapolicyd数据库 要解决与
fapolicyd数据库相关的问题,请尝试删除数据库文件:# systemctl stop fapolicyd # fapolicyd-cli --delete-db警告不要删除
/var/lib/fapolicyd/目录。fapolicyd框架只自动恢复这个目录下的数据库文件。- 转储
fapolicyd数据库 fapolicyd包含了所有启用的信任源的条目。您可以在转储数据库后检查条目:# fapolicyd-cli --dump-db- 应用程序管道
在个别情况下,删除
fapolicyd管道文件可以解决锁定问题:# rm -f /var/run/fapolicyd/fapolicyd.fifo