認識Android的UID與許可權

2021-06-22 12:09:50 字數 1232 閱讀 1297

由於每個應用程式都有個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如何運用linux的程序(process)機制及android的特殊管理政策,在此講義的節錄版裡,就省略之。

ANDROID 中UID與PID的作用與區別

pid 為process identifier,pid就是各程序的身份標識,程式一執行系統就會自動分配給程序乙個獨一無二的pid。程序中止後pid被系統 可能會被繼續分配給新執行的程式,但是在android系統中一般不會把已經kill掉的程序id重新分配給新的程序,新產生程序的程序號,一般比產生之前...

ANDROID 中UID與PID的作用與區別

pid 為process identifier,pid就是各程序的身份標識,程式一執行系統就會自動分配給程序乙個獨一無二的pid。程序中止後pid被系統 可能會被繼續分配給新執行的程式,但是在android系統中一般不會把已經kill掉的程序id重新分配給新的程序,新產生程序的程序號,一般比產生之前...

Android中PID與UID的作用與區別

pid 為process identifier,pid就是各程序的身份標識,程式一執行系統就會自動分配給程序乙個獨一無二的pid。程序中止後pid被系統 可能會被繼續分配給新執行的程式,但是在android系統中一般不會把已經kill掉的程序id重新分配給新的程序,新產生程序的程序號,一般比產生之前...