2.4. 在之前禁用的系统中启用 SELinux
为了避免问题(如系统无法引导或进程失败),当在之前禁用的系统中启用 SELinux 时,首先在 permissive 模式中解析 Access Vector Cache (AVC)信息。
当系统以 permissive 模式运行 SELinux 时,用户和进程可能会错误地标记各种文件系统对象。当禁用 SELinux 时创建的文件系统对象不会被标记。这会在将 SELinux 改为 enforcing 模式时导致问题,因为 SELinux 依赖于正确的文件系统对象标签。
为防止错误标记和未标记的文件造成问题,SELinux 在从 disabled 状态更改为 permissive 或 enforcing 模式时自动重新标记文件系统。
					在重新引导系统以进行重新标记之前,请确保系统将以 permissive 模式引导,例如使用 enforcing=0 内核选项。在启动 selinux-autorelabel 服务前,当系统包括 systemd 需要的未被标记的文件时,系统无法引导。如需更多信息,请参阅 RHBZ#2021835。
				
步骤
- 以 permissive 模式启用 SELinux。如需更多信息,请参阅切换到 permissive 模式。
- 重启您的系统: - reboot - # reboot- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 检查 SELinux 拒绝消息。如需更多信息,请参阅 识别 SELinux 拒绝。
- 确保在下次重启时重新标记文件: - fixfiles -F onboot - # fixfiles -F onboot- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 这会创建包含 - -F选项的- /.autorelabel文件。警告- 进入 - fixfiles -F onboot命令前,始终切换到 permissive 模式。- 默认情况下, - autorelabel使用并行多个线程,因为系统有可用的 CPU 内核。要在自动重新标记过程中只使用单个线程,请使用- fixfiles -T 1 onboot命令。
- 如果没有拒绝的操作,切换到 enforcing 模式。如需更多信息,请参阅在引导时进入 SELinux 模式。
验证
- 系统重启后,确认 - getenforce命令返回- Enforcing:- getenforce - $ getenforce Enforcing- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
后续步骤
要在 enforcing 模式下使用 SELinux 运行自定义应用程序,请选择以下之一:
- 
						在 unconfined_service_t域中运行您的应用程序。
- 为应用程序编写新策略。如需更多信息,请参阅 编写自定义 SELinux 策略 部分。