当前位置: 首页 > news >正文

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

01> 文件拷贝脚本:

MT6580_M/external$ vi sepolicy/cpgf3208.sh

#!/bin/bash

echo nicek: cp_gf3208
DIR=$(cd `dirname $0`; pwd)
#echo $DIR                                                                                                                                   
cp ${DIR}/gf3208_te/* ${DIR}/
cp ${DIR}/../../device/mediatek/common/gf3208_te/* ${DIR}/../../device/mediatek/common/sepolicy/

 将对应属性添加到:

 生效的文件:

 

删掉不用的功能,保留只用的,再将删掉功能中添加的其他属性放到该文件下;

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

 
01设备节点(或bin文件);02file_contexts;03device.te;04进程文件添加权限;
本文将以用户自定义的内核节点 /dev/wf_bt为例,手把手教会读者如何在JNI层获得对该节点的访问权限。
 
第一步:找到需要访问该内核节点的进程(process),笔者自己这个节点由system_server进程来访问
 
第二步:打开文件 AndroidL/android/external/sepolicy/file_contexts
仿照这个文件里的写法,为你的节点定义一个你想要的名字:
[python]  view plain copy 在CODE上查看代码片 派生到我的代码片
 
  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 plain copy 在CODE上查看代码片 派生到我的代码片
 
  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 plain copy 在CODE上查看代码片 派生到我的代码片
 
  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.   
  5. # chr_file表示字符设备文件,如果是普通文件用file,目录请用dir  
  6. # rw_file_perms代表读写权限  
  7. allow system_server wf_bt_device:chr_file rw_file_perms;  // 允许system_server进程拥有对wf_bt_device的这个字符设备的读写权限;
这句话的意思是:允许system_server进程拥有对wf_bt_device的这个字符设备的读写权限。
改了这些之后,你就可以 make installclean;make -j16编译image来验证权限是否获取成功。
 
fd =open("/dev/wf_bt",O_RDONLY | O_NOCTTY); 绝对成功!!!!!

=====================================

allow system_server wf_bt_device:chr_file rw_file_perms; //允许system_server进程拥有对wf_bt_device的这个字符设备的读写权限。

 

 ls -Z 节点 (查看权限)

 

可以用命令来查看selinux的状态 getenforce 这个命令可以查看到selinux的状态,当前可以看到是关闭状态的。 还有一个命令也可以查看出selinux的状态。 sestatus -v 还有一个setenforce 命令可以设置selinux的状态

xxx:# getenforce 
Enforcing

mmm external/sepolicy
make -j24 ramdisk-nodeps
make -j24 bootimage-nodeps

 

 对于tee:

可信执行环境(TEE)介绍 与应用

 

 

 

 

 

 

 

-------------------

转载于:https://www.cnblogs.com/Ph-one/p/5708836.html

相关文章:

  • 一个简单的演示用的Linux字符设备驱动程序
  • 使用register_chrdev注册字符设备
  • ioctl方法详解
  • 手机对支持128G扩展内存的介绍
  • Linux sync命令的作用
  • touch 命令
  • 良子博客
  • mipi协议中文详解
  • 理解mipi协议
  • 待查项
  • drivers/mfd/Mfd-core.c
  • LInux ugo权限详解[修]
  • Camera 图像处理原理分析
  • camera isp
  • isp和3a的联系与区别是什么?
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • CSS盒模型深入
  • Git的一些常用操作
  • Java知识点总结(JavaIO-打印流)
  • k8s如何管理Pod
  • Puppeteer:浏览器控制器
  • python 装饰器(一)
  • ReactNativeweexDeviceOne对比
  • SAP云平台里Global Account和Sub Account的关系
  • Solarized Scheme
  • Vue2.x学习三:事件处理生命周期钩子
  • 安装python包到指定虚拟环境
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 看域名解析域名安全对SEO的影响
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 无服务器化是企业 IT 架构的未来吗?
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • ​学习一下,什么是预包装食品?​
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • ###C语言程序设计-----C语言学习(6)#
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • $forceUpdate()函数
  • (14)Hive调优——合并小文件
  • (70min)字节暑假实习二面(已挂)
  • (二)springcloud实战之config配置中心
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (三)终结任务
  • (原)本想说脏话,奈何已放下
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .NET Core跨平台微服务学习资源
  • .NET/C# 避免调试器不小心提前计算本应延迟计算的值
  • .NET/C# 使用 ConditionalWeakTable 附加字段(CLR 版本的附加属性,也可用用来当作弱引用字典 WeakDictionary)
  • .NET单元测试
  • .Net调用Java编写的WebServices返回值为Null的解决方法(SoapUI工具测试有返回值)
  • .net开发时的诡异问题,button的onclick事件无效
  • .net实现客户区延伸至至非客户区