会报错,tag 为 avc , 如:

12-10 13:48:12.053 E/SELinux ( 3838): avc:  denied  { add } for service=gtv.system.commonservice scontext=u:r:system_app:s0 tcontext=u:object_r:default_android_service:s0 tclass=service_manager
12-10 13:48:12.053 E/ServiceManager( 3838): add_service('gtv.system.commonservice',5e) uid=1000 - PERMISSION DENIED
12-10 13:48:12.053 D/AndroidRuntime( 6259): Shutting down VM
12-10 13:48:12.055 E/AndroidRuntime( 6259): FATAL EXCEPTION: main
12-10 13:48:12.055 E/AndroidRuntime( 6259): Process: com.gtv.commonservice, PID: 6259
12-10 13:48:12.055 E/AndroidRuntime( 6259): java.lang.RuntimeException: Unable to create service com.gtv.commonservice.service.SystemCommonService: java.lang.SecurityException

Linux 安全

作为移动计算环境的基础,Linux 内核为 Android 提供了一些关键的安全功能,其中包括:

  • 基于用户的权限模式
  • 进程隔离
  • 用于实现安全 IPC 的可扩展机制
  • 能够移除内核中不必要的和可能不安全的部分

作为一种多用户操作系统,Linux 内核的一个基本安全目标是将用户资源彼此隔离开来。Linux 的安全理念是防范用户资源之间相互侵扰。因此,Linux 可以:

  • 防止用户 A 读取用户 B 的文件
  • 确保用户 A 不会占用用户 B 的内存
  • 确保用户 A 不会占用用户 B 的 CPU 资源
  • 确保用户 A 不会占用用户 B 的设备(例如,电话、GPS、蓝牙)

使用工具生成需添加的 selinux 赋权命令 adb pull /sys/fs/selinux/policy

adb logcat -b all -d | audit2allow -p policy

对于972/Android 9.0 需要使用源码中的audit2allow external/selinux/prebuilts/bin/audit2allow -p policy 或者 echo "avc: denied { add } for service=gtv.system.commonservice scontext=u:r:system_app:s0 tcontext=u:object_r:default_android_service:s0 tclass=service_manager" | audit2allow -p policy

执行后,提示下面这样的内容,提示在什么文件中添加赋权命令

1. ============= system_app ==============

allow system_app default_android_service:service_manager add;

其中 policy 为编译源码后生成的文件,不需要每次都pull出来,验证 SELinux audit2allow 工具安装 在 Ubuntu 14 下
sudo apt-get install policycoreutils 在 Ubuntu 18 下 sudo apt-get install policycoreutils-python-utils

Copyright © tracyliu-FE 2021 all right reserved,powered by Gitbook文件修订时间: 2022-12-06 21:39:37

results matching ""

    No results matching ""