android+关闭selinux权限问题,快速解决Android中的selinux权限问题【转】
在Android开发的过程中,遇到关于selinux相关的东西,当时还一下子看不懂,现在好像有点眉目了。
比如,内核打印这个提示
type=1400 audit(32.939:25): avc: denied { open } for pid=2592 comm="chmod" path="/dev/block/mmcblk0p25" dev="tmpfs" ino=6494 scontext=u:r:init_shell:s0 tcontext=u:object_r:block_device:s0 tclass=blk_file permissive=1
当然,这种信息有时太长了,以致于在minicom中出现了信息丢失的情况,可按参考http://blog.csdn.net/mike8825/article/details/49422727里的方法解决。
我们可以遵循这个方法,从头开始寻找关键对象,然后调整一下顺序,生成一条语句,最后将该语句填写到.te文件(external/sepolicy/*.te)中即可。
denied { open } u:r:init_shell:s0 u:object_r:block_device:s0 tclass=blk_file
A B C D
B C D A
allow init_shell block_device:blk_file open;
这条语句表示允许init_shell域中的block_device进程打开block_device类型的块设备文件。
有时候会遇到编译该规则失败,这也许就是neverallow语句做怪了。
neverallow用来检查安全策略文件中是否有违反该项规则的allow语句
如external/sepolicy/netd.te文件中,语句
neverallow netd dev_type:blk_file { read write };
表示永远不允许netd域中的进程读写dev_type类型的块设备文件,这时只需屏蔽该语句即可。
当然,在调试阶段,可在终端上运行如下命令获取SELinux的状态和临时关闭SELinux
setenforce 0 ##设置SELinux 成为permissive模式(SELinux开启,但对违反selinux规则的行为只记录,不会阻止)
setenforce 1 ##设置SELinux 成为enforcing模式 (SELinux开启)
getenforce ##获取SELinux状态(permissive,enforcing,disabled)
当然,测试的时候也可以在cmdline中加入androidboot.selinux=disabled来关闭selinux
或者到Android源码的根目录下,直接修改system/core/init/init.c文件。
static void selinux_initialize(void)
{
if (selinux_is_disabled()) {
return;
}
INFO("loading selinux policy\n");
if (selinux_android_load_policy()
ERROR("SELinux: Failed to load policy; rebooting into recovery mode\n");
android_reboot(ANDROID_RB_RESTART2, 0, "recovery");
while (1) { pause(); } // never reached
}
selinux_init_all_handles();
bool is_enforcing = selinux_is_enforcing();
INFO("SELinux: security_setenforce(%d)\n", is_enforcing);
security_setenforce(is_enforcing);
}
修改is_enforcing的值(0或者1)。
android+关闭selinux权限问题,快速解决Android中的selinux权限问题【转】相关推荐
- linux docker权限,linux - 如何解决ubuntu中的docker权限问题? - Ubuntu问答
问题描述 我已经按照here的说明安装了docker.我使用Ubuntu Trusty 14.04 (LTS) (64-bit).安装过程中的一切都很好.另外,命令$ sudo docker run ...
- 快速解决Android编译报错 : Manifest merger failed with multiple errors, see logs
快速解决Android编译报错 : Manifest merger failed with multiple errors, see logs 编译项目的时候,遇到Android Manifest合并 ...
- 如何快速解决Unity中万向节死锁(gimbal lock)的问题
如何快速解决Unity中万向节死锁(gimbal lock)的问题 转载连接:https://www.jianshu.com/p/59acdd1c9db8 万向节死锁的根本问题是欧拉角(EulerAn ...
- PS技巧-如何快速解决合成中的光影
Photoshop CC 2019 for Mac 专为所有设计人员而设计.只要您能想得到,您便可以使用 Photoshop 这一全球最佳的图像和设计应用程序将您想象中的内容制作出来.创建和增强照片. ...
- 如何快速解决Android Studio中的HAMX安装失败问题
第一次安装Android Studio下载完SDK与模拟器,运行程序时可能会出现这样的问题:虚拟机无法运行 这说明你电脑的HAMX文件可能下载未安装或者BIOS中权限未开启,导致启动avd模拟器不成功 ...
- android studio光标变成黑块,解决Android Studio 代码无提示无颜色区分问题
解决Android Studio 代码无提示无颜色区分问题 一.问题 ①java代码没有颜色区分,统一黑色 ②代码不会联想提示,原来打前几个字母便会联想到后面的内容 二.解决 打开File,将Powe ...
- Android手机内存图片读取,有效解决Android加载大图片内存溢出的问题
今天在交流群里,有人问我他经常遇到加载图片时内存溢出的问题,遇到的情况还是在自己的测试机或者手机里没有问题,做好了, 到了客户手机里就内存溢出了.其实有时候不同的手机和不同的系统对内存的要求不一样,尤 ...
- android 创建模拟器打不开,解决Android模拟器打不开的问题!...
解决Android模拟器打不开的问题!... 昨天,我搭建Android开发环境,启动AVD时,出现了以下错误提示: PANIC: Could not open: D:\Android\android ...
- android打开app白色页面,完美解决Android App启动页有白屏闪过的问题
应用启动的时候有短暂的白屏,如图: 可以通过设置theme的方式来解决 @color/colorPrimary @color/colorPrimaryDark @color/colorAccent t ...
最新文章
- Java基础学习总结(1)——equals方法
- IntelliJ IDEA导入多个eclipse项目到同一个workspace下
- AVL的LL,RR,LR,RL调整
- 天天鉴宝联手网易智企,开创直播鉴定服务电商平台
- swing程序中如何响应鼠标回车事件?
- 《ASP.NET Core 真机拆解》 送书活动结果公布
- android activity 显示无焦点_Android面试题集锦之fragemnt
- 利用矩阵的n次方求图的连通性
- ubuntu11.04正式版下载地址
- Ext scope 学习
- 如何自学python知乎-初次接触python,怎么样系统的自学呢?
- 微博营销的价值与注意点
- 语音通知事件提醒功能实现流程
- 中集飞瞳多式联运智能化方案海铁运输数字化集装箱管理,多式联运智能化铁路智能多式联运,中集集团高科技中集飞瞳多式联运智能化领军者
- 币圈炒币如何避免被额韭菜?
- C#winform下获取主机ip及hostname
- Java Object 类方法解析
- 画春天的景色计算机教案,幼儿园中班教案《画春天》含反思
- 2023.2.11双阶乘
- Day1 html5
热门文章
- cgi标准面试php,PHP面试:简述CGI、FastCGI和PHP
- c语言怎么将n个数字存入到数组中_洛谷 || 拼数(C语言)
- html javascript 遍历数组、字符串
- 【多标签文本分类】Semantic-Unit-Based Dilated Convolution for Multi-Label Text Classification
- 查询数据库返回cursor,如何判断没有符合条件的记录。判断条件不是cursor==null 哦
- 报错解决:TypeError: Object type class 'str' cannot be passed to C code
- cityhash 算法的使用
- qu.la网站上的小说爬取
- java中 如何用if_不在Java中使用if语句
- Centos7 上安装 redis5.0.5