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 引起的之后,请确保您已准备好问题的重现器,因为我们不是所有主题的专家,这会使我们更快地检查已完成的工作。

如果您在网络中有一个我们可以连接的测试设置,请告知我们。

然后,您可以使用我们的错误报告指南并填写我们需要的所有信息

报告 SELinux 错误
要报告 SELinux 的问题,请在 Bugzilla 中打开一个错误。请确保您遵循以下指南,以便可以快速找到并处理该错误。然后我们将与您联系,并在需要时请求更多信息。

您可以使用错误创建模板快速打开错误:Tumbleweed 的 Bugzilla 中的 SELinux 错误创建模板:openSUSE.orgSUSE.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
如有疑问,请仍然打开一个错误。