安全级别

2.6.3 安全级别

  安全上下文中含有安全级别,它包括敏感度属性和分类属性,敏感度指安全的等级,如:confidential、secret等。分类属性指数据分成多个隔绝部分,如:数据1仅能A使用,数据2仅能B使用等,分类属性是可选的。

  安全上下文结构context中使用成员range成员表示,range成员是2个元素的数组,它将安全级别分为高层和低层的级别,每个层次的级别用结构mls_level表示,结构mls_level的组织结构图如图3-9所示。

  错误!

  图见 http://www.startos.com/zhuanti/zt02/2010/1111/9343.html#share




  图3-9 安全上下文的安全级别的组织结构图

  敏感度属性用整数记录级别,分类属性使用位图来记录。为了方便位图的管理,又将位图分为小块,每小块64位,将每小块作为链表的节点,用链表连接起来。可见安全上下文支持多层次多等级的安全级别。分类属性可将安全属性分成很小的相互隔绝块,如:文件仅供某个部门的某个人使用,每个部门相当于位图的一个节点,位图的每1位为1或者0,指明了是否属于某个人。

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

  struct mls_level {

  u32 sens;//敏感度属性

  struct ebitmap cat;//分类属性位图

  };

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

  struct ebitmap {

  struct ebitmap_node *node;//位图中的第一个节点

  u32 highbit; //整个位图中的最高位置

  };

  #define MAPTYPE u64

  struct ebitmap_node {

  u32 startbit; //在整个位图中的开始位置

  MAPTYPE map;

  //位图中属于这个节点的部分,以u64类型变量表示,64位位图

  struct ebitmap_node *next; //下一个位图节点

  };

  在selinux/ss/ebitmap.c文件中提供了位图的管理函数。例如:函数ebitmap_init给一个安全上下文初始化位图,将位图每位置0;函数ebitmap_cpy将一个安全上下文的位图拷贝到另一个安全上下文;函数ebitmap_cmp比较两个安全上下文的位图是否一样;函数ebitmap_get_bit得到位图中指定位的值;函数ebitmap_set_bit设置位图中指定位的值;函数ebitmap_read从二进制策略文件中读取安全上下文的位图。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值