Android SELinux

2023-11-17

Google参考链接:https://source.android.com/docs/core/architecture/aidl/aidl-hals#sepolicy

A. 通信框架SE文件修改 public /attributes  vendor/hal_foo.te

B. server端SE文件修改 vendor/service.te  vendor/service_contexts(实例安全属性申明)

vendor/hal_foo_default.te(新建,配置server端进程的权限) vendor/file_contexts

C.client端SE文件修改

private/system_server.te

system侧进程安全策略配置放在private目录下

vendor侧进程安全策略配置放在vendor目录下

hal_attribute(xxx)

宏,定义hal服务相关的hal属性:hal_xxx, hal_xxx_client 和 hal_xxx_server 两种属性

当新的Hal(服务)类型创建时,需要添加对应的HAL attributes

属性定义方式

 放public目录下

 attribute hal_foo;
  attribute hal_foo_client;
  attribute hal_foo_server;

或者通过宏定义:

hal_attribute(foo)

域domain 具有访问某类资源的集合,比如访问foo service,需要具备hal_foo_client属性。所有具有hal_foo_client权限的client端进程都同属一个域?

hal_foo_client

type示例,hal服务客户端属性.

hal_foo_server 

示例,hal服务服务端属性。

hal_client_domain 

宏,将domain域和(hal_xxx_client )属性关联,system_server作为Hal服务客户端示例:hal_client_domain(system_server, hal_foo)

hal_server_domain

宏,将domain域和(hal_xxx_server )属性关联,A HAL server关联域示例:hal_server_domain(my_hal_domain, hal_foo)

hal_foo

以上宏中,hal_foo实际不是sepolicy 对象,而是一个符号,通过它引用到hal_foo_client 和 hal_foo_server等属性.

hal_foo_server hal层服务端,通过他来发现和注册对应的新的hal服务?

hal_foo_service

hal服务对应的新建类型,需要通过以下宏和相关属性关联:

hal_attribute_service(hal_foo, hal_foo_service)。关联后,具有hal_foo_server属性的进程能注册到hal作为服务。具有hal_foo_client属性的进程能从hal层获取到服务

rules The enforcement of these registration rules is done by the context manager (servicemanager) 这些注册规则是通过servicemanager强制保证的

所以,为一个服务添加完整的SELinux权限的过程是这样的:

    public/attributes:
    //1.属性定义 define hal_foo, hal_foo_client, hal_foo_server
    hal_attribute(foo)


    public/service.te
    //2.hal服务类型定义,逗号后表示继承 define hal_foo_service
    type hal_foo_service, hal_service_type, protected_service, service_manager_type


    public/hal_foo.te:
    //3.sepolicy定义 allow binder connection from client to server
    binder_call(hal_foo_client, hal_foo_server)
    binder_call(hal_foo_server, hal_foo_client) //服务回调到客户端要配

    //4.hal类型和服务关联
    // allow client to find the service, allow server to register the service
    hal_attribute_service(hal_foo, hal_foo_service)

    //5.允许hal服务通过binder连接service_manager 
    // allow binder communication from server to service_manager
    binder_use(hal_foo_server)
    //or以下?
    binder_call(hal_foo_server, servicemanager)
    binder_call(hal_foo_client, servicemanager)



    private/service_contexts:
    //6.将服务实例名和服务类型绑定 bind an AIDL service name to the selinux type
    android.hardware.foo.IFooXxxx/default u:object_r:hal_foo_service:s0


    private/<some_domain>.te:
    // let this domain use the hal service
    binder_use(some_domain)
    hal_client_domain(some_domain, hal_foo)

    vendor/<some_hal_server_domain>.te
    // let this domain serve the hal service
    hal_server_domain(some_hal_server_domain, hal_foo)

hal_attribute_service宏包括以下操作:

allow hal_foo_server hal_foo_service:service_manager {add find}

allow hal_foo_client hal_foo_service:service_manager {find}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android SELinux 的相关文章

