Android中的UID、GID与应用安全

来源:互联网 发布:linux 配置lnmp 编辑:程序博客网 时间:2024/04/28 17:24



Android系统是基于Linux内核的,也继承了Linux的基于用户和文件权限的安全机制,并将这种机制用于管理应用程序。


        Linux系统对用户的管理:Linux系统可以有多个用户,每个用户都有一个用户名:UserName,同时拥有一个UserID,两者是一一对应的。每个用户可以属于一个或者多个组。
Linux系统的文件权限机制:每个文件都是属于某个用户的,这个用户称作文件的所有者。文件对于所有者、所有者所在组的用户、以及其它任意用户分别开放了不同的操作权限,操作权限分为:读、写、运行三种。只有获得了文件操作权限的应用才能对文件做相应的操作。这就保护了文件的安全性,保证用户对自己不具备权限的文件是不能进行操作。但是,这种机制太过于机械,有时候需要一定的灵活性,所以就出现了超级用户:root,用户root对所有的文件拥有所有权限。-----我的理解:这是一种对静态文件进行保护的安全机制,即文件对用户开放的权限,是指这个文件被操作的权限。
进一步的解释:所谓某用户对文件具有操作权限。除了在控制台中,直接以用户设分手动进行操作,大多数情况下,所谓用户的操作,就是指用户所运行的进程的操作。以某用户身份运行某个进程时,默认地这个进程所拥有的权限,就是用户的权限。当用户对某个文件拥有读权限时,这个进程就可以读这个文件;当用户对某个文件拥有写权限时,这个进程就可以对这个文件进行改写;当用户对某个目录有些权限时,该进程就可以在目录中创建文件,所创建的文件的归该用户所有。----这时候,这个进程的权限,是主动权限,即进程主动对某些文件进行操作的权限。
用户运行的进程默认的只能拥有用户的操作权限,而不管这个进程对应的程序文件本身有什么权限。这太死板。有时候,某些进程需要临时进行一些root用户才有权限执行的操作。为了满足这种需求,就出现了下面的两个权限:
另外,还有两个很特殊的权限,不是对文件进行描述的,而是对文件运行时的进程进行规定的权限,分别对应为setuid和setgid。拥有这两个权限的文件,在运行时,其runner会获得root权限。

Android,在应用安装成功后,就为其指定了一个系统中唯一的UserName,对应着系统中唯一的UID。这个UserName和UID实际上就是传统上的Linux的userName和UID。
0 0