Android 车机开发 ServiceManager Selinux 权限配置说明

添加编译时Lunch option aosp_car_x86_64-eng

\device\generic\car\vendorsetup.sh

在文件最后添加

add_lunch_combo aosp_car_x86_64-eng

 

 

Selinux两种模式

Enforcing:强制模式,SELinux 运作中,且已经正确的开始限制 domain/type

Permissive:宽容模式,SELinux 运作中,仅会有警告讯息并不会限制 domain/type 的存取

userdebug 版本开机后,可以通过adb命令来查看或设置SELinux模式(设置后需重启shell才真正生效,手机重启后恢复),可以用此方法排除问题:

 adb shell getenforce,        #会返回 Enforcing 或 Permissive 
 adb shell setenforce 1或0,   #设置其为 Enforcing 或 Permissive 

 

ServiceManager.addService后添加selinux权限

例如服务名为“com.abc” ServiceManager.addService("com.abc", xxx);

  1. /packages/services/Car/car_product/sepolicy/public/service.te

添加

type abc_service, app_api_service, service_manager_type;

定义服务名称和属性

  1. /packages/services/Car/car_product/sepolicy/private/service_contexts.te

添加

com.abc  u:object_r:abc_service:s0

用于为 Android Binder 服务分配标签,以便控制哪些进程可以为相应服务添加(注册)和查找(查询)Binder 引用。在启动期间,servicemanager 进程会读取此配置。

  1. /packages/services/Car/car_product/sepolicy/private/carservice_app.te

添加

allow carservice_app abc_service:service_manager add;

允许carservice_app 中调用添加ServiceManager.addService("com.abc", xxx); 添加abc_service

说明

以上是参照CarService以及以下三项东拼西凑的结果๑乛◡乛๑

在 /system/sepolicy/private/untrusted_app_all.te

中有一句为

allow untrusted_app_all app_api_service:service_manager find;

允许普通app find app_api_service,

在/system/sepolicy/private/app_neverallows.te 中

neverallow all_untrusted_apps service_manager_type:service_manager add;

禁止不受信任的应用添加系统服务

在/system/sepolicy/private/priv_app.te

neverallow priv_app service_manager_type:service_manager add;

禁止特权应用程序添加系统服务

 

问题解决:

确认是 SELINUX 相关之后就可以抓 log 查看 log 文件中的 avc: log

标志性 log: avc: denied { 操作权限 } for pid=7201 comm=“进程名” scontext=u:r:源类型:s0 tcontext=u:r:目标类型:s0 tclass=访问类型 permissive=0

在相应源类型.te 文件,添加如下格式的一行语句:(结尾别忘了分号) 格式:allow 源类型 目标类型:访问类型 {操作权限};

如下: 07-10 14:06:32.780 9043 9043 W com.filemanager: type=1400 audit(0.0:104): avc: denied { read } for name="u:object_r:curef_set_prop:s0" dev="tmpfs" ino=1334 scontext=u:r:platform_app:s0:c512,c768 tcontext=u:object_r:curef_set_prop:s0 tclass=file permissive=0

可以得到如下 sepolicy:添加到 platform_app.te 文件 allow platform_app curef_set_prop : file { read };

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yinhunzw

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值