快速解决Android中的selinux权限问题

快速解决Android中的selinux权限问题关于selinux的详细资料,请查阅http://blog.csdn.net/innost/article/details/19299937在Android开发的过程中,遇到关于selinux相关的东西,当时还一下子看不懂,现在好像有点眉目了。比如,内核打印这个提示type=1400audit(32.939:25):avc:denied{open}forpid=2…

大家好,又见面了,我是你们的朋友全栈君。

关于selinux的详细资料,请查阅http://blog.csdn.net/innost/article/details/19299937

在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

 

我们可以遵循这个方法,从头开始寻找关键对象,然后调整一下顺序,生成一条语句,最后将该语句填写到.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类型的块设备文件。

或者直接使用工具生成external/selinux/prebuilts/bin/audit2allow

有时候会遇到编译该规则失败,这也许就是neverallow语句做怪了。

neverallow用来检查安全策略文件中是否有违反该项规则的allow语句(不可修改newerallow的定义)

 

如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)

 

当然,如果要验证某些selinux问题,可以在cmdline中加入androidboot.selinux=0来关闭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() < 0) {
        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。

当然,最好的修改方法可参考http://blog.csdn.net/u013983194/article/details/50462694

基本思路就是:默认A不许对B和C干什么,但没定义A对D的行为,那可以建一个D的对象,让A对D为所欲为。

修改后,然后编译mmm system/sepolicy -j30,会将devices下的selinux文件包含进去,生成的文件在system/etc/selinux/或vendor/etc/selinux/下,然后用grep进行字符串进行检索,确保修改成功,最后把相应的文件push到机器上验证(高版本的Android手机需要解锁后,push后才能生效)。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/153546.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 干货 | LIDAR、ToF相机、双目相机如何科学选择?「建议收藏」

    干货 | LIDAR、ToF相机、双目相机如何科学选择?「建议收藏」点击“计算机视觉life”关注,置顶更快接收消息!本文阅读时间约5分钟本文翻译自卡内基梅隆大学Chrisasteroid三维视觉技术的选择传感器参数及定义LIDAR&amp;amp;amp;ToF相机&amp;amp;amp;双目相机介绍工作原理优缺点采样数据比较测试及极端情况测试三维成像技术原理和应用想必大家在之前的文章中了解过啦,今天想给大家比较一下LIDAR、ToF相机…

    2022年5月26日
    52
  • bit rate / frame rate /sample rate等等

    bit rate / frame rate /sample rate等等原文地址码率:Bit Rate,指视频或音频文件在单位时间内使用的数据流量,该参数的单位通常是Kbps,也就是千比特每秒。通常2000kbps~3000kbps就已经足以将画质效果表现到极致了。码率参数与视频文件最终体积大小有直接性的关系。 (编码码率—软件)  混合码率:Overall Bit Rate,指视频文件中视频和音频混合后的整体平均码率。一般描述一个视频文件的码率都是指

    2022年10月17日
    0
  • CSS3+jQuery实现时钟插件

    查看效果:http://hovertree.com/texiao/hoverclock/demo4.htm本插件使用方便,可以在博客园的页面中使用,请看本页面右侧:http://www.cnblog

    2021年12月21日
    46
  • 2021DIY电脑配置入门篇(包含各cpu显卡天梯图对比)

    2021DIY电脑配置入门篇(包含各cpu显卡天梯图对比)前言:我本来以为一篇文章可以把电脑配置讲清楚的,但是发现电脑比我想象的要复杂,所以可能分了几篇来写如何查看自己的电脑配置最简单的右键桌面此电脑->点击属性下载个电脑管家等电脑助手软件也可以查看详细配置如何DIY自己的第一台电脑篇幅有限,这里我只详细分析一台电脑的核心配置(CPU、主板、显卡),外加内存定好预算对于电脑来说,预算是最重要的!没有预算,一切都是空谈。没预算默认外星人Area51M(价格在2万左右),现在电脑往往充当一种娱乐需求,相对来说比较次要,因此大多数人配电脑.

    2022年7月12日
    28
  • 矩阵行列式的几何意义是什么_矩阵的几何意义和物理意义

    矩阵行列式的几何意义是什么_矩阵的几何意义和物理意义矩阵行列式的几何意义 行列式的定义: 行列式是由一些数据排列成的方阵经过规定的计算方法而得到的一个数。当然,如果行列式中含有未知数,那么行列式就是一个多项式。它本质上代表一个数值,这点请与矩阵区别开来。矩阵只是一个数表,行列式还要对这个数表按照规则进一步计算,最终得到一个实数、复数或者多项式。 一阶行列式 (注意不是绝对值) …

    2022年10月30日
    0
  • java 用户态_深入理解内核态和用户态

    java 用户态_深入理解内核态和用户态1.内核态和用户态、内核线程和用户线程等解释操作系统调度CPU的最小单元是线程,也叫轻量级进程(LightWeightProcess),在一个进程里可以创建多个线程,这些线程都拥有各自的计数器、堆栈和局部变量等属性,并且能够访问共享的内存变量。处理器在这些线程上高速切换,让使用者感觉到这些线程在同时执行。系统的用户空间和内核空间:虚拟内存被操作系统划分成两块:内核空间和用户空间,内核空间是内…

    2022年9月17日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号