安全增强型Linux(SELinux)是一个Linux内核的功能,它提供支持访问控制的安全政策保护机制。本文介绍如何开启或关闭SELinux,并且避免系统无法启动的问题。

前提条件

已使用阿里云公共镜像或者自定义镜像创建了ECS实例。

说明 如果自定义镜像是通过服务器迁移中心SMC,由源服务器迁移产生的镜像,或者是您导入的本地镜像文件,请确保迁移前源服务器中的SELinux是禁用状态。

背景信息

一般情况下,开启SELinux会提高系统的安全性,但是会破坏操作系统的文件,造成系统无法启动的问题。如果您所在的企业或团队具有十分严格的安全策略,要求在Linux操作系统中开启SELinux,您可以参考本文的步骤开启,避免系统无法启动的问题。本教程使用的操作系统为:CentOS 7.2 64位。

开启SELinux

  1. 以root权限远程连接ECS实例。连接方式请参见连接方式概述
  2. 在ECS实例上运行以下命令,编辑SELinux的config文件。
    vi /etc/selinux/config
  3. 找到SELINUX=disabled,按i进入编辑模式,通过修改该参数开启SELinux。
    1

    您可以根据需求修改参数,开启SELinux有以下两种模式:

    • 强制模式SELINUX=enforcing:表示所有违反安全策略的行为都将被禁止。
    • 宽容模式SELINUX=permissive:表示所有违反安全策略的行为不被禁止,但是会在日志中作记录。
  4. 修改完成后,按下键盘Esc键,执行命令:wq,保存并退出文件。
    说明 修改config文件后,需要重启实例,但直接重启实例将会出现系统无法启动的错误。因此在重启之前需要在根目录下新建autorelabel文件。
  5. 在根目录下新建隐藏文件autorelabel,实例重启后,SELinux会自动重新标记所有系统文件。
    touch /.autorelabel
  6. 重启ECS实例。
    shutdown -r now

验证SELinux状态

  1. 以root权限远程连接ECS实例。连接方式请参见连接方式概述
  2. 运行命令getenforce,验证SELinux状态。
    返回状态应为enforcing或者permissive,本教程当前状态为enforcing1
  3. 运行命令sestatus,获取更多SELinux信息。
    1

    参数信息SELinux status显示为enabled,表示SELinux已启动。

关闭SELinux

  1. 以root权限远程连接ECS实例。连接方式请参见连接方式概述
  2. 运行命令getenforce,验证SELinux状态。
    返回状态如果是enforcing,表明SELinux已开启。
  3. 选择临时关闭或者永久关闭SELinux。
    • 执行命令setenforce 0临时关闭SELinux。
    • 永久关闭SElinux。
      1. 运行以下命令,编辑SELinux的config文件。
        vi /etc/selinux/config
      2. 找到SELINUX=enforcing,按i进入编辑模式,将参数修改为SELINUX=disabled1
      3. 修改完成后,按下键盘Esc键,执行命令:wq,保存并退出文件。
      4. 重启ECS实例。
        shutdown -r now
      5. 重启后,运行命令getenforce,验证SELinux状态为disabled,表明SELinux已关闭。

后续步骤

您可以通过已启动SELinux的ECS实例创建自定义镜像。在您需要的时候,直接通过该镜像创建已启动SELinux的ECS实例。