在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权限问题【转】相关推荐

  1. linux docker权限,linux - 如何解决ubuntu中的docker权限问题? - Ubuntu问答

    问题描述 我已经按照here的说明安装了docker.我使用Ubuntu Trusty 14.04 (LTS) (64-bit).安装过程中的一切都很好.另外,命令$ sudo docker run ...

  2. 快速解决Android编译报错 : Manifest merger failed with multiple errors, see logs

    快速解决Android编译报错 : Manifest merger failed with multiple errors, see logs 编译项目的时候,遇到Android Manifest合并 ...

  3. 如何快速解决Unity中万向节死锁(gimbal lock)的问题

    如何快速解决Unity中万向节死锁(gimbal lock)的问题 转载连接:https://www.jianshu.com/p/59acdd1c9db8 万向节死锁的根本问题是欧拉角(EulerAn ...

  4. PS技巧-如何快速解决合成中的光影

    Photoshop CC 2019 for Mac 专为所有设计人员而设计.只要您能想得到,您便可以使用 Photoshop 这一全球最佳的图像和设计应用程序将您想象中的内容制作出来.创建和增强照片. ...

  5. 如何快速解决Android Studio中的HAMX安装失败问题

    第一次安装Android Studio下载完SDK与模拟器,运行程序时可能会出现这样的问题:虚拟机无法运行 这说明你电脑的HAMX文件可能下载未安装或者BIOS中权限未开启,导致启动avd模拟器不成功 ...

  6. android studio光标变成黑块,解决Android Studio 代码无提示无颜色区分问题

    解决Android Studio 代码无提示无颜色区分问题 一.问题 ①java代码没有颜色区分,统一黑色 ②代码不会联想提示,原来打前几个字母便会联想到后面的内容 二.解决 打开File,将Powe ...

  7. Android手机内存图片读取,有效解决Android加载大图片内存溢出的问题

    今天在交流群里,有人问我他经常遇到加载图片时内存溢出的问题,遇到的情况还是在自己的测试机或者手机里没有问题,做好了, 到了客户手机里就内存溢出了.其实有时候不同的手机和不同的系统对内存的要求不一样,尤 ...

  8. android 创建模拟器打不开,解决Android模拟器打不开的问题!...

    解决Android模拟器打不开的问题!... 昨天,我搭建Android开发环境,启动AVD时,出现了以下错误提示: PANIC: Could not open: D:\Android\android ...

  9. android打开app白色页面,完美解决Android App启动页有白屏闪过的问题

    应用启动的时候有短暂的白屏,如图: 可以通过设置theme的方式来解决 @color/colorPrimary @color/colorPrimaryDark @color/colorAccent t ...

最新文章

  1. Java基础学习总结(1)——equals方法
  2. IntelliJ IDEA导入多个eclipse项目到同一个workspace下
  3. AVL的LL,RR,LR,RL调整
  4. 天天鉴宝联手网易智企,开创直播鉴定服务电商平台
  5. swing程序中如何响应鼠标回车事件?
  6. 《ASP.NET Core 真机拆解》 送书活动结果公布
  7. android activity 显示无焦点_Android面试题集锦之fragemnt
  8. 利用矩阵的n次方求图的连通性
  9. ubuntu11.04正式版下载地址
  10. Ext scope 学习
  11. 如何自学python知乎-初次接触python,怎么样系统的自学呢?
  12. 微博营销的价值与注意点
  13. 语音通知事件提醒功能实现流程
  14. 中集飞瞳多式联运智能化方案海铁运输数字化集装箱管理,多式联运智能化铁路智能多式联运,中集集团高科技中集飞瞳多式联运智能化领军者
  15. 币圈炒币如何避免被额韭菜?
  16. C#winform下获取主机ip及hostname
  17. Java Object 类方法解析
  18. 画春天的景色计算机教案,幼儿园中班教案《画春天》含反思
  19. 2023.2.11双阶乘
  20. Day1 html5

热门文章

  1. cgi标准面试php,PHP面试:简述CGI、FastCGI和PHP
  2. c语言怎么将n个数字存入到数组中_洛谷 || 拼数(C语言)
  3. html javascript 遍历数组、字符串
  4. 【多标签文本分类】Semantic-Unit-Based Dilated Convolution for Multi-Label Text Classification
  5. 查询数据库返回cursor,如何判断没有符合条件的记录。判断条件不是cursor==null 哦
  6. 报错解决:TypeError: Object type class 'str' cannot be passed to C code
  7. cityhash 算法的使用
  8. qu.la网站上的小说爬取
  9. java中 如何用if_不在Java中使用if语句
  10. Centos7 上安装 redis5.0.5