system_u 分配给文件时意味着什么?

system_u 分配给文件时意味着什么?

我的问题是:

  1. 如果有一个文件分配了 system_u 作为 SELinux,这意味着只有映射到 system_u/unconfined_u 的用户才能访问该文件?
  2. 如果这个标签被分配给一个可执行文件,这意味着运行这个 exec 的任何人都会启动一个带有 system_u/system_r 标签的进程?
  3. 或 system_u 或 system_r 分配给文件没有任何意义,它只是一个占位符?

答案1

如果有一个文件分配了 system_u 作为 SELinux,这意味着只有映射到 system_u/unconfined_u 的用户才能访问该文件?

这取决于安全模型,但通常安全上下文中的用户属性仅用于将安全上下文的其余部分粘合到 Linux 用户/组身份。这种安全模型称为基于身份的访问控制。属性的主要目的是解决以下挑战:我们如何增强/扩展/现代化现有的 Linux 访问控制模型? IBAC 是将两者联系起来的。

但用户属性也可以另外用于基于 SELinux 用户身份来分离实体(IBAC 分离)。不过,通常不会启用此安全模型(但 selinux 参考策略有此选项)。

如果这个标签被分配给一个可执行文件,这意味着运行这个 exec 的任何人都会启动一个带有 system_u/system_r 标签的进程?

不,但是(我认为)可以。默认行为可以在安全策略中使用所谓的“默认规则”进行自定义。默认情况下,当您执行文件时,您的新进程将从“调用进程”继承与安全上下文中的用户属性关联的标识符。

看:https://github.com/SELinuxProject/selinux-notebook/blob/main/src/default_rules.md#default_user

或 system_u 或 system_r 分配给文件没有任何意义,它只是一个占位符?

您几乎永远不会看到与文件关联的 system_r。相反,您可能会看到与文件关联的 object_r。 object_r确实是一个占位符,用于填充与对象关联的安全上下文中的selinux角色安全属性字段。这是因为默认情况下角色用于实现称为“基于角色的访问控制”的安全模型,并且该模型仅适用于用户进程而不适用于文件。您可以选择额外使用此属性来强制实施自定义安全模型,例如 RBAC 分离,您可以根据角色标识符分离对文件的访问。

安全上下文中的每个字段都至少有一个含义。与这些字段相关联的属性和标识符对应于安全模型,并且安全模型是“为解决特定安全挑战而设计的”。唯一的例外是 object_r 角色标识符,但即便如此,它也有意义,因为它告诉我,基于角色对文件的访问没有分离。

相关内容