Portal:SELinux/QAGuides
此页面是为 (open)QA 人员或其他测试人员提供的指南,介绍在测试和发现由 SELinux 引起的问题时常见的陷阱。由于 SELinux 规则应用于整个操作系统,因此它可能会在测试期间影响所有区域和团队。
感谢您的测试,这真的非常感谢!
要快速了解 SELinux 是什么,请查看此页面: https://en.opensuse.net.cn/Portal:SELinux
要确定问题是否由 SELinux 引起,有几个指示器
- 在 /var/log/audit.log 中存在 AVC。以下是它们的外观示例
type=AVC msg=audit(1621342040.556:15): avc: denied { watch } for pid=1 comm="systemd" path="/var/cache/cups" dev="vda2" ino=22stem_r:init_t:s0 tcontext=system_u:object_r:cupsd_rw_etc_t:s0 tclass=dir permissive=1
- 或者:如果您禁用 SELinux,问题将不再发生。您可以使用以下命令临时禁用 SELinux
setenforce 0
属于我们范围内的其他问题是
- SELinux 用户空间工具 (sestatus, setroubleshootd, udica) 无法正常工作(例如,它崩溃了……)
如果您发现此类问题,请按照以下说明报告它们。
通过 openQA 发现的产品错误
对于来自 openQA 测试运行的 SELinux 相关错误,请确保以下内容包含在 bugzilla 错误中,以便我们可以快速处理它们
- 始终 (!) 在标题中添加“SELinux”,以便我们找到该问题,否则它将永远消失
- 请粘贴相关的日志,例如 AVC 或审核日志作为评论或将其上传为文件,因为 openQA 运行将在一段时间后被清除。这有助于我们将来查看问题是否发生过。
- 始终链接 openQA 测试运行。通常由模板完成,但如果未完成,请确保链接它。
- 如果您已经本地重现了该问题,请查看下面的手动测试部分,并包含您本地重现设置中的信息。
通过手动测试发现的产品错误
在手动测试期间发现问题时,请确保它确实是由 SELinux 引起的。
为此,请使用以下命令将 SELinux 设置为 permissive 模式
setenforce 0
然后,重新运行测试。如果测试仍然失败,则不是由 SELinux 引起的,需要分配给另一个团队。
在确认问题确实是由 SELinux 引起的之后,请确保您已准备好问题的重现器,因为我们不是所有主题的专家,这会使我们更快地检查已完成的工作。
如果您在网络中有一个我们可以连接的测试设置,请告知我们。
然后,您可以使用我们的错误报告指南并填写我们需要的所有信息
您可以使用错误创建模板快速打开错误:Tumbleweed 的 Bugzilla 中的 SELinux 错误创建模板:openSUSE.org 或 SUSE.com
摘要行
编写一个包含 [SELinux] 前缀标签的摘要行。一个有效的摘要行示例可以是
[SELinux] transactional-update 在 cloud-init 下 selinux=permissive 模式下无法运行
描述
请在您的错误的描述中说明以下信息
- 操作系统:您可以通过例如运行找到它:
hostnamectl | grep "Operating System" - SELinux 状态、模式和策略名称:您可以通过运行找到它:
sestatus - SELinux 策略版本和仓库:您可以通过例如运行找到它:
zypper info selinux-policy - 受 SELinux 问题影响的软件(包括版本)和错误消息
- SELinux 审计日志:您可以使用
ausearch检索审计日志。
AVC 列表至关重要!请始终在错误中提供此信息。
例如,要检索自启动以来的所有 SELinux 违规行为
$ ausearch -ts boot -m avc,user_avc,selinux_err,user_selinux_err
- 准确的重现步骤,即如何配置和使用系统以触发 AVC
- 任何其他重要细节:例如,发生错误时您尝试完成什么,其他日志
NOTE: The output of setroubleshoot does not add any value, you do not have to provide it.
常见陷阱
在打开错误之前,请检查您的问题是否可能是由常见陷阱引起并且可以轻松解决。这些常见陷阱包括
- 将系统从“宽松”模式设置为“强制”模式,而没有重新标记:如果您最近从“宽松”模式切换到“强制”模式,请检查您是否使用以下命令触发了重新标记:
touch /.autorelabel。否则,在“宽松”模式期间文件系统上的标签可能会发生变化,并在以“强制”模式运行时导致问题。 - SELinux 拒绝了常见的 workload:如果您运行一个非常常见的 workload 并且 SELinux 拒绝了该 workload 的一部分,这可能是因为您需要为此启用 SELinux 布尔值。检查
ausearch -m avc -ts today | audit2allow以获取建议的布尔值。如果没有建议,那么您的 issue 很可能是一个 bug,您应该报告它。如果建议了布尔值,您可以安装selinux-policy-doc并检查该特定服务的 SELinux 手册页来调查是否是正确的布尔值man SERVICENAME_selinux。布尔值可以永久启用setsebool -P BOOLEANNAME=1。