Android 获得对一个设备节点的访问权限
来源:互联网 发布:奥克洛核反应堆知乎 编辑:程序博客网 时间:2024/06/08 07:55
Android 获得对设备节点的访问权限
Android 5.0 下,因为采取了 SEAndroid/SElinux 的安全机制,即使拥有 root权限,或者对某内核节点设置为 777 的权限,仍然无法在 JNI 层访问。
本文将以用户自定义的内核节点 /dev/wf_bt 为例,手把手教会读者如何在 JNI 层获得对该节点的访问权限。
可分为以下四个步骤:
- 第一步:找到需要访问该内核节点的进程(process),假设这个节点由 system_server 进程来访问。
- 第二步:打开文件 mydroid/external/sepolicy/file_contexts,仿照这个文件里的写法,为你的节点定义一个你想要的名字,如下:
/dev/watchdog u:object_r:watchdog_device:s0/dev/xt_qtaguid u:object_r:qtaguid_device:s0/dev/zero u:object_r:zero_device:s0/dev/__kmsg__ u:object_r:klog_device:s0/dev/__properties__ u:object_r:properties_device:s0# example/dev/wf_bt u:object_r:wf_bt_device:s0
wf_bt_device 是自定义,其他左右两边的内容都和上面的范例一致。
- 第三步:打开文件 mydroid/external/sepolicy/device.te ,仿照这个文件里的写法,将刚刚第二步写的wf_bt_device 声明为 dev_type:
type video_device, dev_type;type vcs_device, dev_type;type zero_device, dev_type;type fuse_device, dev_type;type iio_device, dev_type;type ion_device, dev_type, mlstrustedobject;type gps_device, dev_type;type qtaguid_device, dev_type;type watchdog_device, dev_type;type uhid_device, dev_type;type uio_device, dev_type;type tun_device, dev_type, mlstrustedobject;type usbaccessory_device, dev_type;type usb_device, dev_type;type klog_device, dev_type;type properties_device, dev_type;# exampletype wf_bt_device, dev_type;
- 第四步:打开文件夹 mydroid/external/sepolicy/ ,你会发现有许多以进程名字命名的te文件:
在第一步中,这个节点是由 system_server 进程来访问,于是我们找到 system_server.te 打开,加入允许这个进程对 /dev/wf_bt 设备节点的读写权限:
# Allow system server to search and write to the persistent factory reset# protection partition. This block device does not get wiped in a factory reset.allow system_server block_device:dir search;allow system_server frp_block_device:blk_file rw_file_perms;allow system_server input_device:dir r_dir_perms;allow system_server input_device:chr_file rw_file_perms;# chr_file表示字符设备文件,如果是普通文件用file,目录请用dir # rw_file_perms代表读写权限 # exampleallow system_server wf_bt_device:chr_file rw_file_perms; //允许 system_server 进程拥有对 wf_bt_device 的这个字符设备的读写权限;
这句话的意思是:允许 system_server 进程拥有对 wf_bt_device 的这个字符设备的读写权限。修改完后重新编译 mmm external/sepolicy -B,然后再重新生成刷机包,刷机测试。
0 0
- Android 获得对一个设备节点的访问权限
- Android 在 SElinux下 如何获得对一个内核节点的访问权限
- Android 5.0 SEAndroid下如何获得对一个内核节点的访问权限
- Android 在 SElinux下 如何获得对一个内核节点的访问权限
- Android 在 SElinux下 如何获得对一个内核节点的访问权限
- Android 在 SElinux下 如何获得对一个内核节点的访问权限
- Android 在 SElinux下 如何获得对一个内核节点的访问权限
- Android 在 SElinux下 如何获得对一个内核节点的访问权限
- Android 在 SElinux下 如何获得对一个内核节点的访问权限
- Android 在 SElinux下 如何获得对一个内核节点的访问权限
- Android 在 SElinux下 如何获得对一个内核节点的访问权限
- Android 在 SElinux下 如何获得对一个内核节点的访问权限
- Android 在 SElinux下 如何获得对一个内核节点的访问权限
- android在hal下 如何获得对一个内核节点的访问权限
- SElinux android 在hal下 如何获得对一个内核节点的访问权限
- Android 在 SElinux下 如何获得对一个内核节点的访问权限
- android5.0,6.0第三方签名APP,在SElinux下,如何获得对一个内核节点的访问权限?
- android5.0,6.0第三方签名APP,在SElinux下,如何获得对一个内核节点的访问权限?
- 转载博客 htm5l实现滚动播放
- 一种基于Java的异常处理装置及其异常处理方法
- linux find指令详解
- Java总结篇系列:类型转换/造型
- Hive on Spark配置总结
- Android 获得对一个设备节点的访问权限
- ORMLite与Greendao
- React入门笔记(四) — 组件的复合与mixin
- C++第7次作业
- Dubbo教程持续集成篇--SonarQube代码质量管理平台的配置与使用
- 《编程之美》读书笔记-1.5快速找出机器故障
- js找到阶乘最后面的非零位
- org.hibernate.ObjectDeletedException: deleted instance passed to merge
- git的简单玩法