核心文件分析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;失败时返回相应的错误码。返回搜狐,查看更多