我正在尝试使用 Linux 安全模块,试图制作一个。
我关于它们应该如何工作的主要知识来源是邮件列表存档和现有 LSM 的来源,以及 Linux 文档中关于它们的几页。
我知道有两种 LSM。
- SELinux / AppArmor 等独家 LSM,
LSM_FLAG_EXCLUSIVE
在其 LSM 定义中设置了标志。 - 非排他性 LSM,如 Yama、功能或锁定。
浏览所有这些 LSM 的源代码,我发现非排他性的从不使用安全 blob。另一方面,独占者大量使用它们。
例如,请参阅AppArmor LSM 定义和Yama 的定义。
那么,非排他性 LSM 可以指定 blob 大小并使用此功能吗?
为了找到答案,我探索了框架的源代码,看看是否可能在每个 LSM 挂钩调用之间切换了安全 blob,我猜这将允许每个 LSM 只能访问自己的 blob,而不能访问另一个 LSM 的 blob。
但是,我们可以在 LSM 框架中看到,情况并非如此。
如果我的 LSM 声明了 blob 大小,如果我的内核也启用了 SELinux,我可以使用这些 blob 吗?SELinux 和我的结构不会重叠吗?