首页 存档 技术 查看内容

Linux多安全策略和动态安全策略框架模块代码分析报告(7)

2018-3-30 13:00 |来自: 互联网 381 0

摘要: 策略库的实现 对于SELinux所使用的规则,在内核中都是通过相应的结构体来表示的,下面主要针对这些结构体及其相关操作进行介绍。 (1) 符号表 策略规则中使用了大量的字符串,如用户名、类型名等。为了提高执行的 ...

策略库的实现

对于SELinux所使用的规则,在内核中都是通过相应的结构体来表示的,下面主要针对这些结构体及其相关操作进行介绍。


(1) 符号表


策略规则中使用了大量的字符串,如用户名、类型名等。为了提高执行的效率,在内核策略库中使用整数值来代替这些字符串,并通过符号表来维持符号字符串与整数值之间的关系。对于符号表,其定义在security/selinux/ss/symtab.h中,具体定义如下所示:


struct symtab {

struct hashtab *table; /* hash table (keyed on a string) */

u32 nprim; /* number of primary names in table */

};


如上所示,代码中已经对各字段的含义进行了解释,这里不再赘述。由上述代码可知,符号表通过哈希表实现,其结构图如图2-2所示:

图2-2 symtab相关结构体之间的关系图


对于符号表,其相关操作如表2-6所示,这些函数定义在security/selinux/ss/symtab.c中。


表2-6 符号表相关操作说明

函数名称 函数功能

symhash() 符号表对应的哈希函数

symcmp() 判断两个键值是否相等

symtab_init() 创建一个指定长度的符号表, 并对其进行初始化

声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部