快速解决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)
上一篇 2022年6月27日 上午11:00
下一篇 2022年6月27日 上午11:00


相关推荐

  • 一文读懂Spring 循环依赖,写得太好了!(建议收藏)

    一文读懂Spring 循环依赖,写得太好了!(建议收藏)

    2020年11月13日
    162
  • 实战模拟│单点登录 SSO 的实现

    实战模拟│单点登录 SSO 的实现单点登录让你一次性解决多应用认证的繁琐

    2026年3月19日
    1
  • linux串口工具 kermit,Linux下串口工具kermit的安装使用攻略

    linux串口工具 kermit,Linux下串口工具kermit的安装使用攻略终端 计算机显示终端 是用户使用系统的入口 是计算机系统的输入输出设备 终端的发展也经历了字符哑终端 图形终端和网络终端三种形式 而 console 更强调是控制系统的地方 其使用者主要是管理员 从概念上讲 terminal 的范围比 console 要广 相比 Minicom 而言 u Boot 开发者推荐使用串口通信软件 ckermit 虽然 Windows 下超级终端比较好用 但是需要传输较大文件时 建议使用 Lin

    2026年3月16日
    2
  • 物联网平台架构设计

    物联网平台架构设计现在网上讨论的有关物联网的帖子非常之多,但大部分都是介绍理论或者有关硬件,通讯相关的问题,比如物联网模块,物联网通讯协议MQTT、XMPP、NB_IOT等,个人认为这些只是物联网中一部分,而涉及到物联网的设备如何管理,用户如何管理,数据包如何解析,大数据如何展示等也是物联网模块中非常重要的部分,所以作者就根据自身工作中总结出来的建构在云端的物联网平台基本架构分享给大家,并基于此架构如何一步一步来开发

    2022年5月9日
    39
  • K2发布后,Kimi 研究员集体在X和知乎上搞起了“团建”

    K2发布后,Kimi 研究员集体在X和知乎上搞起了“团建”

    2026年3月12日
    2
  • 韦根协议简介

    韦根协议简介1 简介 Wiegand 韦根 协议是由摩托罗拉公司制定的一种通讯协议 它适用于涉及门禁控制系统的读卡器和卡片的许多特性 其协议并没有定义通讯的波特率 也没有定义数据长度韦根格式主要定义是数据传输方式 Data0 和 Data1 两根数据线分别传输 0 和 1 现在应用最多的是 26bit 34bit 36bit 44bit 等等 其中标准 26 bit nbsp 格式是一个开放式的格式 任何人都可以购买某一特定格式的 HI

    2026年3月19日
    3

发表回复

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

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