Android 16 的用户和用户组定义

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,所在组有读和执行的权限
  • 644 相当于 rw-r--r--
    • 6 (rw-) = 4 + 2 + 0,即110
    • 4 (r--) = 4 + 0 + 0,即100
    • 4 (r--) = 4 + 0 + 0,即100

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)

相关推荐
安卓开发者40 分钟前
Android模块化架构深度解析:从设计到实践
android·架构
雨白1 小时前
HTTP协议详解(二):深入理解Header与Body
android·http
阿豪元代码2 小时前
深入理解 SurfaceFlinger —— 如何调试 SurfaceFlinger
android
阿豪元代码2 小时前
深入理解 SurfaceFlinger —— 概述
android
CV资深专家3 小时前
Launcher3启动
android
stevenzqzq4 小时前
glide缓存策略和缓存命中
android·缓存·glide
没有了遇见4 小时前
Android ConstraintLayout 之ConstraintSet
android
余辉zmh5 小时前
【MySQL基础篇】:MySQL索引——提升数据库查询性能的关键
android·数据库·mysql
BennuCTech6 小时前
Google ML Kit系列:在Android上实现OCR本地识别
android