6.10. 允许 MLS 用户在较低级别上编辑文件

默认情况下,MLS 用户无法写入在明确范围内低值下具有敏感等级的文件。如果您的场景需要允许用户在较低级别上编辑文件,可以通过创建本地 SELinux 模块来实现。但是,写入文件会使用户当前范围内的低值提高其敏感度级别。

先决条件

  • SELinux 策略被设置为 mls
  • SELinux 模式设置为 enforcing
  • 已安装 policycoreutils-python-utils 软件包。
  • setools-consoleaudit 软件包进行验证。

流程

  1. 可选:切换到 permissive 模式以方便故障排除。

    # setenforce 0
  2. 使用文本编辑器打开新的 .cil 文件,如 ~/local_mlsfilewrite.cil,并插入以下自定义规则:

    (typeattributeset mlsfilewrite (_staff_t_))

    您可以将 staff_t 替换为不同的 SELinux 类型。通过在此处指定 SELinux 类型,您可以控制哪些 SELinux 角色可以编辑低级别文件。

    要让您的本地模块更好地组织,请在本地 SELinux 策略模块的名称中使用 local_ 前缀。

  3. 安装策略模块:

    # semodule -i ~/local_mlsfilewrite.cil
    注意

    要删除本地策略模块,请使用 semodule -r ~/local_mlsfilewrite。请注意,您必须引用不带 .cil 后缀的模块名称。

  4. 可选:如果您之前切换到 permissive 模式,返回到 enforcing 模式:

    # setenforce 1

验证

  1. 在安装的 SELinux 模块列表中找到本地模块:

    # semodule -lfull | grep "local_mls"
    400 local_mlsfilewrite  cil

    由于本地模块具有优先级 400,所以您也可以使用 semodule -lfull | grep -v ^100 命令列出它们。

  2. 以分配给自定义规则中定义的类型的用户身份登录,例如 staff_t
  3. 尝试写入到具有较低敏感度级别的文件。这会将文件的分类级别增加到用户的安全许可级别。

    重要

    如果配置不正确,您用于验证的文件不应包含任何敏感信息,并且用户实际上可以访问未经授权的文件。