1 AID的定义
Android 16的用户和用户组(AID,Android ID)定义的目录:/system/core/libcutils/include/private/android_filesystem_config.h
其中libcutils库是Android底层C库,提供基础的函数接口和工具。主要包含内存管理,日志记录,IPC,硬件交互,文件系统操作(/proc和/sys文件系统下的读写,属性服务等)。
1.1 常见的AID
cpp
#pragma once
#define AID_ROOT 0 /* traditional unix root user */
#define AID_SYSTEM 1000 /* system server */
#define AID_ADB 1011 /* android debug bridge (adbd) */
#define AID_KEYSTORE 1017 /* keystore subsystem */
#define AID_USB 1018 /* USB devices */
#define AID_LOGD 1036 /* log daemon */
#define AID_LMKD 1069 /* low memory killer daemon */
#define AID_APP 10000 /* TODO: switch users over to AID_APP_START */
#define AID_APP_START 10000 /* first app user */
#define AID_APP_END 19999 /* last app user */
root用户的UID是0,与传统Unix的root用户兼容。root拥有最高权限,通常只有init,adbd,recovery等极少数关键进程以root身份运行。
system用户的UID是1000,主要用于运行system_server进程,该进程承载了Android framework的核心服务,例如AMS,PMS,WMS等。
AID_APP用户的UID从10000开始,用于第三方应用程序UID(User ID)的分配,每个应用程序在安装的时候都会分配一个唯一的UID。
示例:应用 UID 的命名规则:u0_aN ,表示注册用户的第N个应用
UID | Android 用户名表示 | 含义 |
---|---|---|
10000 | u0_a0 |
第一个应用(UID 10000) |
10123 | u0_a123 |
第 124 个应用(UID = 10000 + 123) |
19999 | u0_a9999 |
最后一个标准应用 UID |
2 Linux的文件权限管理
Linux的文件权限主要基于三种角色(所有者 user-u,组 group-g,其他人 others-o )和三种权限类型(read-r,write-w,execute-x)。
2.1 使用rwx表示权限
权限可以通过 rwx
字符串表示,每个字符代表一种权限类型,每三个字符为一组,分别代表读、写和执行;一共分为三组,分别对应所有者、组和其他人:
r
- 读取权限w
- 写入权限x
- 执行权限-
- 如果某个位置没有对应的权限,则用-
占位
eg: rwxr-xr--
可以分解为:
rwx
对应所有者的读、写和执行的全部权限;r-x
对应组的读取和执行权限,但没有写入权限;r--
对应其他人的只读权限。
2.2 使用数字表示权限
使用三位数(对于文件)或四位数(对于特殊权限如 SUID, SGID, Sticky bit)。每一位数字代表一组权限,并且基于二进制计算得出,即按照rwx的顺序,如果有对应的权限,即表示1,没有则为0,因此:
r
=4,w
=2,x
=1- 权限值相加得到最终的数字表示形式
例如:
755
相当于rwxr-xr-x
- 7 (
rwx
) = 4 + 2 + 1,即111,所有者有全部权限 - 5 (
r-x
) = 4 + 0 + 1,即101,所在组有读和执行的权限 - 5 (
r-x
) = 4 + 0 + 1,即101,所在组有读和执行的权限
- 7 (
644
相当于rw-r--r--
- 6 (
rw-
) = 4 + 2 + 0,即110 - 4 (
r--
) = 4 + 0 + 0,即100 - 4 (
r--
) = 4 + 0 + 0,即100
- 6 (
2.3 使用ls -al 查看权限
-rw-r--r-- 1 user group 4096 Jan 1 12:34 example.txt
-
-
表示这是一个普通文件。 -
rw-
表示文件的所有者有读取和写入权限,但没有执行权限。 -
r--
表示文件所属组成员只有读取权限。 -
r--
表示其他用户也只有读取权限。drwxr-xr-x 2 user group 4096 Jan 1 12:34 mydirectory
-
d
表示这是一个目录。 -
rwx
表示目录的所有者可以列出目录中的文件名(读取),创建或删除文件(写入),以及进入目录(执行)。 -
r-x
表示目录所属组成员可以列出目录中的文件名(读取)和进入目录(执行),但不能创建或删除文件(无写入权限)。 -
r-x
表示其他用户也可以列出目录中的文件名和进入目录,但不能创建或删除文件。
2.4 使用chmod修改权限
chmod u+x,g+w,o-r aa.txt
-
+:表示增加权限;-:表示移除权限
-
给所有者添加aa.txt文件的执行权限,给组增加写权限,移除其他用户的读权限。
chmod 755 filename
-
使用数字表示权限
-
755
分别代表了所有者的权限(读+写+执行=7,即111),组和其他人的权限(读+执行=5,即101)