SElinux android 在hal下 如何获得对一个内核节点的访问权限
来源:互联网 发布:sql数据库特点 编辑:程序博客网 时间:2024/06/03 05:53
Android 5.0以上,我们发现jni通过hal层去操作内核节点时PERMISSION DENIED 即使在android源代码工程目录下,进入到system/core/rootdir目录,里面有一个名为ueventd.rc文件,往里面添加一行:/dev/hello 0666 root root ,此操作仍然不能让上层去读写相应的节点, 因为5.0以上采取了SEAndroid/SElinux的安全机制,即使拥有root权限,或者对某内核节点设置为777的权限,仍然无法在JNI层访问。
解决办法:
1.找到需要访问该内核节点的进程(process)我的是以system_server进程来访问
2.打开文件AndroidL/android/external/sepolicy/file_contexts.be
添加
- 1
- 1
3.打开文件AndroidL/android/external/sepolicy/device.te
将刚刚第二步写的hello_device声明为dev_type:
- 1
- 1
4.AndroidL/android/external/sepolicy/目录下很多.te文件都是以进程名来结尾的,比如有针对surfaceflinger进程的surfaceflinger,有针对vold进程的vold.te,
我们是由system_server进程来访问这个节点的,所以,我们找到system_server.te打开,加入允许这个进程对/dev/hello的读写权限。
- 1
- 2
- 3
- 1
- 2
- 3
这样system_server中的helloservice就可以顺利访问kernel的节点了,
另外5.1 后在frameworks/base/services/Java/com/android/server/SystemServer中add自定义的Service时会报SecurityException,同样我们需要在external/sepolicy/service_contexts文件里面做相应的配置
假设我们addservice的别名叫”hello”
那么service_contexts就写成
- 1
- 1
在\external\sepolicy\service.te中添加如下:
- SElinux android 在hal下 如何获得对一个内核节点的访问权限
- Android 在 SElinux下 如何获得对一个内核节点的访问权限
- Android 在 SElinux下 如何获得对一个内核节点的访问权限
- Android 在 SElinux下 如何获得对一个内核节点的访问权限
- Android 在 SElinux下 如何获得对一个内核节点的访问权限
- Android 在 SElinux下 如何获得对一个内核节点的访问权限
- Android 在 SElinux下 如何获得对一个内核节点的访问权限
- Android 在 SElinux下 如何获得对一个内核节点的访问权限
- Android 在 SElinux下 如何获得对一个内核节点的访问权限
- Android 在 SElinux下 如何获得对一个内核节点的访问权限
- Android 在 SElinux下 如何获得对一个内核节点的访问权限
- Android 在 SElinux下 如何获得对一个内核节点的访问权限
- Android 在 SElinux下 如何获得对一个内核节点的访问权限
- android在hal下 如何获得对一个内核节点的访问权限
- android5.0,6.0第三方签名APP,在SElinux下,如何获得对一个内核节点的访问权限?
- android5.0,6.0第三方签名APP,在SElinux下,如何获得对一个内核节点的访问权限?
- Android 5.0 SEAndroid下如何获得对一个内核节点的访问权限
- Android 获得对一个设备节点的访问权限
- java spring中配置quartz定时任务
- 代码实现组合动画
- LeetCode With JS||26.Remove Duplicates from Sorted Array[数组去重,返回去重后的长度]
- nginx server_name 匹配顺序规则,新手必看
- io wait
- SElinux android 在hal下 如何获得对一个内核节点的访问权限
- Android内存优化
- 用JavaScript动态加载CSS和JS文件
- 导航按钮
- Unity Shader学习笔记:透明
- window操作系统搭建Spark开发调试环境
- 交叉编译GTK+2.x和libX,交叉编译xserver,一直GTK和X(或DirectFB)到i.MX6
- linux 下查看opencv的版本以及git本地仓库的check
- 网络判断+xlistview上拉加载、下拉刷新+Tablayout +图片拖拽缩放+数据库存储 3、案例完成思路要求: 模块一:用fragment+viewpager+Tablayout实现页面