Android系统下在te文件中为指定服务添加sepolicy权限
来源:互联网 发布:黑暗之魂2猎龙枪数据 编辑:程序博客网 时间:2024/05/23 01:25
【正文】
设备在播放视频时有异常,使用Logcat查看日志时发现了如下记录:
04-27 14:01:59.136 2825 2825 E SELinux : avc: denied { find } for service=display pid=3015 uid=1046 scontext=u:r:mediacodec:s0 tcontext=u:object_r:display_service:s0 tclass=service_manager permissive=0 04-27 14:01:59.136 2825 2825 I auditd : avc: denied { find } for service=display pid=3015 uid=1046 scontext=u:r:mediacodec:s0 tcontext=u:object_r:display_service:s0 tclass=service_manager permissive=0
从上方的Log中可以看出这个问题是因为mediacodec的sepolicy权限没有添加完善所致。具体的操作权限
从Log中可以看到是find权限,Source上下文
是mediacodec,Target上下文
是display_service,Target类
是service_manager。解决方法就是在te文件中为mediacodec添加上缺失的find权限。添加权限的格式为:
allow SourceContext TargetContext:TargetClass Permission;
在任何1个te文件中添加权限都可以,但为了保持格式一致,我最终选择在device/intel/sepolicy/dolby/mediacodec.te
文件中按上述格式添加上以下语句:
allow mediacodec display_service:service_manager find;
重新编译bootimage并烧写到设备上进行测试,问题得到解决。
【注意】
有时添加完一条权限后可能又会报另一种权限缺失,我们只需要按照上述方法再添加这种缺失的权限即可,直到系统不再报告sepolicy权限缺失为止。
【题外话】
前天因为少提交了一个device/intel/cherrytrail/r2_cht_ffd/
目录下的 patch,结果第二天测试组同事为设备烧入user
版本的镜像后发现所有音频相关的功能都无法正常工作了,而且整个系统都非常卡。因为我平时都是使用eng
版本进行测试,没有碰到过这个问题,所以第一反应就是这是权限没有添加成功导致。检查之后发现果然是这样:虽然我在device/intel/sepolicy/dolby/
目录下已经为Dolby音效添加了te文件,但在上文提到的r2_cht_ffd
路径下忘记了在BoardConfig.mk
文件中添加以下代码,所以实际上user版本的镜像中Dolby相关的sepolicy权限配置并没有被编译:
# Add sepolicy dir for Dolby audioBOARD_SEPOLICY_DIRS += device/intel/sepolicy/dolby
因为Dolby音效是整合到Android系统的AudioFlinger、NuPlayer、AudioServer等这些系统部件中的,所以当Dolby的权限忘记添加时就会使这些系统部件无法正常工作,从而整个Audio系统也就自然而然地挂掉了。
为Dolby添加好上方这条语句后,音频系统就又可以正常工作了。现在想想,一不小心就搞崩了Android音频系统,也真是刺激。
- Android系统下在te文件中为指定服务添加sepolicy权限
- SEAndroid中sepolicy/adbd.te策略文件分析
- Android中SeLinux权限 .te文件编写
- Android中SeLinux权限 .te文件编写
- 17. 权限添加debug(te文件)
- 如何在Android中添加系统服务
- 如何在Android中添加系统服务
- 在windows下将Nginx添加为系统服务
- 为Android系统添加服务
- Android系统中如何添加权限-----以TP为例
- 以Android L读取系统所有logcat并写入文件为例分析Android 添加系统服务,通过系统服务申请selinux的权限执行shell脚本,以及avc:dined应该怎么申请权限
- Linux下添加Tomcat为系统服务
- Centos7下添加Tomcat为系统服务
- Linux下添加Tomcat为系统服务
- 如何在android 4.0.3中添加系统服务
- 在android framework中添加自定义系统服务
- android中sepolicy, selinux学习笔记
- Android系统中如何添加权限
- 浅谈Git
- redis的安装
- 关于 Date() 函数在 iOS 中的一个小坑
- Python Thrift示例
- 剑指offer——和为S的连续正数序列
- Android系统下在te文件中为指定服务添加sepolicy权限
- 链式运动框架
- spring源码系列-1
- Unity动画控制组件UIPlayTween
- Javascript学习笔记
- Mac hadoop伪分布式安装
- bzoj 3262 陌上花开
- 第九章 特殊方法,属性和迭代器
- Eclipse报错no opencv_java249 in java.library.path解决方法