赞
踩
SELinux是一个内核级别的安全机制,从Linux2.6内核之后就将SELinux集成在了内核当中,因为SELinux是内核级别的,所以我们对于其配置文件的修改都是需要重新启动操作系统才能生效的。
现在主流Android版本里面都集成了SELinux机制,4.4后都会默认开启SELinux机制。
在引入SEAndroid安全机制之前,Android系统的安全机制分为应用程序和内核两个级别。
应用程序级别的安全机制就是我们常说的Permisson机制。需要在AndroidManifest.xml配置文件中进行权限申请,系统在应用程序安装的时候会提示该应用申请了哪些权限,用户确认后,进行安装,并且安装过程中由系统决定(如根据应用程序签名)是否赋予应用程序申请的那些权限。一旦申请成功,后续应用就可以随意使用这些权限了。
内核级别的安全机制就是传统的Linux UID/GID机制,Linux就是通过用户、进程、文件的UID/GID来进行权限管理的。Linux将文件的权限划分为读、写和执行三种,分别用字母r、w和x表示。每一个文件有三组读、写和执行权限,分别是针对文件的所有者、文件所有者所属的组以及除前两种之外的其它用户。这样,如果一个用户想要将一个自己创建的文件交给另外一个用户访问,那么只需要相应地设置一下这个文件的其它用户权限位就可以了。
由上可知,文件的权限控制在所有者手中,这种权限控制方式就称为自主式权限控制,即Discretionary Access Control,简称为DAC。
DAC机制只能在理想情况下没有问题,但是在现实中是防不胜防!例如,市面很多root工具就是通过攻击以root身份运行Android磁盘管理守护进程vold来获得root权限,从而实现对设备进行root的。
例如,一个用户可能会不小心将自己创建的文件的权限位错误地修改为允许其它用户访问。如果这个用户是一个特权用户,并且它错误操作的文件是一个敏感的文件,那么就会产生严重的安全问题,所以建议使用相对安全的MAC。
红色标注的即为SEAndroid安全上下文。其中,u:r:unstructed_app:s0描述的是用户安装的APK所运行在的进程的安全上下文,而u:object_r:app_data_file:s0描述的是用户安装的APK在运行过程中生成的数据文件的安全上下文,selinux保护关键进程。
步骤:OS需要debug版本,doc输入
adb shell
su
setenforce 0
getenforce 返回Permissive则表示关闭成功。
代码中关闭:
diff --git a/init/selinux.cpp b/init/selinux.cpp
index 5a0255acd..787917274 100644
--- a/init/selinux.cpp
+++ b/init/selinux.cpp
@@ -104,6 +104,8 @@ EnforcingStatus StatusFromCmdline() {
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。