6.5. 在 MLS 中定义的安全范围内更改用户安全许可的级别

作为 MLS 中的用户,您可以在管理员分配给您的范围内更改当前的安全许可级别。您永远不会超过范围的上限,或将您的级别降到范围的下限以下。例如,您可以修改敏感级别低的文件,而不需要提高其敏感级别。

例如,用户的范围为 s1-s3

  • 您可以将级别切换到 s1s2s3
  • 您可以将范围切换到 s1-s2s2-s3
  • 您不能将范围切换到 s0-s3s1-s4
注意

切换到其他级别会打开一个新的、具有不同安全许可级别的 shell。这意味着,您无法按照降级的相同方式将您的级别恢复到原始的安全许可级别。但是,输入 exit 可以返回到之前的 shell。

先决条件

  • SELinux 策略设置为 mls
  • SELinux 模式设置为 enforcing(强制)模式。
  • 您可以作为分配了一个 MLS 安全许可级别范围的用户身份登录。

流程

  1. 以用户身份从一个安全终端进行登录。

    注意

    安全终端在 /etc/selinux/mls/contexts/securetty_types 文件中定义。默认情况下,控制台是一个安全终端,但 SSH 不是。

  2. 检查当前用户的安全上下文:

    $ id -Z
    user_u:user_r:user_t:s0-s2

    在本例中,该用户被分配给 user_u SELinux 用户、user_r 角色、user_t 类型,以及 MLS 安全范围 s0-s2

  3. 检查当前用户的安全上下文:

    $ id -Z
    user_u:user_r:user_t:s1-s2
  4. 切换到用户安全许可范围内的不同安全许可范围:

    $ newrole -l s1

    您可以切换到任何范围,只要其最大级别低于或等于您被分配的范围的任何范围。输入单级别范围会更改所分配范围的较低限制。例如,输入 newrole -l s1 作为具有 s0-s2 范围的用户,相当于输入 newrole -l s1-s2

验证

  1. 显示当前用户的安全上下文:

    $ id -Z
    user_u:user_r:user_t:s1-s2
  2. 通过终止当前 shell,返回到之前带有原始范围的 shell:

    $ exit

其他资源