昨天看到Google发布的Android M 终于带来了喜闻乐见的权限管理机制,突然想到以前Android开发都要添加的那一堆权限是什么鬼,于是决定研究一下,写点总结。
首先是我之前对Linux的权限理解还停留在文件的rwx上面,最多还知道一个suid和guid可以用来提权,例如操作passwd等。Google了一下,搜到这篇文章:http://blog.chinaunix.net/uid-27105712-id-3349522.html , 好吧,原来还有一个叫进程的权限,于是决定把这个模型捋一下。
Linux本艰深,但如果把一些概念投射到现实世界中,会好理解很多。
简单来说,把Linux用户看做现实中的一个真正的“人”,Linux文件看做属于这个“人”的财产。
1. Linux 用户当做“人”
首先我们先敲入以下命令:id
king@king-B85-HD3 ~ $ id
uid=1000(king) gid=1000(king) groups=1000(king),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),108(lpadmin),110(sambashare)
这个命令给出我这个“人”作为一个人的所有身份,我的名字叫king,我加入了一个叫king的组织(主group),除了king这个组织外,我还加入了4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),108(lpadmin),110(sambashare)
等若干组织(附加group)。当然一般情况下,gid那一部分应该取另一名字,代表一个群体,比如啥“某party”,“单身狗”之类,本人无党派人士,自然uid和gid都叫做king
了,king这个group也只有我一个人。
上面这些话如果翻译成大白话来说,可以这么说,我叫奥巴马(uid),我是民主党的(主group,gid),我除了民族党,我还是北约成员,亚太合作组织成员, G8成员,联合国成员,电信联盟成员……(各种groups)。
2. Linux 文件当做属于某个人或组织的财产
Linux下一切皆是文件,像什么硬件节点啊,管道啊,甚至socket什么统统都是文件,这就简化了模型,我们直接把Linux 文件当做属于某个人或组织的财产。
为什么这样理解呢?我们先看一下Linux文件的权限:
king@king-B85-HD3 ~ $ ll
total 136864
drwxr-xr-x 50 king king 4096 5月 30