转自:http://blog.csdn.net/tung214/article/details/44461985

Android 5.0下,因为采取了SEAndroid/SElinux的安全机制,即使拥有root权限,或者对某内核节点设置为777的权限,仍然无法在JNI层访问。

本文将以用户自定义的内核节点/dev/wf_bt为例,手把手教会读者如何在JNI层获得对该节点的访问权限。
第一步:找到需要访问该内核节点的进程(process),笔者自己这个节点由system_server进程来访问
第二步:打开文件AndroidL/android/external/sepolicy/file_contexts.be
仿照这个文件里的写法,为你的节点定义一个你想要的名字:
[python] view plaincopy
  1. /dev/tegra.* u:object_r:video_device:s0
  2. /dev/tf_driver u:object_r:tee_device:s0
  3. /dev/tty u:object_r:owntty_device:s0
  4. /dev/tty[0-9]* u:object_r:tty_device:s0
  5. # We add here
  6. /dev/wf_bt              u:object_r:wf_bt_device:s0
wf_bt_device是自定义,其他左右两边的内容都和上面的范例一致。
第三步:打开文件AndroidL/android/external/sepolicy/device.te
仿照这个文件里的写法,将刚刚第二步写的wf_bt_device声明为dev_type:
[python] view plaincopy
  1. # Device types
  2. type device, dev_type, fs_type;
  3. type alarm_device, dev_type, mlstrustedobject;
  4. type adb_device, dev_type;
  5. type ashmem_device, dev_type, mlstrustedobject;
  6. type audio_device, dev_type;
  7. type binder_device, dev_type, mlstrustedobject;
  8. type block_device, dev_type;
  9. # We add here
  10. type wf_bt_device, dev_type;
第四步:
AndroidL/android/external/sepolicy/目录下很多.te文件都是以进程名来结尾的,比如有针对surfaceflinger进程的surfaceflinger,有针对vold进程的vold.te,
刚刚从第一步得到,这个节点是由system_server进程来访问,所以,我们找到system_server.te打开,加入允许这个进程对/dev/wf_bt的读写权限,
[python] view plaincopy
  1. # Read/Write to /proc/net/xt_qtaguid/ctrl and and /dev/xt_qtaguid.
  2. allow system_server qtaguid_proc:file rw_file_perms;
  3. allow system_server qtaguid_device:chr_file rw_file_perms;
  4. # chr_file表示字符设备文件,如果是普通文件用file,目录请用dir
  5. # rw_file_perms代表读写权限
  6. allow system_server wf_bt_device:chr_file rw_file_perms;
这句话的意思是:允许system_server进程拥有对wf_bt_device的这个字符设备的读写权限。
改了这些之后,你就可以make installclean;make -j16编译image来验证权限是否获取成功。
fd =open("/dev/wf_bt",O_RDONLY | O_NOCTTY); 绝对成功!!!!!
鸣谢:感谢Joly_xie

