[SELinux Debug]SELinux 权限问题解析

原创 2018年04月17日 16:03:05

SELinux 分成enforcing mode 和 permissive mode, enforcing mode 会强制性限制访问

SELinux 权限在userdebug版本或者eng版本可以通过 adb shell setenforce 0 和 adb shell setenforce 1来设置这两种模式

通过adb shell getenforce 来读取当前的模式.

产生问题:在APP上层去读取驱动节点或者改变节点的值的时候,很容易产生SELinux 权限问题

分析问题:1.调试版本上对相应的节点赋予所有的权限chmod 777 /proc/*
2.手动切换permissive 模式调试正式是否正常
3.切换到user版本抓取mainlog,通过audit2allow 命令去读取到缺少的权限,
audit2allow -i log.txt 注意:linux中需要安装相应命令audit2allow
4.最后添加到对应的te文件当中即可

目前所有的SELinux check 失败,在kernel log 或者android log(L版本后)中都有对应的”avc: denied” 或者 “avc: denied”的LOG 与之对应。反过来,有此LOG,并非就会直接失败,还需要确认当时SELinux 的模式, 是enforcing mode 还是 permissve mode.
首先, 务必确认对应进程访问系统资源是否正常, 是否有必要 ?如果本身是异常非法访问,那么就要自行消除访问。
其次, 如果确认访问是必要,并且正常的,那么就要对对应的process/domain 增加新的policy.

1). 简化方法
1.1 提取所有的avc LOG. 如 adb shell “cat /proc/kmsg | grep avc” > avc_log.txt
1.2 使用 audit2allow tool 直接生成policy. audit2allow -i avc_log.txt 即可自动输出生成的policy
1.3 将对应的policy 添加到selinux policy 规则中,对应MTK Solution, 您可以将它们添加在KK: mediatek/custom/common/sepolicy, L: device/mediatek/common/sepolicy 下面,如
allow zygote resource_cache_data_file:dir rw_dir_perms;
allow zygote resource_cache_data_file:file create_file_perms;
===> mediatek/custom/common/sepolicy/zygote.te (KK)
===> device/mediatek/common/sepolicy/zygote.te (L)
注意audit2allow 它自动机械的帮您将LOG 转换成policy, 而无法知道你操作的真实意图,有可能出现权限放大问题,经常出现policy 无法编译通过的情况。

2). 按需确认方法
此方法需要工程人员对SELinux 基本原理,以及SELinux Policy Language 有了解.
2.1 确认是哪个进程访问哪个资源,具体需要哪些访问权限,read ? write ? exec ? create ? search ?
2.2 当前进程是否已经创建了policy 文件? 通常是process 的执行档.te,如果没有,并且它的父进程即source context 无须访问对应的资源,则创建新的te 文件.
在L 版本上, Google 要求维护关键 security context 的唯一性, 比如严禁zygote, netd, installd, vold, ueventd 等关键process 与其它process 共享同一个security context.
2.3 创建文件后,关联它的执行档,在file_contexts 中, 关联相关的执行档.
比如 /system/bin/idmap 则是 /system/bin/idmap u:object_r:idmap_exec:s0
2.4 填写policy 到相关的te 文件中
如果沿用原来父进程的te 文件,则直接添加.
如果是新的文件,那么首先:
#==============================================
# Type Declaration
#==============================================
type idmap, domain;
type idmap_exec, exec_type, file_type;

#==============================================
# Android Policy Rule
#==============================================
#permissive idmap;
domain_auto_trans(zygote, idmap_exec, idmap);

然后添加新的policy

# new policy
allow idmap resource_cache_data_file:dir rw_dir_perms;
allow idmap resource_cache_data_file:file create_file_perms;

名称解析

名称解析
  • 2015年08月06日 10:13

selinux权限快速解决

执行:    adb shell    cat /proc/kmsg | grep avc 然后把结果复制到文本里面avc.txt 最后执行:         audit2allow -i avc.t...
  • ruancongyang
  • ruancongyang
  • 2016-01-30 17:51:57
  • 783

Android SeLinux权限问题和解决方法

1. 确认 seLinux导致权限问题 1.1 标志性log 格式: avc: denied  { 操作权限 }  for pid=7201 comm=“进程名”  scontext=u:r:源...
  • xiaoxiangyuhai
  • xiaoxiangyuhai
  • 2017-07-28 17:44:44
  • 4565

一个Apache访问权限问题(万恶的SELinux)

原文见我的博客:http://renyongjie668.blog.163.com/blog/static/160053120115942137511/ 前几天,我搞了个准备一些git或者hg的...
  • ncafei
  • ncafei
  • 2016-11-13 13:37:28
  • 1819

绕过selinux权限一种方法

问题:在Android应用中删除一些敏感的文件夹会有权限问题,但是按照下面更改之后CTS认证会Fail。allow system_app system_app_data_file:file execu...
  • u013894427
  • u013894427
  • 2017-10-23 11:06:35
  • 279

SELinex权限问题调试

SELinex调试   当SELinux处于enforcing模式下时某些程序的执行会失败,在这里总结此类问题的总体分析方法。 1、首先排除DAC权限的问题,使用“ls –l”检查相关文件的属主和权限...
  • wlwl0071986
  • wlwl0071986
  • 2015-11-07 12:41:09
  • 1009

nginx权限403 500问题 及Selinux

现象安装完php-fpm、nginx之后,网站访问 静态资源 403,访问PHP 500。php-fpm 报错 mkdir() 无权限。解决mkdir() 无权限先检查selinux,一般的VPS都是...
  • default7
  • default7
  • 2017-04-25 11:43:55
  • 760

Android SELinux 一个编译错误

最近在做Android6.0项目,修改了SELinux的te文件, 单独编译这个模块没问题,后来make clean后编译不过了。报下面的错误. /bin/bash: out/host/linux-...
  • ngyzqf
  • ngyzqf
  • 2015-12-30 11:48:50
  • 841

SELinux 权限问题调试

1.概述  SELinux全称是Security Enhanced Linux,它拥有一个灵活而强制性的访问控制结构,旨在提高Linux系统的安全性,提供强健的安全保证,可防御未知攻击2.问题定位  ...
  • marshal_zsx
  • marshal_zsx
  • 2017-12-28 11:34:07
  • 187

MTK selinux编绎及快速验证问题的方法

Description] 当您修改了SELinux Policy 配置后,如何快速进行Debug 确认,以便快速确认厘清呢?   [Keyword] android, SELinux,...
  • u013478557
  • u013478557
  • 2016-06-27 16:09:06
  • 1377
收藏助手
不良信息举报
您举报文章:[SELinux Debug]SELinux 权限问题解析
举报原因:
原因补充:

(最多只允许输入30个字)