0
点赞
收藏
分享

微信扫一扫

Android系统10 RK3399 init进程启动(二十五) SeAndroid 安全上下文文件

配套系列教学视频链接:

      ​​安卓系列教程之ROM系统开发-百问100ask​​

说明

系统:Android10.0

设备: FireFly RK3399 (ROC-RK3399-PC-PLUS)

前言

本章节介绍SeAndroid中常见的几个安全上下文文件。

一,安全上下文文件

在Android源码中会存在几个重要的上下文文件, 用来描述系统和属性,服务等的上下文信息, 路径在system/sepolicy


file_contexts



根系统中所有文件的安全上下文, 如/system/bin, /system/etc等文件,源码路径如: system/sepolicy/private/file_contexts



property_contexts



属性的安全上下文,源码路径如: system/sepolicy/private/property_contexts



genfs_contexts



Generalized filesystem虚拟文件系统安全上下文,如proc, sysfs,debugfs文件系统,源码路径如: system/sepolicy/private/genfs_contexts



service_contexts   



service文件安全上下文,用于为 Android Binder 服务分配标签,以便控制哪些进程可以为相应服务添加(注册)和查找(查询)Binder 引用。在启动期间,servicemanager 进程会读取此配置,HIDL机制出现后,就有两个,源码路径: 

system/sepolicy/private/hwservice_contexts

system/sepolicy/private/service_contexts



mac_permission.xml



用于根据应用签名和应用软件包名称(后者可选)为应用分配 seinfo 标记。随后,分配的 seinfo 标记可在 seapp_contexts 文件中用作密钥,以便为带有该 seinfo 标记的所有应用分配特定标签。在启动期间,system_server 会读取此配置, 源码路径为: system/sepolicy/private/mac_permissions.xml



seapp_contexts



app安全上下文,用于描述apk安装之后的目录文件和 /data/data 目录分配标签。在每次应用启动时,zygote 进程都会读取此配置;在启动期间,installd 会读取此配置。源码路径如: system/sepolicy/private/seapp_contexts


Android 8.0 之后使用了新的treble项目, 分区分为平台和非平台:

Android系统10 RK3399 init进程启动(二十五) SeAndroid 安全上下文文件_瑞星微RK3399 

selinux相关上下文和策略文件也被分成平台和非平台,system/sepolicy/Android.mk中有说明:

system/sepolicy/private:平台私有规则,不会向vendor部分暴露。里面包含了各种策略控制te文件,以及上面提到的上下文文件。

system/sepolicy/public: 平台共有策略的全部定义,里面包含了各种策略控制te文件,

system/sepolicy/vendor 厂商规则,可引用public的规则,不能引用private的规则

device/manufacturer/device-name/sepolicy 厂商自定义的规则,包括如上的vendor部分

一般我们开发都只修改厂商device里面定义的规则,修改平台里面的策略很容易出错,而且很难去找出问题点。

以上scontext文件都在编译之后被放到根文件系统中的以下目录:

 # ls /system/etc/selinux/

mapping                             plat_mac_permissions.xml  plat_service_contexts

plat_and_mapping_sepolicy.cil.sha256 plat_property_contexts     selinux_denial_metadata

plat_file_contexts                   plat_seapp_contexts

plat_hwservice_contexts               plat_sepolicy.cil

# ls /vendor/etc/selinux/

plat_pub_versioned.cil                 vendor_file_contexts       vendor_seapp_contexts

plat_sepolicy_vers.txt                  vendor_hwservice_contexts  vendor_sepolicy.cil

precompiled_sepolicy                  vendor_mac_permissions.xml  vndservice_contexts

precompiled_sepolicy.plat_and_mapping.sha256   vendor_property_contexts

特别要说明的几个文件: 

plat_sepolicy.cil: 所有平台策略转成cil,会在init启动的时候进行动态编译, 由很多的te文件组合而来

vendor_sepolicy.cil: 所有厂商策略转成cil,会在init启动的时候进行动态编译, 由很多的te文件组合而来

 


举报

相关推荐

0 条评论