Portal:SELinux/Setup
在新 Tumbleweed 安装中设置 SELinux
对于新安装,您可以在安装程序中选择“SELinux”作为安全系统,而不是“AppArmor”,并跳过以下步骤。
对于 Build 20250211 及更高版本,默认情况下已选中此选项。
在现有的 Tumbleweed/Leap 系统上设置 SELinux
以下指南演示了如何在现有的 Tumbleweed/Leap 安装上设置 SELinux。如果之前启用了 AppArmor,本指南还会禁用 AppArmor 作为强制访问控制系统,并将其替换为 SELinux。如果您为 SELinux 策略未覆盖的应用程序定制了 AppArmor 配置文件,请考虑通过 创建自定义策略 来迁移它们。
以下命令均假定您以 root 用户身份运行,或者每个命令都以 sudo 为前缀。
- ⚠️ 在执行任何命令之前,请阅读所有这些说明。
- ⚠️ 确保按顺序执行它们。
- ⚠️ 不要跳过任何步骤。
- 安装 selinux 软件包模式。 这也会拉取许多工具。
zypper install -t pattern selinux
- 修改内核启动参数。
- 对于使用 grub(默认)的系统
- 在 /etc/default/grub 中,将 security=selinux selinux=1 添加到 GRUB_CMDLINE_LINUX_DEFAULT 的值中
GRUB_CMDLINE_LINUX_DEFAULT=" ... security=selinux selinux=1
- 如果存在 security=apparmor,请将其删除。
- 保持所有其他值不变。 一个完整的示例是
GRUB_CMDLINE_LINUX_DEFAULT="splash=silent mitigations=auto quiet security=selinux selinux=1"
- 使用以下命令更新 grub.cfg
update-bootloader
- 通过执行以下命令重建 initrd,用于 selinux-autorelabel 脚本
dracut --regenerate-all --force
- 在 /etc/default/grub 中,将 security=selinux selinux=1 添加到 GRUB_CMDLINE_LINUX_DEFAULT 的值中
- 对于使用 systemd-boot(实验)的系统
- 通过执行以下命令将 SELinux 内核 cmdline 选项添加到 /etc/kernel/cmdline
pbl --add-option "security=selinux selinux=1"
- 通过执行以下命令将内核 cmdline 选项添加到 systemd 启动配置中,位于 /boot/efi/loader/entries/
sdbootutil add-all-kernels
- 通过执行以下命令重建 initrd,用于 selinux-autorelabel 脚本
sdbootutil mkinitrd
- 通过执行以下命令将 SELinux 内核 cmdline 选项添加到 /etc/kernel/cmdline
- 对于使用 grub(默认)的系统
- 使用 nano 等编辑器,编辑 /etc/selinux/config 并设置以下值
SELINUX=permissive
SELINUXTYPE=targeted
- 请求在下次启动时重新标记文件。
touch /.autorelabel
- 重新启动系统
reboot
首次启动时,系统将标记文件系统中的所有文件。 因此,启用 SELinux 后的首次启动将需要一段时间。 - ⚠️ 检查潜在的错误消息,以避免被锁定在系统之外。
ausearch -m avc,user_avc,selinux_err,user_selinux_err -ts boot
如果您看到任何错误,现在是时候 提交错误报告 了。 - 在验证没有拒绝后,使用 nano 等编辑器,编辑 /etc/selinux/config 并设置以下值
SELINUX=enforcing
- 再次重新启动
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