类别属性
客体类别在内核策略库中使用class_datum结构表示,其定义在security/selinux/ss/policydb.h中,具体定义如下所示:
struct class_datum {
u32 value; /* class value */
char *comkey; /* common name */
struct common_datum *comdatum; /* common datum */
struct symtab permissions; /* class-specific permission symbol table */
struct constraint_node *constraints; /* constraints on class permissions */
struct constraint_node *validatetrans; /* special transition rules */
/* Options how a new object user, role, and type should be decided */
#define DEFAULT_SOURCE 1
#define DEFAULT_TARGET 2
char default_user;
char default_role;
char default_type;
/* Options how a new object range should be decided */
#define DEFAULT_SOURCE_LOW 1
#define DEFAULT_SOURCE_HIGH 2
#define DEFAULT_SOURCE_LOW_HIGH 3
#define DEFAULT_TARGET_LOW 4
#define DEFAULT_TARGET_HIGH 5
#define DEFAULT_TARGET_LOW_HIGH 6
char default_range;
};
如上所示,代码中已经对各字段进行了解释,这里不再进行赘述。其结构图如图2-3所示,其中灰色背景标注的红色文字表示位图中的最后一个映射区,映射区的长度使用名为EBITMAP_UNIT_NUMS宏定义,在32位系统中该宏的值为6,所以该图中最后一个映射区标注为maps[5]。

图2-3 class_datum相关结构图之间的关系图返回搜狐,查看更多