分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow
也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!
与iOS相比,Android最被人诟病的是其流畅性和安全性。然而,从4.0开始,Android不遗余力地改善其流畅性。特别是在即将发布的L版本中,用ART替换了Dalvik,相信会越来越流畅。至于安全性,Android也没有遗忘。从4.3开始,Android引入了一套基于SELinux的安全机制,称为SEAndroid,来加强系统安全性。接下来我们就对SEAndroid进行简要介绍和制定学习计划。
老罗的新浪微博:http://weibo.com/shengyangluo,欢迎关注!
《Android系统源代码情景分析》一书正在进击的程序员网(http://0xcc0xcd.com)中连载,点击进入!
在介绍SEAndroid安全机制之前,我们要先了解一下Android当前所采用的安全机制是什么。实际上,在前面从NDK在非Root手机上的调试原理探讨Android的安全机制一文中,我们已经介绍过Android系统的安全机制了。因此,这里主要是进行一下总结。
在引进SEAndroid安全机制之前,Android系统的安全机制分为应用程序和内核两个级别。应用程序级别的安全机制就是我们通常说的Permission机制。一个应用如果需要访问一些系统敏感或者特权资源,那么就必须要在AndroidManifest.xml配置文件中进行申请,并且在安装的时候由用户决定是否赋予相应的权限。应用安装过后,一般是通过系统服务来间接使用系统敏感或者特权资源的。这样系统服务在代表应用使用这些资源之前,就会先检查应用之前是否已经申请过相应的权限。如果已经申请过,那么就直接放行,否则的话,就拒绝执行。
内核级别的安全机制就是传统的Linux UID/GID机制。在Linux中,每一个用户都拥有一个用户ID,并且也有一个用户组ID,分别简称为UID和GID。此外,Linux系统的进程和文件也有UID和GID的概念。Linux就是通过用户、进程、文件的UID/GID属性来进行权限管理的。
我们知道,当Linux内核启动完成之后,启动的第一个进程称为init进程。Init进程接着会启动一个login进程,等待用户输入用户名和密码登录。一旦登录成功,就会启动一个shell进程。之后这个shell进程就负责执行用户的命令。注意,在上述启动过程中,init进程是以root用户身份启动的,也就是init进程的UID是0,即root。在默认情况下,由init进程启动的所有进程,也就是fork出来的所有子进程,也同样是以root身份运行的。因此。负责登录的login进程的UID也是0。但是,当用户输入用户名和密码,并且登录成功后,所启动的shell进程就不再是root了,而是成功登入系统的用户。这是如何做到的呢?原来,具有root权限的进程可以通过系统接口setuid来改变自己身份。也就是说,由login进程启动的用户shell进程在开始的时候的身份其实也是root的,不过在它可以执行用户的命令之前,它已经通过setuid将自己的UID修改为登录用户对应的UID了。这样就可以限制每一个成功登入系统的用户的权限。
用户之后

本文简要介绍了Android的SEAndroid安全机制,旨在增强系统安全性。SEAndroid基于强制访问控制(MAC),通过安全上下文限制进程访问文件。文章讨论了传统Linux UID/GID机制的局限性,并指出SEAndroid如何与之并存,共同约束进程权限。文章还提供了后续学习SEAndroid安全机制的五个情景分析。
最低0.47元/天 解锁文章

174

被折叠的 条评论
为什么被折叠?