Android 5.x SEAndroid/SElinux内核节点的读写权限相关推荐

  1. Android开放sys下设备节点的读写权限

    Android为system_app开放sys下节点的读写权限 由于Android源码的SELinux安全访问机制,app是无法直接访问设备节点,systemAPP也不行 开放权限步骤: 节点的实际路 ...

  2. Android 在 SElinux下 如何获得对一个内核节点的访问权限

    点击打开链接 Android 5.0下,因为采取了SEAndroid/SElinux的安全机制,即使拥有root权限,或者对某内核节点设置为777的权限,仍然无法在JNI层访问. 本文将以用户自定义的 ...

  3. Android 5.0 SEAndroid下如何获得对一个内核节点的访问权限

    Android 5.0下,因为采取了SEAndroid/SElinux的安全机制,即使拥有root权限,或者对某内核节点设置为777的权限,仍然无法在JNI层访问. 本文将以用户自定义的内核节点/de ...

  4. Android 11.0 12.0系统默认授予读写权限给第三方app

    1.概述 在6.0以前读写权限是默认授予的,app不需要申请权限 在10.0之前需要android.permission.WRITE_EXTERNAL_STORAGE和android.permissi ...

  5. Android开发中apk开启sdcard的读写权限

    在android开发中内存一般分为硬件设备自带的存储空间以及扩展存储空间(sdcard),本文只对使用Android Studio开发程序时开启sdcard的读写权限进行说明. 主要步骤分为两步    ...

  6. Android 用adb 打印linux内核调试信息dmesg和kmsg命令

    Android的log信息分为内核空间和用户空间中LOG,查看用户空间(也就是app等上层的log)的log直接用logcat就可以了,如果想过滤一些信息就用adb shell "logca ...

  7. Android驱动(1)---Ubuntu中为Android系统上编写Linux内核驱动程序实现方法

    Ubuntu中为Android系统上编写Linux内核驱动程序实现方法 本文主要介绍在Ubuntu 上为Android系统编写Linux内核驱动程序, 这里对编写驱动程序做了详细的说明,对研究Andr ...

  8. linux服务器查看节点,集群内核节点查看命令linux

    集群内核节点查看命令linux怎么做?根据CSDN博客作者zerowin的分享,查看Linux内核版本的命令可以使用以下两种方法: 第一种 cat /proc/version [root@S-Cent ...

  9. Android 各版本关闭 Selinux 的方法

    运行时调试开关 Selinux   Cmd Discription Other adb shell getenforce 查看当前 Selinux 功能是 permissive(关闭)还是 enfor ...

最新文章

  1. 年前最后一项技能树 Rust ,攻碉堡 ing (Bilibili 视频整理)
  2. SQL SERVER:SQLDMO库文件的组成
  3. 【今晚9点】:对话刘连响——web流媒体开发新变化
  4. 如何在学习机器学习时学习数学?
  5. CT一般扫描参数_CT图像质量参数
  6. codeforces 286E Ladies' Shop
  7. 阶段3 1.Mybatis_06.使用Mybatis完成DAO层的开发_7 Mybatis中使用代理Dao的执行过程分析...
  8. 差异基因p为0_【i春秋杯网络安全联赛WriteUp】为逆行者加油
  9. 2013八大免费杀毒软件排行榜
  10. 华为u2000v200r018 同步网元失败 提示 服务器不可达 解决办法
  11. 监控100台RouterOS路由器的各个pppoe拨号失败的数目并钉钉通知
  12. Netty 通过 WebSocket 编程实现服务器和客户端全双工长连接<2021SC@SDUSC>
  13. 女人:不爱,请收起你的暧昧
  14. JavaScript函数:arguments的使用
  15. python中计算整商的运算符_常见的促进安眠的食物有小米、牛奶、糖水、莲子、香蕉、蜂蜜、莴苣、葵花籽、核桃、桂圆、红枣、桑葚和鲜藕等。...
  16. matlab 线性系统响应,MATLAB线性系统时域响应分析实验
  17. PSpice不收敛问题的解决方法(报错:Convergence problem in transient bias point calculation)
  18. Python数据分析学习四 NumPy基础:数组和矢量计算
  19. 精确到1ms的定时器
  20. 关于WSDL和UDDI的一些了解

热门文章

  1. 结合工程实践选题调研分析同类软件产品
  2. 【OpenGL】十六、OpenGL 绘制四边形 ( 绘制 GL_QUADS 四边形 )
  3. 趣味算法——城市天际线
  4. java 源代码 八字_lunar.java 源代码在线查看 - 农历八字查询 可以查阴历,星期,四柱八字,节气, 资源下载 虫虫电子下载站...
  5. Android 后台线程弹对话框导致程序崩溃(is not valid; is your activity running)
  6. 2019趣头条自媒体赚钱攻略
  7. HashMap、HashTable的key和value是否可为null
  8. QT 为按钮添加图标并设置透明
  9. 跨服务器上传文件遇到405 or 409
  10. 邓丽君,王菲《清平调》