Android8.1 新增系统自定义服务一 (SELinux权限)

2024-06-05 16:18

本文主要是介绍Android8.1 新增系统自定义服务一 (SELinux权限),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

           一开始并没有注意到android8.0以后和之前有多大区别,知道最近有需求要求增加一个自定义服务,一直没有生效报avc权限问题

在SystemServer startOthreService中

ServiceManager.addService () 出现了AVC权限:

SELinux: avc denied {add} for service=gesture pid=1274 uid =1000 scontext=u:r:system_server:s0 tcontxt=u:object_r:xxx_service:s0 tclass=service_manager permissive =0

 

 

android 8.0之后在只能在device/xxx/sepoilcy中添加avc权限

/sysetm/sepolicy/Android.mk 编译的out生成路径在 out/target/product/xxx/vendor/etc/selinux/

 

修改方法

一:

修改文件: devices/设备名称/sepolicy/

platform_app.te   增加 :  allow platform_app xxx_serivce:service_manager find;

priv_app.te       增加 :      allow priv_app xxx_serivce:service_manager find;

radio.te                增加 :       allow radio  xxx_serivce:service_manager { add find };

service.te                增加 :     type  xxx_service,     service_manager_type;

system_app.te      增加 :       allow system_app  xxx_serivce:service_manager  add;

system_server.te    增加 :     allow system_server xxx_serivce:service_manager  { add find };

private/service_contexts       增加 :  test                    u:object_r:xxx_service:s0                       //test                     是Context 中定义的名字

 

 

 二 :

1.      可以直接在源码根目录下面make -j22

最主要的是system.img 和boot.img

 

2.   1 )  在源码目录下面make selinux_policy -j5   更新seploicy策略文件

      2)   make vendorimage   systemimage -j22  

      3 ) 使用fastboot flash vendor  vendor.img  

                   fastboot flash system system .img    刷入

 

 

刷完之后可以到 /etc/selinux/plat_service_contexts  看下问题是否改正

 

--------------------------------------------------------------------------

我用的是pixel xl  aosp编译marlin所以不能修改vendor.img  尝试了一个星期

尝试过 :

1. 生成自定义vendor.img

https://blog.csdn.net/u011341111/article/details/83446318

2. 尝试过在init.rc 中copy nonplat_sepolicy.cil到vendor 也失败了

最后通过另外一种方法解决了这个问题: 公司的项目都会生成vendor.img 所以使用上面的修改比较规范

 

下面提供不用修改devices/设备名称/sepolicy/ *.te 的方法

直接修改 :android-8.1.0_r15/system/sepolicy/private/service_contexts 

window                                    u:object_r:window_service:s0
gesture                                    u:object_r:window_service:s0
*                                         u:object_r:default_android_service:s0
gesture 就是Context定义的service name
修改之后需要在源码目录下面make selinux_policy -j11
会生成out/target/product/marlin/system/etc/selinux/plat_service_contexts
把这个文件adb root && adb remount && adb push plat_service_contexts /system/etc/selinux/ 重启手机或者make systemimage 然后使用fastboot flash system system.img 就可以了


 

 

这篇关于Android8.1 新增系统自定义服务一 (SELinux权限)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1033554

相关文章

Mac系统下卸载JAVA和JDK的步骤

《Mac系统下卸载JAVA和JDK的步骤》JDK是Java语言的软件开发工具包,它提供了开发和运行Java应用程序所需的工具、库和资源,:本文主要介绍Mac系统下卸载JAVA和JDK的相关资料,需... 目录1. 卸载系统自带的 Java 版本检查当前 Java 版本通过命令卸载系统 Java2. 卸载自定

SpringBoot服务获取Pod当前IP的两种方案

《SpringBoot服务获取Pod当前IP的两种方案》在Kubernetes集群中,SpringBoot服务获取Pod当前IP的方案主要有两种,通过环境变量注入或通过Java代码动态获取网络接口IP... 目录方案一:通过 Kubernetes Downward API 注入环境变量原理步骤方案二:通过

基于Python实现一个简单的题库与在线考试系统

《基于Python实现一个简单的题库与在线考试系统》在当今信息化教育时代,在线学习与考试系统已成为教育技术领域的重要组成部分,本文就来介绍一下如何使用Python和PyQt5框架开发一个名为白泽题库系... 目录概述功能特点界面展示系统架构设计类结构图Excel题库填写格式模板题库题目填写格式表核心数据结构

如何自定义一个log适配器starter

《如何自定义一个log适配器starter》:本文主要介绍如何自定义一个log适配器starter的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求Starter 项目目录结构pom.XML 配置LogInitializer实现MDCInterceptor

Linux系统中的firewall-offline-cmd详解(收藏版)

《Linux系统中的firewall-offline-cmd详解(收藏版)》firewall-offline-cmd是firewalld的一个命令行工具,专门设计用于在没有运行firewalld服务的... 目录主要用途基本语法选项1. 状态管理2. 区域管理3. 服务管理4. 端口管理5. ICMP 阻断

如何搭建并配置HTTPD文件服务及访问权限控制

《如何搭建并配置HTTPD文件服务及访问权限控制》:本文主要介绍如何搭建并配置HTTPD文件服务及访问权限控制的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、安装HTTPD服务二、HTTPD服务目录结构三、配置修改四、服务启动五、基于用户访问权限控制六、

Windows 系统下 Nginx 的配置步骤详解

《Windows系统下Nginx的配置步骤详解》Nginx是一款功能强大的软件,在互联网领域有广泛应用,简单来说,它就像一个聪明的交通指挥员,能让网站运行得更高效、更稳定,:本文主要介绍W... 目录一、为什么要用 Nginx二、Windows 系统下 Nginx 的配置步骤1. 下载 Nginx2. 解压

如何确定哪些软件是Mac系统自带的? Mac系统内置应用查看技巧

《如何确定哪些软件是Mac系统自带的?Mac系统内置应用查看技巧》如何确定哪些软件是Mac系统自带的?mac系统中有很多自带的应用,想要看看哪些是系统自带,该怎么查看呢?下面我们就来看看Mac系统内... 在MAC电脑上,可以使用以下方法来确定哪些软件是系统自带的:1.应用程序文件夹打开应用程序文件夹

windows系统上如何进行maven安装和配置方式

《windows系统上如何进行maven安装和配置方式》:本文主要介绍windows系统上如何进行maven安装和配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录1. Maven 简介2. maven的下载与安装2.1 下载 Maven2.2 Maven安装2.

Druid连接池实现自定义数据库密码加解密功能

《Druid连接池实现自定义数据库密码加解密功能》在现代应用开发中,数据安全是至关重要的,本文将介绍如何在​​Druid​​连接池中实现自定义的数据库密码加解密功能,有需要的小伙伴可以参考一下... 目录1. 环境准备2. 密码加密算法的选择3. 自定义 ​​DruidDataSource​​ 的密码解密3