策略库的实现
对于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() 创建一个指定长度的符号表, 并对其进行初始化 |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|