SELinux_Treble学习记录

SELinux_Treble学习记录

参考文档:https://source.android.google.cn/security/selinux/images/SELinux_Treble.pdf

android-8.0在android框架上有了大的改动,引入了Treble元素,旨在让制造商以更低的成本更轻松、更快速地将设备更新到新版 Android 系统。其中一点就是SELinux的改动。

SELinux是一个用于控制路径、设备、文件、进程、socket的读写权限标签系统,这个标签也被称为context。

android-4.4至android7.0将全部的SELinux策略(platform 和 non-platform)build到了root目录下的一个文件中,这样一来每当有policy改动时SoC vendor和ODM partners就不得不改动boot.img(non-A/B devices)或system.img(A/B devices)。可想而知引起的改动之大。

android-8.0后实现了策略模块化,vendors和partners只需要改动涉及他们对应的分区内容。

android 设备的分区

在这里插入图片描述

分区归属说明是否必须
bootloader.imgODM用于启动kernelY
odm.imgODM包含设备特定代码和配置N
boot.imgandroid platform(kernel/ramdisk)包含linux kernel + android pacthesY
recovery.imgandroid platform刷机N
system.imgandroid platform包含多数android frameworkY
verdor.imgSOC Vendor包含 SoC特定代码和配置N
radioSOC Vendor包含专有调制N
oem.imgOEM包含DEM和运营商先关配置N

主要路径:

一、SElinux的toybox命令行

@ /external/toybox/toys/android/

设置当前 SELinux 模式:

@ /external/toybox/toys/android/setenforce.c
命令:setenforce 0,或者 setenforce permissive,设置为宽容模式。
命令:setenforce 1,或者 setenforce enforcing,设置为强制模式。
注意,前提是selinux 是 enable的。

获取当前 SELinux 模式:

@external/toybox/toys/android/getenforce.c
命令:getenforce,会获取到三种状态,Disable,Enforcing,Permissive。

其他命令

getprop、load_policy、log、restorecon、runcon、sendevent、setprop、start等。

二、selinux的配套命令行工具实现

@ external/selinux,
1)toybox命令调用的具体实现,@external/selinux/libselinux/
2)检测(chkcon)和执行(libsepol)二进制安全策略,@external/selinux/libsepol/
3)SELinux编译器,依赖libsepol,@external/selinux/checkpolicy/

三、android SELinux策略配置

@system/sepolicy/,该目录一般不允许修改。
编译后会包含 SELinux 内核安全策略,并涵盖上游 Android 操作系统。
包含:

  1. 上下文描述文件(xxx_contexts),为对象指定标签。
  2. 策略文件(*.te),用于定义域(domain)及其标签(lable)。
  3. Android.bp/.mk,build 逻辑。

四、自定义policy文件

@/device/manufacturer/device-name/sepolicy/
新增policy时需要在device目录下目录,然后注意修改/device/manufacturer/device-name/BoardConfig.mk以引用 sepolicy 子目录和每个新的policy文件。

内核中启用 SELinux

CONFIG_SECURITY_SELINUX=y

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值