内核安全表

在数据已装入到指定为内核安全表 (KST) 的内核区域中之前,授权、角色、特权命令以及特权设备数据库中包含的信息不用于安全注意事项。 在增强型 RBAC 方式中,授权和特权检查是在内核中执行的,因此各个数据库必须首先发送到内核中,然后才能使用。

KST 由以下子表组成:
  • 内核授权表 (KAT)
  • 内核角色表 (KRT)
  • 内核命令表 (KCT)
  • 内核设备表 (KDT)

可以使用 setkst 命令将所有表或选择表从用户空间发送到内核。 KRT 和 KCT 依赖于 KAT,因此如果已选择更新 KAT,那么也将更新 KRT 和 KCT 以验证各个表是同步的。 向 KST 添加更新的首选方法是在用户级别创建或修改所有必需数据库 (使用 mkauthchauth之类的命令)。 mkrolesetsecattr) ,然后使用 setkst 命令将表发送到内核。 在内核中装入表后,可以使用 lskst 命令来显示每个表中包含的信息。

KST 中提供的表始终作为完整表进行发送。 换言之,KST 不允许对单个条目进行修改;必须替换整个表。 在将各个表发送到内核之前,setkst 命令对各个表以及各表之间的关系进行验证。 setkst 命令还放置在 inittab 文件中,以确保在引导过程中及早将数据库发送到 KST。

如果由于某些原因无法创建表或无法将表装入内核,并且先前未装入任何表,那么系统将在好像不存在任何授权或角色的状态下运行。 在此场景中,用于授权和角色检查的命令、API 和系统调用都会返回失败,因为找不到任何匹配项。 此状态下的系统操作非常类似于传统的 RBAC 方式,不同的是没有任何用户能够访问强制执行授权的命令中的代码段。