SID表sidtab

2.6.2 SID表sidtab

  SID表sidtab用一个hash表存储了SID和安全上下文的节点,提供了SID和安全上下文的对应关系。通过查找表sidtab,可方便地由SID找到安全上下文。hash表的hash值就是SID。

  结构sidtab列出如下(在security/selinux/ss/sidtab.h中):

  struct sidtab {

  struct sidtab_node **htable;

  unsigned int nel;//节点个数

  unsigned int next_sid;//将分配的下一个 SID

  unsigned char shutdown;

  spinlock_t lock;

  };

  SID表节点由结构sidtab_node的实例组成,它描述了SID和安全上下文的对应关系,这样,知道了SID或安全上下文,就可以找到安全上下文或SID。结构sidtab_node列出如下:

  struct sidtab_node {

  u32 sid;//SID(security identifier)

  struct context context;//安全上下文结构 */

  struct sidtab_node *next; //下一个节点

  };

  结构context是安全上下文的描述结构,安全上下文包括用户、角色、类型和安全级别,结构context列出如下(在selinux/ss/context.h中):

  struct context {

  u32 user; //用户

  u32 role; //角色

  u32 type; //类型

  struct mls_range range; //级别

  };

  SID表sidtab的组织结构图如图3-8所示。

  错误

  图见: http://www.startos.com/zhuanti/zt02/2010/1111/9342.html




  图3-8 SID表sidtab的组织结构图

  在selinux/ss/sidtab.c文件中提供了SID表sidtab的管理函数,例如,函数sidtab_init初始化sidtab表;函数sidtab_insert在表中插入一个节点;函数sidtab_search从表中查找到SID对应的安全上下文;函数sidtab_search_context从表中找到安全上下文对应的SID;函数sidtab_context_to_sid将安全上下文转换到对应的SID,如果表中不存在这个节点,将其加入到表中;函数sidtab_destroy销毁表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值