Portal:SELinux/Setup

跳转到:导航搜索

在新 Tumbleweed 安装中设置 SELinux

对于新安装,您可以在安装程序中选择“SELinux”作为安全系统,而不是“AppArmor”,并跳过以下步骤。

对于 Build 20250211 及更高版本,默认情况下已选中此选项。

在现有的 Tumbleweed/Leap 系统上设置 SELinux

以下指南演示了如何在现有的 Tumbleweed/Leap 安装上设置 SELinux。如果之前启用了 AppArmor,本指南还会禁用 AppArmor 作为强制访问控制系统,并将其替换为 SELinux。如果您为 SELinux 策略未覆盖的应用程序定制了 AppArmor 配置文件,请考虑通过 创建自定义策略 来迁移它们。

以下命令均假定您以 root 用户身份运行,或者每个命令都以 sudo 为前缀。

  1. ⚠️ 在执行任何命令之前,请阅读所有这些说明。
  2. ⚠️ 确保按顺序执行它们。
  3. ⚠️ 不要跳过任何步骤。
  4. 安装 selinux 软件包模式。 这也会拉取许多工具。
    zypper install -t pattern selinux
  5. 修改内核启动参数。
    1. 对于使用 grub(默认)的系统
      1. /etc/default/grub 中,将 security=selinux selinux=1 添加到 GRUB_CMDLINE_LINUX_DEFAULT 的值中
        GRUB_CMDLINE_LINUX_DEFAULT=" ... security=selinux selinux=1
      2. 如果存在 security=apparmor,请将其删除。
      3. 保持所有其他值不变。 一个完整的示例是
        GRUB_CMDLINE_LINUX_DEFAULT="splash=silent mitigations=auto quiet security=selinux selinux=1"
      4. 使用以下命令更新 grub.cfg
        update-bootloader
      5. 通过执行以下命令重建 initrd,用于 selinux-autorelabel 脚本
        dracut --regenerate-all --force
    2. 对于使用 systemd-boot(实验)的系统
      1. 通过执行以下命令将 SELinux 内核 cmdline 选项添加到 /etc/kernel/cmdline
        pbl --add-option "security=selinux selinux=1"
      2. 通过执行以下命令将内核 cmdline 选项添加到 systemd 启动配置中,位于 /boot/efi/loader/entries/
        sdbootutil add-all-kernels
      3. 通过执行以下命令重建 initrd,用于 selinux-autorelabel 脚本
        sdbootutil mkinitrd
  6. 使用 nano 等编辑器,编辑 /etc/selinux/config 并设置以下值
    SELINUX=permissive
    SELINUXTYPE=targeted
  7. 请求在下次启动时重新标记文件。
    touch /.autorelabel
  8. 重新启动系统
    reboot
    首次启动时,系统将标记文件系统中的所有文件。 因此,启用 SELinux 后的首次启动将需要一段时间。
  9. ⚠️ 检查潜在的错误消息,以避免被锁定在系统之外。
    ausearch -m avc,user_avc,selinux_err,user_selinux_err -ts boot
    如果您看到任何错误,现在是时候 提交错误报告 了。
  10. 在验证没有拒绝后,使用 nano 等编辑器,编辑 /etc/selinux/config 并设置以下值
    SELINUX=enforcing
  11. 再次重新启动
    reboot

之后,验证 SELinux 是否已启用

   # sestatus 
   SELinux status:                 enabled
   SELinuxfs mount:                /sys/fs/selinux
   SELinux root directory:         /etc/selinux
   Loaded policy name:             targeted
   Current mode:                   enforcing
   Mode from config file:          enforcing
   Policy MLS status:              enabled
   Policy deny_unknown status:     allowed
   Memory protection checking:     actual (secure)
   Max kernel policy version:      33