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)

相关推荐
熊大与iOS44 分钟前
iOS 长截图的完美实现方案 - 附Demo源码
android·算法·ios
独行soc2 小时前
2025年渗透测试面试题总结-42(题目+回答)
android·数据库·安全·adb·面试·渗透测试·sqlite
千里马学框架3 小时前
安卓15 audio新专题发布:安卓系统手机车机音频audio子系统深入实战开发专题
android·智能手机·音视频
没有了遇见4 小时前
Android 虚拟环境之虚拟环境检测<完结版>
android
liang_jy4 小时前
Android 单元测试(二)—— 高级 Mock 技术
android·面试·单元测试
liang_jy4 小时前
Android 单元测试(一)—— 基础
android·面试·单元测试
Digitally6 小时前
如何将照片从电脑传输到安卓设备
android·电脑
教程分享大师6 小时前
创维LB2002_S905L3A处理器当贝纯净版固件下载_带root权限 白色云电脑机顶盒
android
whatever who cares6 小时前
Android Activity 任务栈详解
android
idward3076 小时前
Android的USB通信 (AOA Android开放配件协议)
android·linux