IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> android 9.0 selinux 策略配置 -> 正文阅读

[移动开发]android 9.0 selinux 策略配置

主要配置:

(1)文件;

  • 在 file.te 中声明一个文件类型;
type my_file, file_type, data_file_type, core_data_file_type;
  • 在 file_contexts 文件中关联实际的文件路径和文件类型;
/data/my_file(/.*)?                 u:object_r:my_file:s0

注意 my_file 的类型,如果是data目录下的,要添加 core_data_file_type; 是 vendor目录下的,要添加vendor_file_type;

(2)服务;

  • 在 service.te 声明一个service类型;
type my_service, app_api_service, service_manager_type;
  • 在 service_contexts文件中关联 service 名字和 service 类型;
com.example.my_service      u:object_r:my_service:s0
  • 在 my_app.te 中添加规则,允许 my_app 添加 my_service到系统服务;
add_service(my_app, my_service)

只有添加为系统service时,才需要编写策略。

(3)应用;

  • 在seapp_contexts 中将app进程名和角色关联上
user=system seinfo=platform name=com.example.app1 domain=my_system_app type=app_data_file
user=_app seinfo=platform name=com.example.app2 domain=my_platform_app type=app_data_file
user=_app seinfo=cust name=com.example.app3 domain=my_untrust_app type=app_data_file
  • 如果没有合适角色,需要新建一个角色

my_system_app 可以参考系统的 system_app 复制一份,再修改;

my_platform_app 可以参考系统的 platform_app 复制一份,再修改;

seinfo=cust 是自定义seinfo,高通平台可以通过修改 vendor_mac_permissions.xml 文件,将应用签名和seinfo关联起来,这样可以为保留签名的第三方应用创建自定义角色。

seapp_contexts 中关联的是 app 的进程名,如果app 有多个进程,每个都要写一行。

(4)属性;

  • 在 property.te中声明一个属性类型
type my_prop, property_type, mlstrustedsubject;
  • 在 property_contexts文件中关联属性定义和类型
persist.my_prop.   u:object_r:my_prop:s0

编写规则:

按照 selinux 的规则写法,主题访问客体的方式。通常都是allow 方式。

allow my_app my_prop:property_service { set };
allow my_app my_prop:file r_file_perms;

selinux 定义了很多宏,简化策略写法。

说明
create_dir_perms读写目录
create_file_perms读写文件
r_dir_perms读取目录
r_file_perms读取文件
binder_call(A, B)?允许应用A bind服务B
add_service(A, B)允许应用A 添加服务B为系统服务
create_socket_perms创建网络套接字权限

Android 9.0 继承了 Android 8.1 的 Treble 设计,将 system 和 vendor 进行了隔离。

system 目录下应用要读取 vendor 属性或者执行 vendor 文件,会触发错误。

Android 9.0 定义了一系列 violators 属性,允许这种跨域访问:

属性说明
system_writes_vendor_properties_violators允许系统应用写vendor属性
socket_between_core_and_vendor_violators允许系统应用和vendor应用互相使用socket通信
system_executes_vendor_violators允许系统应用执行vendor应用。

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-10-20 12:36:02  更:2021-10-20 12:36:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 0:41:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码