Android SELinux开发入门指南之SELinux基础知识
Android SELinux开发多场景实战指南目录:
Android SELinux开发入门指南之SELinux基础知识
Android SEAndroid权限问题指南
Android SELinux开发入门指南之如何增加Java Binder Service权限
Android SELinux开发入门指南之权限解决万能规则
Android SELinux开发入门指南之如何增加Native Binder Service权限
Android SELinux开发入门指南之正确姿势解决访问data目录权限问题
正确姿势临时和永久关闭Android的SELinux
引言
SEAndroid是在Android系统中基于SELinux推出的强制访问控制模型,其被设计的主要意图就是用来来完善自主访问模型中只要取得root权限就可以为所欲为的情况。那么SELinux究竟是何方神圣呢,老规矩认识一个事物我们通常会从它是什么,怎么使用它,最后深入它的三个步骤来进行,我们这里对SELinux也是如此,秉承三部曲的节奏来进行!
我们先对SELinux来一个整体的概述那就是SELinux是一种基于域-类型(domain-type)模型的强制访问控制(MAC)安全系统,其原则是任何进程想在SELinux系统中干任何事,都必须先在安全策略的配置文件中赋予权限。凡是没有在安全策略中配置的权限,进程就没有该项操作的权限。在SELinux出现之前,Linux的安全模型是DAC(DiscretionaryAccess Control),译为自主访问控制。其核心思想是进程理论上所拥有的权限与运行它的用户权限相同。比如,以root用户启动shell,那么shell就有root用户的权限,在Linux系统上能干任何事。这种管理显然比较松散。在SELinux中,如果需要访问资源,系统会先进行DAC检查,不通过则访问失败,然后再进行MAC权限检查。
一. SELinux基础知识
SELinux涉及的基本知识比较多,下面让我们来一一细说。
1.1 SELinux的三种模式
SELinux分为三种模式,下面我们看看究竟是那三种模式:
-
Disable模式
此种模式关闭SELinux检测,不进行任何SELinux权限检查,畅通无阻。 -
Permissive模式
宽容模式,当权限检查不通过时,不决绝资源访问,只打印avc log日志。 -
Enforceing模式
强制模式,此种模式下权限检查不通过时,拒绝资源访问,并打出avc log,这个是最恨模式。
1.2 查看SELiux状态和关闭SELinux
查看SElinux的状态:
查看SELinux状态比较简单,可以通过命令行查看SELinux状态:
adb shell getenforce
还有一种就是通过avc log来确认SELinux的状态:
如果是avc log结尾有permissive=1/0的标识,如果permissive=1说明是Permissive模式模式,如果permissive=0则说明是Enforce模式。
关闭SELinux:
关于怎么关闭SELinux可以参考如下的博文

本文详细介绍SELinux在Android系统中的应用,包括SEAndroid的三种模式、状态查看、权限分配原则及策略构建方法,旨在帮助开发者掌握Android系统安全控制的核心技术。
最低0.47元/天 解锁文章
2708





