千家信息网

Android中的SELinux怎么使用

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,今天小编给大家分享一下Android中的SELinux怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下
千家信息网最后更新 2026年11月02日Android中的SELinux怎么使用

今天小编给大家分享一下Android中的SELinux怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

一、SELinux资源访问基本概念

SELinux使用类型强制来改进强制访问控制。所有的主体(程序进程)对客体(文件/socket等资源)的访问都有一条TE规则来许可。当程序访问一个资源的时候,系统会搜索所有的TE规则集,并根据结果进行处理。这个规则集是由访问向量规则(AV, Access Vector)来描述的。

内核向外部暴露允许访问的资源权限,由TE来描述主体拥有什么样的访问权。SELinux定义了30个不同的客体类别:

security process system capability filesystem file dir fd lnk_file chr_file blk_file socket_file ...

每个客体类别都定义了操作许可,比如针对file有19个操作许可:

ioctl read write create getattr setattr lock relablefrom relableto append unlink link rename execute swapon quotaon mounton execute_no_trans entrypoint

这两个内容在后面介绍常用语法的时候会涉及到。所以对于file的操作许可,我们可以看到基本上是对文件的操作方法,所以程序调用这些功能的时候,系统会检查是否有一个TE规则,授予了该程序权限来使用该功能。

二、Android中的SELinux

2.1 开启SELinux

首先必须先开启SELinux功能,google提供了开启该选项的开关。在BoardConfig.mk里面会定义如下变量:

BOARD_SEPOLICY_DIRS += build/target/board/generic/sepolicy

对应路径下面就会有很多TE文件来描述进程对资源的访问许可。

2.2 声明类型

type 类型名称 type system_app;

2.3 关联类型和属性

有两种方法可以将某个类型跟某个属性关联起来。

一,在声明类型的时候就关联已经定义的属性。

type system_app, domain;

这个就在定义system_app的时候就将它跟已经定义的domain属性关联起来了。

typeattribute platform_app mlstrustedsubject;

如果已经定义了类型platform_app,可以用typeattribute将它和已经定义的mIstrustedsubject关联起来。

注意:所有的属性和类型都共用一个命名空间,所以命名的时候不要出现同名的属性和类型哦。

三、访问向量(AV)规则

AV用来描述主体对客体的访问许可。通常有四类AV规则:

allow:表示允许主体对客体执行许可的操作。

neverallow:表示不允许主体对客体执行制定的操作。

auditallow: 表示允许操作并记录访问决策信息。

dontaudit:表示不记录违反规则的决策信息,切违反规则不影响运行

通用的类型规则语法位:

allow platform_app debugfs:file { read ioctl };

表示类别为platform_app的程序进程,对debugfs类型的文件执行read和ioctl操作。

四、一些特殊的配置文件:

external/sepolicy/attributes -> 所有定义的attributes都在这个文件 external/sepolicy/access_vectors -> 对应了每一个class可以被允许执行的命令 external/sepolicy/roles -> Android中只定义了一个role,名字就是r,将r和attribute domain关联起来 external/sepolicy/users -> 其实是将user与roles进行了关联,设置了user的安全级别,s0为最低级是默认的级别,mls_systemHigh是最高的级别 external/sepolicy/security_classes -> 指的是上文命令中的class,个人认为这个class的内容是指在android运行过程中,程序或者系统可能用到的操作的模块 external/sepolicy/te_macros -> 系统定义的宏全在te_macros文件 external/sepolicy/*.te -> 一些配置的文件,包含了各种运行的规则

五、selinux有两种工作模式

"permissive":所有操作都被允许(即没有MAC),但是如果有违反权限的话,会记录日志
"enforcing":所有操作都会进行权限检查

六、其他

在te文件中经常出现如下的函数:

unix_socket_connect(platform_app, agpsd, mtk_agpsd);

这个其实是一个宏。它定义在文件名为te_macros的文件里面,经过全局搜索这个宏,发现如下定义:

 unix_socket_connect($1, qmuxd, qmux) allow qmux $1_qmuxd_socket:sock_file { getattr unlink }; ')

其实也是一个allow访问向量。

以上就是"Android中的SELinux怎么使用"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。

文件 类型 规则 关联 客体 属性 时候 程序 主体 资源 内容 权限 知识 篇文章 系统 功能 向量 类别 级别 进程 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网金融科技 南京欣网互联网络科技有限公司 科技互联网公司装修 互联网巨头反垄断金融科技 西安互联网科技 伴你行互联网科技有限公司 国外互联网科技网站 美国互联网前沿科技 哈尔滨新华互联网科技 青海省互联网新科技 哈尔滨屹滨互联网科技有限公司 互联网科技大奖都有哪些公司 伊宁互联网科技做什么的 银行科技岗属于互联网吗 启辰互联网科技 互联网科技股为什么大涨 互联网科技融合创新 陕西九四连强互联网科技有限公司 互联网的科技体现在哪里 保山浩联互联网科技有限公司 互联网与科技金融数据 与互联网科技公司 人人互联网科技是培训 上海电发互联网科技有限公司 阿里互联网科技公司 互联网金融中的现代科技 洛阳共同富裕互联网科技有限公司 好易买互联网科技 北京品多多互联网科技有限公司 互联网科技快速发展优美句子
0