`

认识Android的UID(Unix user ID)与权限

 
阅读更多
    在传统计算机上,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 12.认识Android的UID(Unix user ID)与权限

    认识 Android 的 UID(Unix user ID)与权限 Android 操作系统中,UID(Unix user ID)是一个非常重要的概念,它决定了应用程序的身份和权限。在传统计算机上,UID 是跟随着「人」(例如计算机的使用者或用户),而在...

    台湾高焕堂Android讲义

    12.认识Android的UID(Unix user ID)与权限.doc 13.Android的IBinder接口及其安全性机制.doc 14.Activity之间的Inter-process沟通.doc 15.从应用框架角度看ListView与Adapter类别.doc 16.善于设计自己的Listener来...

    高焕堂关于Android讲义

    12.认识Android的UID(Unix user ID)与权限 13.Android的IBinder接口及其安全性机制 14.Activity之间的Inter-process沟通 15.从应用框架角度看ListView与Adapter类别 16.善于设计自己的Listener来进行沟通 17....

    Android IBinder

    在 Android 系统中,Activity 和 Service 组件通常运行在不同的进程中,每个进程都有其自己的 UID(Unix user ID)。由于它们运行在不同的进程中,Activity 组件通常依赖 Intent 对象来请求 Android 启动所需的 ...

Global site tag (gtag.js) - Google Analytics