Linux强制访问控制机制模块代码分析报告(四)

核心文件分析mls.c文件

文件描述对于mls.c文件,其完整文件名为security/selinux/ss/mls.c,该文件实现了MLS策略相关操作函数。 主要变量及宏定义在该文件中涉及到的主要变量为policydb,其用来表示SELinux所使用的安全策略,它是一个struct policydb类型的结构体,该文件频繁的调用了ebitmap_for_each_positive_bit()宏,该宏实际上是一个for循环,用于处理位图中所有设置的位。

内部函数

对于该文件中定义的各内部函数,其解释如下所示:

① mls_compute_context_len()

函数原型:

int (struct*);

参数含义:context表示待计算的安全上下文。

函数功能:计算字符串形式的安全上下文中MLS域的长度。

返回值:成功执行时返回MLS域的字节长度;反之返回0。

② mls_sid_to_context()

函数原型:

void (struct*,char **);

参数含义:context表示待操作的安全上下文;scontext用于存放表示安全上下文的字符串。

函数功能:将参数context中代表MLS域的字符串拷贝到scontext中。

返回值:无。

③ mls_level_isvalid()

函数原型:

int (struct*, struct *);

参数含义:p表示SELinux所使用的策略库;l表示待检查的安全级别。

函数功能:根据指定的安全策略判断安全级别是否有效。

返回值:,若有效,返回真;反之返回假。

④ mls_range_isvalid()

函数原型:

int (struct*, struct *);

参数含义:p表示SELinux所使用的策略库;r表示待检查的安全域。

函数功能:判断安全上下文中的MLS域是否有效。

返回值:若有效则返回真;反之返回假。

⑤ mls_context_isvalid()

函数原型:

int (struct*, struct *);

参数含义:p表示SELinux所使用的策略库;c表示待检查的安全上下文结构。

函数功能:根据指定的安全策略判断安全上下文中的MLS域是否有效。

返回值:若有效则返回真。

⑥ mls_context_to_sid()

函数原型:

int (struct*,char ,char **,

struct *,struct *,);

参数含义:pol表示SELinux所使用的策略库;oldc表示scontext中是否设置了MLS域;scontext用于存放字符串形式的安全上下文;context表示待修改的安全上下文;s表示相应的SID表;def_sid表示默认的SID。

函数功能:根据scontext字符串设置参数context指定的安全上下文结构体中的MLS域。

返回值:成功时返回0;失败时返回相应的错误码。

⑦ mls_from_string()

函数原型:

int (char*, struct *, );

参数含义:str表示修改之后的值;context表示相应的安全上下文;gfp_mask表示内存分配的标志。

函数功能:根据字符串str设置context安全上下文中的MLS域。

返回值:成功时返回0;失败时返回相应的错误码。

⑧ mls_range_set()

函数原型:

int (struct *,struct *);

参数含义:context表示待修改的安全上下文;range表示待设置的安全域的值。

函数功能:将参数range指定的安全域拷贝到相应的安全上下文结构体中。

返回值:成功时返回0;失败时返回相应的错误码。

⑨ mls_setup_user_range()

函数原型:

int (struct*, struct *,

struct *);

参数含义:fromcon表示修改之前的安全上下文;user表示表示用户的属性;usercon表示用户的安全上下文。

函数功能:根据指定的参数修改用户安全上下文中的安全级别的相关信息。

返回值:成功时返回0;失败时返回相应的错误码。

⑩ mls_convert_context()

函数原型:

int (struct*,struct *,

struct *);

参数含义:oldp表示旧的策略库;newp表示新的策略库;c表示待修改的安全上下文。

函数功能:将安全上下文结构体c中的MLS域由oldp中指定的值转换为newp中指定的值。

返回值:成功时返回0;失败时返回相应的错误码。

11 mls_compute_sid()

函数原型:

int (struct*,struct *,,,struct *,);

参数含义:scontext表示源安全上下文;tcontext表示目标安全上下文;tclass表示客体类别;specified表示访问向量的类型;newcontext表示新生成的安全上下文;sock表示一个标志。

函数功能:根据访问向量的类型来设置新的安全上下文中的安全级别。

返回值:成功时返回0;失败时返回相应的错误码。

12 mls_export_netlbl_lvl()

函数原型:

void (struct*,

struct *);

参数含义:context表示一个安全上下文;secattr表示网络标记安全属性。

函数功能:将MLS的敏感级别导出到网络标记中。

返回值:无。

13 mls_import_netlbl_lvl()

函数原型:

void (struct*,

struct *);

参数含义:context表示一个安全上下文;secattr表示网络标记安全属性。

函数功能:将网络标记的MLS敏感级别拷贝到安全上下文中。

返回值:无。

14 mls_export_netlbl_cat()

函数原型:

int (struct*,

struct *);

参数含义:context表示一个安全上下文;secattr表示网络标记安全属性。

函数功能:拷贝安全上下文中的低MLS类别到网络标记的MLS类别域中。

返回值:成功时返回0;失败时返回相应的错误码。

15 mls_import_netlbl_cat()

函数原型:

int (struct*,

struct *);

参数含义:context表示一个安全上下文;secattr表示网络标记安全属性。

函数功能:拷贝网络标记的安全属性到selinux的安全上下文中。

返回值:成功时返回0;失败时返回相应的错误码。返回搜狐,查看更多

阅读 ()
平台声明
该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。