12.6. 故障排除与 fapolicyd 相关的问题
fapolicyd
应用程序框架提供了对最常见的问题进行故障排除的工具,您也可以使用 rpm
命令将安装的应用程序添加到信任数据库中。
使用 rpm
安装应用程序
如果使用
rpm
命令安装应用程序,则必须手动执行fapolicyd
RPM 数据库的刷新:安装 应用程序 :
# 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
其他资源
-
您系统上的
fapolicyd-cli (1)
手册页