由於每個應用程式都有個UID,只有帶著此UID,才能存取該UID所涵蓋的有關資料。所以如果AP-1與AP-2的UID不同,則在預設
(Default)情況下,雙方都無法讀取對方的資料。這種分而治之的方式,可以減輕駭客軟體的惡意傷害資料,提升手機的安全性。
當手機使用者(即User)下載你(即開發者)的應用程式,在安裝(Install)時,Android
就會給予一個UID。這個UID可連結到
該應用程式的AndroidManifest.xml檔案的內容。所以User在安裝你的應用程式時,在螢幕上的視窗裡可以檢視這個
AndroidManifest.xml檔案的內容。在檢視時,用戶會看到你對應用程式的目的、權限等說明。當你接受這支程式的意圖、權限說明之
後,Android就安裝它,並給它一個UID。萬一在你的應用程式執行期間有越軌(企圖做出非權限範圍)的行為時,用戶將會得到Android的警告訊
息。
有一些特殊情形下,兩支應用程式是可以持有一樣的UID。例如,同一位開發者撰寫的應用程式,常常需要推出新版本,這兩種版本的程式可以持有一樣的
UID, 才有權限去將舊版程式所產生的資料拷貝轉移到新版軟體裡。
一個用戶在其使用手機的用例(UseCase)裡,通常由一個Activity啟動開始,透過Intent物件去啟動其他的Activity、
Service、ContentProvider等具有不同UID的一連串應用程式,才能滿足一個用例的目標。在傳統電腦上,UID是跟隨著「人」,一個
用戶持著一個UID就能執行一連串的應用程式,而且在預設條件下是可以互相共享資料。但是在Android裡,這一連串的應用程式是各有自己的UID,而
且可能都持著不同的UID,原則上是不能任意存取對方的資料。
UID與AndroidManifest.xml檔案的連結除了可以保護各程式的私有資料之外,還可以禁止程式越權使用手機的各項資源。例如,開發者
在AndroidManifest.xml檔案裡表明此程式有READ_CONTACTS的授權。用戶在安裝此應用程式時,檢視過
AndroidManifest.xml的授權內涵,而且接受之。此應用程式就能合法地存取手機裡的通訊錄資料,甚至授權撥打電話、發簡訊等等。
剛才提到過,一個用戶的用例(UseCase)裡,通常由多個不同UID的Activity、Service、ContentProvider等一連
串的應用程式所串接,才能滿足用例的目標。此時,如果它們都必須存取通訊錄的話,必須都持有相同的READ_CONTACTS授權才行。
以上就應用程式的開發者、使用者的角度來說明Android的UID之意義和用法。至於Android如何運用Linux的進程(Process)機
制及Android的特殊管理政策,在此講義的節錄版裡,就省略之。
分享到:
相关推荐
认识 Android 的 UID(Unix user ID)与权限 Android 操作系统中,UID(Unix user ID)是一个非常重要的概念,它决定了应用程序的身份和权限。在传统计算机上,UID 是跟随着「人」(例如计算机的使用者或用户),而在...
与读取权限一样,从Android 6.0开始,也需要在运行时获取用户授权。 三、AndroidManifest.xml配置 在Android项目的`AndroidManifest.xml`文件中,我们需要声明所需的权限。对于文件读写权限,添加以下代码: ```...
### Android权限控制与UID Android的权限控制系统主要依赖于UID来进行访问控制。应用程序之间能否共享数据或服务,很大程度上取决于它们是否具有相同的UID或者是否明确地授予了跨应用程序访问的权限。例如,两个...
在Android系统中,`platform.x509.pem`通常与系统的签名密钥相关联,用于签署系统级的应用或更新,这样它们就可以获得像`android.uid.system`这样的高级权限。这个证书的公钥用于验证APK的签名。 3. **platform.pk8...
类似地,`checkUidPermission`方法检查给定的uid是否已被授予特定的权限。在修改后的代码中,这两个方法都被简单地覆盖了,无论权限请求是什么,都直接返回`PERMISSION_GRANTED`,这意味着权限将总是被授予,而不会...
2. **签名权限**:除了普通权限外,Android还支持签名权限,这种权限只允许与签名相同的应用访问。这用于保护特定API,确保只有信任的组件才能访问敏感功能。 3. **Content Providers**:Android通过Content ...
在 AndroidManifest.xml 文件中添加 android:sharedUserId="android.uid.system",这样可以使 APK 的权限升级到 system 级别。同时,还需要在对应的 Android.mk 文件中添加 LOCAL_CERTIFICATE := platform。这一方法...
要读取NFC标签的UID,我们首先要创建一个Android应用,并在`AndroidManifest.xml`文件中添加必要的权限: ```xml <uses-permission android:name="android.permission.NFC" /> <uses-feature android:name="android...
在Android操作系统中,"android.uid.system"是一个关键的概念,它涉及到系统的权限管理和应用程序的运行环境。这个标签指示了与系统核心服务和权限相关的文件集合。下面将详细解释这个概念及其相关文件的重要性和...
android:sharedUserId=“android.uid.system” 不过这样的话,app就要放到源码里编译了。 2、 /dev/ttyS4要有读写权限 (你的串口不一定是这个ttyS4) ls -l /dev/ttyS4 如果没有读写权限,记得在init.rc里面添加 ...
原因:apk的AndroidManifest.xml中声明了android:sharedUserId="android.uid.system",但没有相应的签名 解决方案: 1. 找到编译目标系统时的签名证书platform.pk8和platform.x509.pem,在android源码目录build\...
5. **运行时权限**:虽然大部分权限在安装时获取,但Android 6.0(API级别23)引入了运行时权限的概念,某些敏感权限需要在应用运行时由用户动态授予。例如,访问联系人或存储权限等。 6. **广播权限**:发送广播时...
而在Android中,每个应用程序被视为一个独立的Linux用户,拥有自己的UID,以此来实现应用程序间的隔离。 然而,Android的应用程序权限管理机制存在一些漏洞和隐患。恶意程序可以利用这些漏洞绕过权限检查,对用户...
Android系统是基于Linux内核构建的,其安全模型依赖于Linux的沙箱机制(Sandbox),每个应用程序都在自己的进程中运行,具有特定的用户ID(UID)和组ID(GID),以此限制它们对系统资源的访问。这一设计为应用程序...
12.认识Android的UID(Unix user ID)与权限.doc 13.Android的IBinder接口及其安全性机制.doc 14.Activity之间的Inter-process沟通.doc 15.从应用框架角度看ListView与Adapter类别.doc 16.善于设计自己的Listener来...
#### 三、Android权限获取与管理 1. **权限声明**:开发者需要在应用的AndroidManifest.xml文件中声明所需的权限。例如,如果一个应用需要访问用户的联系人信息,必须声明`<uses-permission android:name="android....
在Android系统中,uid(用户ID)是用来区分不同应用及其进程的标识,通常应用的uid是由分配给其的包名决定的。而system uid是系统保留的特殊uid,它拥有更高的权限,可以访问系统的敏感资源,如音频流、摄像头等。...
在manifest文件中添加`android:sharedUserId="android.uid.system"`属性到`<application>`标签,这将使应用与系统共享用户ID。 2. **添加权限声明**:在同一个`<application>`标签下,声明`android.permission....