Android SELinux开发入门指南之如何增加Native Binder Service权限

只愿长相守 提交于 2020-01-21 03:14:08

  Android SELinux开发入门指南之如何增加Native Binder Service权限


前言

  Android的妈咪谷歌为了解决Android系统一直让人诟病的安全问题,在Android 4.4以后强制引入了SELinux安全管理。SELinux虽然可以将安全提升一个层级,但是有时候的实际效果确实杀敌一千,自损八百给开开发造成许多的困难。Android Binder的重要性,这个无需多言了,为了开发的必要性我们经常需要添加一些Native Binder Service来实施一些功能,但是经常会出现下述截图中的一些avc denied的错误,如下:
在这里插入图片描述

注意:这里的实际操作是在Android 8版本上面进行的。



正式开干

上述就以如下实际案例例说明,这里的错误主要是添加一个Native Binder Service时被SELinux拦截导致,提示如下错误信息:

E/SELinux (  261): avc:  denied  { add } for service=PaxApiService scontext=u:r:init:s0 tcontext=u:object_r:default_android_service:s0 tclass=service_manager

这个错误主要是Android ServiceManager添加Native Service没有配置SELinux权限导致,伪代码如下:

 sp<IServiceManager> sm = defaultServiceManager();
 status_t ret = 0; 

 if (srv == NULL) {
     setEventCB(putEvent);
     srv = new PaxApiService();
     ret = sm->addService(String16("PaxApiService"), srv);
 } 

由于现在手头上SELinux的启用是在展讯平台,所以这里就以以展讯平台来说明,其具体的步骤如下,读者可以根据实际情况切换成你实际开发的相关目录或者文件夹:

1. vi编辑device/sprd/sharkle/common/plat_sepolicy/private/service_contexts在其最后添加如下规则:

#add for PaxApiService
PaxApiService                     u:object_r:PaxApiService_service:s0

2. vi编辑device/sprd/sharkle/common/plat_sepolicy/public/service.te在其最后添加如下规则:

#type for PaxApiService
type PaxApiService_service, service_manager_type;

3. vi编辑device/sprd/sharkle/common/sepolicy/system_server.te在其最后添加如下规则:

#add for PaxApiService
allow system_server PaxApiService_service:service_manager { add find };

4. vi编辑device/sprd/sharkle/common/sepolicy/platform_app.te在其最后添加如下规则:

#add for PaxService
allow platform_app PaxApiService_service:service_manager { find };

5. 最后根据在使用中报什么avc的错误,然后再按照规则添加相关规则,即将上述改动添加完成以后,编译vendorimage,然后烧录启动测试,根据logcat -b evnets | grep avc查看还有什么没有SELinux权限问题的。



结语

修行至此,恭喜读者你已经开启了Android SELinux开发入门指南之如何增加Native Binder Service权限征程,此时的你对于添加Native Binder Service已经是了然于心了,畅通无阻,来去无踪影了。此时的你可以一剑走天下了,为师的必杀器已经倾囊相授了。各位江湖见。



写在最后

  各位读者看官朋友们,Android SELinux开发入门指南之如何增加Native Binder Service权限问题已经全部完毕,希望能吸引你,激活发你的学习欲望和斗志。在最后麻烦读者朋友们如果本篇对你有帮助,关注和点赞一下,当然如果有错误和不足的地方也可以拍砖。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!