Android 5.0 SEAndroid下如何获得对一个内核节点的访问权限
发布日期:2021-06-30 21:52:12
浏览次数:2
分类:技术文章
本文共 1636 字,大约阅读时间需要 5 分钟。
Android 5.0下,因为采取了SEAndroid/SElinux的安全机制,即使拥有root权限,或者对某内核节点设置为777的权限,仍然无法在JNI层访问。 本文将以用户自定义的内核节点 /dev/wf_bt为例,手把手教会读者如何在JNI层获得对该节点的访问权限。
第一步:找到需要访问该内核节点的进程(process),笔者自己这个节点由system_server进程来访问
第二步:打开文件AndroidL/android/external/sepolicy/file_contexts.be
仿照这个文件里的写法,为你的节点定义一个你想要的名字:
- /dev/tegra.* u:object_r:video_device:s0
- /dev/tf_driver u:object_r:tee_device:s0
- /dev/tty u:object_r:owntty_device:s0
- /dev/tty[0-9]* u:object_r:tty_device:s0
- # We add here
- /dev/wf_bt u:object_r:wf_bt_device:s0
wf_bt_device是自定义,其他左右两边的内容都和上面的范例一致。
第三步:打开文件AndroidL/android/external/sepolicy/device.te
仿照这个文件里的写法,将刚刚第二步写的wf_bt_device声明为dev_type:
- # Device types
- type device, dev_type, fs_type;
- type alarm_device, dev_type, mlstrustedobject;
- type adb_device, dev_type;
- type ashmem_device, dev_type, mlstrustedobject;
- type audio_device, dev_type;
- type binder_device, dev_type, mlstrustedobject;
- type block_device, dev_type;
- # We add here
- type wf_bt_device, dev_type;
第四步:
AndroidL/android/external/sepolicy/目录下很多.te文件都是以进程名来结尾的,比如有针对surfaceflinger进程的surfaceflinger,有针对vold进程的vold.te,
刚刚从第一步得到,这个节点是由system_server进程来访问,所以,我们找到system_server.te打开,加入允许这个进程对/dev/wf_bt的读写权限,
- # Read/Write to /proc/net/xt_qtaguid/ctrl and and /dev/xt_qtaguid.
- allow system_server qtaguid_proc:file rw_file_perms;
- allow system_server qtaguid_device:chr_file rw_file_perms;
- # chr_file表示字符设备文件,如果是普通文件用file,目录请用dir
- # rw_file_perms代表读写权限
- 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); 绝对成功!!!!!
转载地址:https://loongembedded.blog.csdn.net/article/details/50845569 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
表示我来过!
[***.240.166.169]2024年04月15日 12时09分14秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Python列表应用copy模块的深拷贝和浅拷贝思路整理-2
2019-04-30
Python列表应用copy模块的深拷贝和浅拷贝思路整理-3
2019-04-30
从零开始搭建神经网络
2019-04-30
python bytes 与 str 的转换
2019-04-30
TCP三次握手的个人理解
2019-04-30
UVA12716 GCD XOR
2019-04-30
P1447 [NOI2010] 能量采集
2019-04-30
线性筛欧拉函数 【模板】
2019-04-30
P4139 上帝与集合的正确用法
2019-04-30
P3811 【模板】乘法逆元
2019-04-30
P5431 【模板】乘法逆元2
2019-04-30
P1495 【模板】中国剩余定理(CRT)/曹冲养猪
2019-04-30
P3868 [TJOI2009]猜数字
2019-04-30
YbtOJ——贪心算法【例题3】畜栏预定
2019-04-30
YbtOJ——贪心算法【例题2】雷达装置
2019-04-30
YbtOJ——递推算法【例题4】传球游戏
2019-04-30
YbtOJ——深度搜索【例题1】拔河比赛
2019-04-30
YbtOJ——深度搜索【例题2】数独游戏
2019-04-30
YbtOJ——字符串处理【例题1】数字反转
2019-04-30
YbtOJ——字符串处理【例题2】移位包含
2019-04-30