selinux策略文件的编译与加载

您所在的位置:网站首页 sepolicy未被正确加载是什么 selinux策略文件的编译与加载

selinux策略文件的编译与加载

2024-04-05 22:17| 来源: 网络整理| 查看: 265

注:本文写于2020年,基于Android11,Android12之后代码有些许变化,但是代码逻辑还是没变.

本文分析了selinux策略文件 在开机时的加载过程.selinux文章很多,写这个的应该不多.

一、编译 用法1:

编译selinux

make sepolicy -j48 或 make selinux_policy -j48

把生成的文件 \out\target\product\XXXX\obj\ETC\vendor_sepolicy.cil_intermediates\vendor_sepolicy.cil push(out\target\product\XXXX\vendor\etc\selinux\vendor_sepolicy.cil)到 /vendor/etc/selinux 目录下

注:当前以规则文件 vendor_sepolicy.cil 为例。

备份后删除/odm/etc/selinux/precompiled_sepolicy文件

重启手机后生效

用法2(推荐):

编译selinux

make selinux_policy -j48

make编译大约 3~17分钟 如果make编译过了,可使用ninja编译,不到一分钟就可以编译完成

time prebuilts/build-tools/linux-x86/bin/ninja -f out/combined-XXXX.ninja -j48 selinux_policy

time prebuilts/build-tools/linux-x86/bin/ninja -f out/combined-XXXX.ninja -j48 sepolicy.recovery

备份/odm/etc/selinux/precompiled_sepolicy文件

把生成的文件out\target\product\klein\odm\etc\selinux\precompiled_sepolicy,push到/odm/etc/selinux/目录下

重启手机后生效

注:App上下文seapp_contexts,文件上下文 file_contexts ,属性上下文 property_contexts 的修改生效方法,见文末

二、原理 原理简介:

手机启动后,进入加载selinux政策流程,会使用/odm/etc/selinux/目录下的两个sha256文件中的值分别同/system/etc/selinux,/product/etc/selinux 目录的sha256文件中的值对比,如果都相等,则加载/odm/etc/selinux/目录下的/odm/etc/selinux/precompiled_sepolicy 预编译的selinux二进制政策文件。如果不同,则使用/system/etc/selinux 和 /vendor/etc/selinux 等目录下的文件重新编译 selinux二进制政策文件,然后加载新的 sepolicy 文件。

详解 1、selinux政策加载流程(加载sepolicy 二进制文件流程) 函数调用流程:

system/core/init/main.cpp

​ ---> selinux.cpp ---> int SetupSelinux(char** argv)

​ ---> SelinuxInitialize();

​ ---> LoadPolicy()

​ ---> LoadSplitPolicy()

​ ---> FindPrecompiledSplitPolicy(std::string* file) // 关键函数

函数调用流程讲解:

开机启动时会加载selinux政策。main.cpp 中调用 selinux.cpp 中的 int SetupSelinux(char** argv) 函数,SetupSelinux 调用SelinuxInitialize(),SelinuxInitialize() 调用 LoadPolicy() 函数

int SetupSelinux(char** argv) { ··· // Set up SELinux, loading the SELinux policy. SelinuxSetupKernelLogging(); SelinuxInitialize(); ··· return 1; } void SelinuxInitialize() { ··· LOG(INFO)


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3