Selinux Context上下文

2025博客之星年度评选已开启 10w+人浏览 612人参与

Selinux Context上下文

前面有提到主体,客体,te文件 等等。

也就是说某个进程(主体)对(客体)资源会有(哪些)权限(动作)

这里需要搞明白:
谁是主体,谁能成为主体,我怎么知道某个东西是主体,同理,客体以及权限动作也是如此。
在android系统中,这个问题是通过label标签来解决。我们称这个标签为Selinux Context上下文。
简称为scontext.
换句话说,安卓系统中的每一个主体和客体对象,都会有一个scontext上下文件,它是一个label字符串,安卓系统中需要有对此有一个规定:

主体的scontext是u:r:xxx:s0, (看到类似这个scontext就知道它是属于主体的标签), 一般 这个xxx就是模块名称,如init, adbd, vold等

客体的scontext是u:object_r:xxx:s0, (看到类似这个scontext就知道它是属于客体的标签), 这个xxx一般指的就是MAC模型中的客体类型资源文件, 如/dev/light0

配合te文件的规定策略:比如:进程init对存放在/dev/light0的这个文件有open和read的权限
有可能进程init对存放在/dev/light0的这个资源,就没有有写入的权限(如果te文件没有规定的话)

换个角度思考,如果想在一个te文件中描述主体对客体的行为动作,主体如何描述,客体又如何描述,所以肯定是需要一些字符串去标识和定义它们,这就是需要打标签的原因。

关于context_file
前面已经讲了scontext,了解了什么样的标签是主体以及客体,那现在又出现一个问题,我们在哪里定义这个标签?就是我们这节要讲的context_file,上下文文件。
在这里插入图片描述
注意:系统上的所有的文件,全部都需要打上上下文标签,每个文件都需要有标签定义。

那么问题来了,现在所有的标签都已经准备好了,有file_contexts, genfs_contexts,service_contexts,seapp_contexts,property_contexts,也清楚 我们需要对每个客体所需要的标签是在对应的context_file文件中进行标签的定义,但这只是定义性的。我们还需要知识一点,对这个客体来说,肯定是需要有一个角色(是谁)来给这个客体赋予context_file文件中定义的标签label

在安卓系统中,一般是通过一些SecurityServer进程,如init进程(但不仅仅只有它), 它可以将上下文标签中的定义,给对应的文件打上标签(上图中也包含了打标签的过程)。

(知识扩展:这里针对的是客体,但对主体的上下文标签又是在哪里呢?主体在运行之前也是一个文件,所以也需要拥有上下文里的某一个标签)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值