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销毁表。
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销毁表。