【AAOS】【源码分析】用户管理(一)-- 基本介绍

Android是一个基于Linux内核的操作系统,因此Android也支持多用户模式,即可以在同一台设备上创建多个用户账户,每个用户都有自己的应用、数据和设置。这样可以保护用户的隐私,也可以方便不同的使用场景。但是,Android的多用户机制并不完全等同于Linux的用户组机制,它们之间依然有较大的差异。

Android UID 概念

 在介绍Android多用户之前,我们还需要把Android系统中UID的概念搞清楚,因为在日常口语交流中,我们经常会把Android系统的多用户模式和Android UID中的用户搞混。

Android应用程序的UID是指用户标识符,承袭自Linux的UID体系。它是Android在安装应用程序时分配给每个应用程序的一个唯一的数字。UID在应用程序不重新安装的情况下保持不变。

UID对每个应用程序是唯一的,除非应用程序明确请求与另一个应用程序共享一个用户标识符,可以在AndroidManifest.xml中使用sharedUserId标签设定。但是两个应用程序必须用相同的签名。

Android系统在linux用户的基础上扩展了很多具有特殊权限的用户,一些常见的系统应用或者服务的userid如下:

  • system:uid=1000,这是一个特殊的用户,用于运行系统级别的进程,类似于Linux中的root用户。它拥有很高的权限,可以访问和修改系统设置和文件。

  • radio:uid=1001,这是一个用于运行电话、短信、数据等通信相关的进程的用户。它拥有访问网络和发送短信等权限。

  • bluetooth:uid=1002,这是一个用于运行蓝牙相关的进程的用户。它拥有访问蓝牙设备和设置等权限。

  • media:uid=1013,这是一个用于运行媒体相关的进程的用户。它拥有访问音频、视频、图片等媒体资源等权限。

  • sdcard_rw:uid=1019,这是一个用于运行SD卡相关的进程的用户。它拥有读写SD卡上的文件等权限。

具体定义可以参见system/core/libcutils/include/cutils/android_filesystem_config.h文件

Android 多用户

Android 多用户是一种系统功能,可以让一台 Android 设备上添加多个用户,每个用户都有自己的应用数据和设置。这样,不同的人可以在同一台设备上使用不同的帐号和应用,互不干扰。

在原生的Android系统中可以按照【系统设置】->【系统】->【多用户】的步骤开启多用户功能。如图所示:

Android用户类型

Android的多用户中主要分为以下几种类型:

  • 系统用户(System User):添加到设备的第一个用户。除非恢复出厂设置,否则无法移除系统用户;此外,即使其他用户在前台运行,系统用户也会始终处于运行状态。该用户还拥有特殊权限以及只有自己可以调整的特殊权限和配置。

  • 次要用户(Secondary User):除系统用户之外添加到设备的任何用户。次要用户可以移除(由次要用户自行移除或由管理员用户移除),且不会影响设备上的其他用户。

  • 访客用户(Guest User):临时的次要用户。访客用户设置中有明确的删除选项,当访客用户不再有用或用户账号过期时,可快速将其删除。一次只能有一个访客用户。

其中,对于次要用户,还可以细分为管理员(Admin)用户和非管理员(Non-Admin)用户,默认情况下,只有系统用户属于管理员用户。

在权限方面,系统用户>管理员用户>非管理员用户(次要用户)>访客用户。其中系统用户的默认userid为0,此后新创建的userid从10开始依次累加。

运行状态

Android P(Andro

你可能感兴趣的:(【AAOS】【源码分析】用户管理(一)-- 基本介绍)