在传统计算机上,UID是跟随着「人」(例如计算机的使用者或用户)。Android里的UID是跟随着「软件」(例如Android应用程序)。
由于每个应用程序都有个UID,只有带着此UID,才能存取该UID所涵盖的有关资料。所以如果AP-1与AP-2的UID不同,则在预设(Default)情况下,双方都无法读取对方的数据。这种分而治之的方式,可以减轻黑客软件的恶意伤害数据,提升手机的安全性。
当手机使用者(即User)下载你(即开发者)的应用程序,在安装(Install)时,Android就会给予一个UID。这个UID可连结到该应用程序的 AndroidManifest.xml档案的内容。所以User在安装你的应用程序时,在屏幕上的窗口里可以检视这个AndroidManifest.xml档案的内容。在检视时,用户会看到你对应用程序的目的、权限等说明。当你接受这支程序的意图、权限说明之后,Android就安装它,并给它一个UID。万一在你的应用程序执行期间有越轨(企图做出非权限范围)的行为时,用户将会得到Android的警告讯息。
有一些特殊情形下,两支应用程序是可以持有一样的UID。例如,同一位开发者撰写的应用程序,常常需要推出新版本,这两种版本的程序可以持有一样的UID, 才有权限去将旧版程序所产生的数据拷贝转移到新版软件里。
一个用户在其使用手机的用例(Use Case)里,通常由一个Activity启动开始,透过Intent对象去启动其它的Activity、Service、ContentProvider等具有不同UID的一连串应用程序,才能满足一个用例的目标。在传统计算机上,UID是跟随着「人」,一个用户持着一个UID就能执行一连串的应用程序,而且在预设条件下是可以互相共享数据。但是在Android里,这一连串的应用程序是各有自己的UID,而且可能都持着不同的UID,原则上是不能任意存取对方的资料。
UID与AndroidManifest.xml档案的连结除了可以保护各程序的私有数据之外,还可以禁止程序越权使用手机的各项资源。例如,开发者在AndroidManifest.xml档案里表明此程序有READ_CONTACTS的授权。用户在安装此应用程序时,检视过AndroidManifest.xml的授权内涵,而且接受之。此应用程序就能合法地存取手机里的通讯簿数据,甚至授权拨打电话、发简讯等等。
刚才提到过,一个用户的用例(Use Case)里,通常由多个不同UID的Activity、Service、ContentProvider等一连串的应用程序所串接,才能满足用例的目标。此时,如果它们都必须存取通讯簿的话,必须都持有相同的READ_CONTACTS授权才行。
以上就应用程序的开发者、使用者的角度来说明Android的UID之意义和用法
这篇是那个台湾人叫高焕堂的一篇,贴上来给大家增加点基础知识
分享到:
相关推荐
认识 Android 的 UID(Unix user ID)与权限 Android 操作系统中,UID(Unix user ID)是一个非常重要的概念,它决定了应用程序的身份和权限。在传统计算机上,UID 是跟随着「人」(例如计算机的使用者或用户),而在...
- 修改用户的UID(User ID)或GID(Group ID),需谨慎操作。 3. **用户账号删除**: - 使用`userdel`命令删除用户账户。 - 可选择保留或删除用户的家目录及文件。 4. **密码管理**: - 使用`passwd`命令为...
在深入探讨Android中UID与PID的作用与区别的过程中,我们首先需要理解这两个概念的基本定义以及它们在Android系统架构中的角色。 ### PID(Process Identifier) PID,即进程标识符,是操作系统为每个运行的进程...
每个应用程序都有自己的用户ID(UID)和一组权限,这些权限决定了应用可以执行的操作。Android系统提供了两种类型的权限:正常权限和危险权限。 1. 正常权限:这类权限对应用的功能影响较小,系统会在安装时自动...
原因:apk的AndroidManifest.xml中声明了android:sharedUserId="android.uid.system",但没有相应的签名 解决方案: 1. 找到编译目标系统时的签名证书platform.pk8和platform.x509.pem,在android源码目录build\...
12.认识Android的UID(Unix user ID)与权限.doc 13.Android的IBinder接口及其安全性机制.doc 14.Activity之间的Inter-process沟通.doc 15.从应用框架角度看ListView与Adapter类别.doc 16.善于设计自己的Listener来...
9. **系统调用**:`su.c`使用内核提供的系统调用与硬件和操作系统进行交互,例如`setuid`、`setgid`用于改变进程的用户和组ID。 10. **编译与调试**:理解`su.c`源码后,开发者可能需要重新编译该组件,并在设备或...
在Android系统中,`platform.x509.pem`通常与系统的签名密钥相关联,用于签署系统级的应用或更新,这样它们就可以获得像`android.uid.system`这样的高级权限。这个证书的公钥用于验证APK的签名。 3. **platform.pk8...
12.认识Android的UID(Unix user ID)与权限 13.Android的IBinder接口及其安全性机制 14.Activity之间的Inter-process沟通 15.从应用框架角度看ListView与Adapter类别 16.善于设计自己的Listener来进行沟通 17....
Android安全架构的核心是基于Linux内核的权限管理系统,它构建在微内核之上,为每个应用程序分配了独立的用户ID(UID)和组ID(GID),以实现进程隔离。Android系统还引入了 SELinux(Security-Enhanced Linux)来...
标题“Android通过共享用户ID来实现多Activity进程共享”指出了一个解决方案,即使用同一个用户ID(User ID, UID)来使得不同进程间的Activity能够共享数据和资源。这种技术主要应用于需要提高应用性能、隔离安全...
要读取NFC标签的UID,我们首先要创建一个Android应用,并在`AndroidManifest.xml`文件中添加必要的权限: ```xml <uses-permission android:name="android.permission.NFC" /> <uses-feature android:name="android...
在Android系统中,应用程序需要获取特定的权限才能访问或操作敏感数据或系统资源。这些权限在安装应用时或运行时由用户决定是否授予。然而,根据提供的标题和描述,这里介绍了一个方法,可以用于在Android 8.1(API...
Android系统是基于Linux内核的,因此它的权限管理遵循Linux的用户ID(UID)机制。每个在Android上运行的应用程序都会被分配一个独特的UID,这决定了它能访问哪些资源和执行哪些操作。"android.uid.system"是一个特殊...
在Linux和UNIX系统中,文件安全与权限是确保系统和用户数据安全的重要组成部分。以下是在《Linux与UNIX Shell编程指南》中提到的一些关键知识点: 1. 文件权限位 Linux系统中,每个文件和目录都有与之相关的权限位...
在 AndroidManifest.xml 文件中添加 android:sharedUserId="android.uid.system",这样可以使 APK 的权限升级到 system 级别。同时,还需要在对应的 Android.mk 文件中添加 LOCAL_CERTIFICATE := platform。这一方法...
在Linux和Unix操作系统中,Shell权限管理是系统管理员和用户日常操作的核心部分。它涉及到对文件和目录的访问控制,确保系统的安全性和稳定性。本手册将深入探讨这一关键主题,帮助初学者和管理员掌握基本到高级的...
综上所述,Android的安全体系是多层次的,包括进程隔离、权限管理、应用签名、用户ID分配、文件权限、运行时权限检查等,旨在保护用户数据安全及隐私,同时也为开发者提供了一个可控的开发环境。在进行Android应用...