随机推荐

  • 【小沐学NLP】Python实现聊天机器人(ChatterBot,代码示例)

    NLP开发系列相关文章编写如下 1 小沐学NLP Python实现词云图 2 小沐学NLP Python实现图片文字识别 3 小沐学NLP Python实现中文 英文分词 4 小沐学NLP Python实现聊天机器人 ELIZA 5 小沐学
  • 矩阵复习三-正交矩阵

    如果ATA I 则A为正交矩阵 A为正交矩阵 则有 A的列向量组为一组标准正交基 若A B都为n阶正交矩阵 则有 A 1或 A 1 A的列向量组为一组标准正交基 A 1 AT A 1 AT也是正交矩阵 AB也是正交矩阵 Rn空间的线性变换矩
  • 创建分区表及分区索引(本地)

    创建表空间 SQL gt create tablespace myTableSpace 1 datafile dat DBData oradata NACEC myTableSpace1 dbf size 100m Tablespace c
  • ControlNet精准控制AI绘画教程

    ControlNet精准控制AI绘画教程 AI绘画相信大家都已经不陌生了 虽然AI绘画出图很方便 但是要让其生成一副自己满意的图 还是需要费一番心思 有时候多次调整关键词就是生成不了自己想要的画面 这些一直以来都是AI绘画的痛点但就在最近
  • Vue前端框架入门,真好学,都给我学起来

    前言 今天要分享的知识是Vue前端框架 码字不易 点个赞 转载请说明 开发工具 HBuilderX Eclipse 目录 一 Vue是什么 二 库和框架的区别 三 MVVM介绍 四 cdn的下载及入门案例 定义边界和绑定边界 案例二 数据双
  • bigdecimal加减乘除运算方法

    BigDecimal是Java中的一个类 用于处理高精度的十进制数值计算 在进行浮点数计算时 由于浮点数的精度有限 可能会出现精度丢失的情况 而BigDecimal可以避免这种情况的发生 因此在需要高精度计算的场合 使用BigDecimal
  • CentOS7安装oracle19c教程

    参考 https zhuanlan zhihu com p 571737575 1创建组和用户 vi etc hosts root rhel cat etc redhat release Red Hat Enterprise Linux S
  • 使用designer写pyqt程序

    1 创建一个qt程序 复制其ui文件至python文件夹 ui界面如下 2 vscode 配置pyqt集成环境 右击ui文件进行编译 生成UI mainwindow py文件
  • LNK2019: 无法解析的外部符号 整理

    无法解析的外部符号是Windows下C 编译的常见链接错误 收集整理备忘 本文随遇到的问题长期更新 我目前遇到的错误可以分为3类 1 编译工具链修改了对应库函数的定义 2 编译参数导致定义和链接库不一致 3 库依赖冲突 4 未导入对应库 常
  • WiFi密码别问了,这神器帮你搞定一切!

    我们经常会遇见朋好去你家做客 第一句就是问你家WiFi 密码 如果密码负责不仅说的麻烦 还有可能暴露自己的密码 毕竟很多人密码都喜欢设置的一样 但是今天这个GitHub 工具WiFi Card完全就能解决这个问题 这个工具就是把 WiFi
  • C++小白课本练习4

    练习目录 ConsoleApplication1 h 头文件定义类 Student myDate Student 类 myDate 类 第二章课本测试3验证类功能的驱动程序 cpp 第二章课本测试4使用指针的方式驱动程序 cpp 第二章课本
  • mysql数据库中文乱码的问题

    今天下午 在Qt中往mysql数据库中插入数据时 中文显示乱码 如下图所示 开始以为是数据库字符编码的问题 1 使用set character set database utf8 在命令行上修改字符编码 但是重启mysql之后 字符编码并没
  • Centos7系统防火墙使用教程【详解】

    CentOS 7是一种常见的Linux操作系统 防火墙作为网络安全的第一道防线 对于服务器的安全至关重要 本文将介绍CentOS 7系统中防火墙的使用教程 包括如何开启 关闭 配置以及防火墙规则的添加和删除 一 查看防火墙状态 在开始操作之
  • 关于Android Service真正的完全详解,你需要知道的一切

    Service全部内容基本会在本篇涉及到 我们将围绕以下主要知识点进行分析 Service简单概述 Service在清单文件中的声明 Service启动服务实现方式及其详解 Service绑定服务的三种实现方式 关于启动服务与绑定服务间的转
  • Verilog--CDC跨时钟域处理(快时钟域到慢时钟域)

    Verilog CDC跨时钟域处理 快时钟域到慢时钟域 CDC问题 单比特信号的跨时钟域问题 从快时钟域到慢时钟域 从慢时钟域到快时钟域 多比特信号的跨时钟域问题 异步FIFO 握手协议 DMUX 格雷码 双D触发器 今天先写单比特信号从快
  • 开始前准备

    开始前准备 一 环境预览 二 安装Ubuntu 三 安装arm gcc工具链 四 Ubuntu构建LiteOS所需要的工具链 五 安装STM32CubeMX软件 六 串口调试助手下载 七 ST Link和USB转TTL串口调试工具 一 环境
  • Express_2 Express Generator

    本文为课程笔记 总体来说 express generator可以帮助我们快速搭建一个express环境 首先 要将它安装在全局环境里 npm install express generator g 然后 就可以使用express 项目名 创
  • 数组入门练习:螺旋遍历二维数组

    NC38 螺旋矩阵 给出一个 n n n 行 m m m 列的二维数组 按螺旋的顺序返回矩阵中的所有元素 比如 输入为 1 2 3 4 5 6 7 8 9 输出为 1 2 3 6 9 8 7 4 5 观察上图
  • 关于mmsegmentation的自定义数据集格式的一些坑(2)

    这次又有任务要跑mmseg 我本意是拒绝的 奈何老板喜欢 mm系列的东西 那一套流程 真心玩不转 玩着玩着心就累了 mm系列和detectron差不多 要找其代码流转 都是要先看配置文件 比较麻烦 需要一定的经验 然后前面两篇都写了我是怎么
  • Android SELinux

    Google参考链接 https source android com docs core architecture aidl aidl hals sepolicy A 通信框架SE文件修改 public attributes vendor