12.6. 故障排除与 fapolicyd 相关的问题
fapolicyd 应用程序框架为故障排除最常见的问题提供了工具,您也可以将 rpm 命令安装的应用程序添加到信任数据库中。
使用 rpm安装应用程序
如果使用
rpm命令安装应用程序,您必须执行fapolicydRPM 数据库的手动刷新:安装 应用程序 :
# rpm -i application.rpm刷新数据库:
# fapolicyd-cli --update如果您跳过这一步,系统可能会被冻结,必须重启。
服务状态
如果
fapolicyd无法正常工作,请检查服务状态:# systemctl status fapolicyd
fapolicyd-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您也可以使用 permissive 模式,这不会阻止运行您的应用程序,只记录匹配的
fapolicyd规则# fapolicyd --debug-deny --permissive
删除 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