Android 多用戶(hù)詳情
Android 多用戶(hù)
一、Linux 用戶(hù)和組
Linux作為一個(gè)多用戶(hù)的操作系統(tǒng),每個(gè)用戶(hù)在機(jī)器上都有一個(gè)私有空間,特別是它會(huì)擁有配額的磁盤(pán)空間,以存儲(chǔ)文件、接收私有的mail消息等。Linux必須保證這部分私有空間只對(duì)它的擁有者是可見(jiàn)的(類(lèi)似于銀行賬戶(hù),當(dāng)然只能對(duì)于儲(chǔ)戶(hù)自己可見(jiàn)啦),而且應(yīng)該確保沒(méi)有用戶(hù)可以使用系統(tǒng)應(yīng)用程序來(lái)侵犯其他用戶(hù)的私有空間(當(dāng)然也就是不能讓別人隨便來(lái)動(dòng)我銀行賬戶(hù)的資金啦)。
在Linux操作系統(tǒng)中,所有的用戶(hù)都是通過(guò)唯一的用戶(hù)ID(UID->User ID)來(lái)識(shí)別的。但是如果選擇與其他用戶(hù)共享資料,共享的用戶(hù)就應(yīng)該是一個(gè)或者多個(gè)組的成員,這個(gè)用組ID(GID->group ID)來(lái)識(shí)別(幾個(gè)人出錢(qián)成立了一個(gè)小公司,這個(gè)公司名就是GID,我們的錢(qián)就是共享的資源,大家都可以使用和可見(jiàn))。每個(gè)文件都可與一個(gè)確切的組相關(guān)聯(lián)。如:作為文件擁有者的用戶(hù)對(duì)該文件的讀寫(xiě)權(quán)限,而組中其他用戶(hù)則只擁有讀權(quán)限,系統(tǒng)內(nèi)非組中的用戶(hù)則沒(méi)有任何權(quán)限(不可讀不可寫(xiě)不可執(zhí)行)。
1、超級(jí)用戶(hù):
在Linux系統(tǒng)中,有一個(gè)特殊的用戶(hù)->超級(jí)用戶(hù)(root),root用戶(hù)幾乎可以在Linux系統(tǒng)中做任何事情,因?yàn)镺S沒(méi)有對(duì)它采取一般的防護(hù)機(jī)制,root用戶(hù)可以訪問(wèn)系統(tǒng)上的每個(gè)文件,可以管理每一個(gè)正在運(yùn)行的用戶(hù)程序。
2、普通用戶(hù)和超級(jí)用戶(hù)的切換
在Linux命令行輸入命令:su -,
然后輸入root用戶(hù)的密碼即可切換至root用戶(hù),但是建議一般情況下,不要隨意使用root用戶(hù),因?yàn)閞oot用戶(hù)操作失誤會(huì)導(dǎo)致系統(tǒng)文件丟失甚至系統(tǒng)崩潰。
在傳統(tǒng)計(jì)算機(jī)上,UID是跟隨著「人」(例如計(jì)算機(jī)的使用者或用戶(hù))。Android里的UID是跟隨著「軟件」(例如Android應(yīng)用程序)。
由于每個(gè)應(yīng)用程序都有個(gè)UID,只有帶著此UID,才能存取該UID所涵蓋的有關(guān)資料。所以如果AP-1與AP-2的UID不同,則在預(yù)設(shè)(Default)情況下,雙方都無(wú)法讀取對(duì)方的數(shù)據(jù)。這種分而治之的方式,可以減輕黑客軟件的惡意傷害數(shù)據(jù),提升手機(jī)的安全性。
當(dāng)手機(jī)使用者(即User)下載你(即開(kāi)發(fā)者)的應(yīng)用程序,在安裝(Install)時(shí),Android就會(huì)給予一個(gè)UID。這個(gè)UID可連結(jié)到該應(yīng)用程序的 AndroidManifest.xml檔案的內(nèi)容。所以User在安裝你的應(yīng)用程序時(shí),在屏幕上的窗口里可以檢視這個(gè)AndroidManifest.xml檔案的內(nèi)容。在檢視時(shí),用戶(hù)會(huì)看到你對(duì)應(yīng)用程序的目的、權(quán)限等說(shuō)明。當(dāng)你接受這支程序的意圖、權(quán)限說(shuō)明之后,Android就安裝它,并給它一個(gè)UID。萬(wàn)一在你的應(yīng)用程序執(zhí)行期間有越軌(企圖做出非權(quán)限范圍)的行為時(shí),用戶(hù)將會(huì)得到Android的警告訊息。
有一些特殊情形下,兩支應(yīng)用程序是可以持有一樣的UID。例如,同一位開(kāi)發(fā)者撰寫(xiě)的應(yīng)用程序,常常需要推出新版本,這兩種版本的程序可以持有一樣的UID, 才有權(quán)限去將舊版程序所產(chǎn)生的數(shù)據(jù)拷貝轉(zhuǎn)移到新版軟件里。
Pid是進(jìn)程ID
,Uid是用戶(hù)ID
,只是Android和計(jì)算機(jī)不一樣,計(jì)算機(jī)每個(gè)用戶(hù)都具有一個(gè)Uid,哪個(gè)用戶(hù)start的程序,這個(gè)程序的Uid就是那個(gè)用戶(hù),而Android中每個(gè)程序都有一個(gè)Uid,默認(rèn)情況下,Android會(huì)給每個(gè)程序分配一個(gè)普通級(jí)別互不相同的 Uid,如果應(yīng)用之間要互相調(diào)用,只能是Uid相同才行,這就使得共享數(shù)據(jù)具有了一定安全性,每個(gè)軟件之間是不能隨意獲得數(shù)據(jù)的。而同一個(gè)application 只有一個(gè)Uid,所以application下的Activity之間不存在訪問(wèn)權(quán)限的問(wèn)題。
關(guān)于APPID UID userid,在單用戶(hù)的情況下,appid 就是Uid,在多用戶(hù)的時(shí)候通過(guò)appid 和userid 重新計(jì)算新的uid
public static int getUid(@UserIdInt int userId, @AppIdInt int appId) { if (MU_ENABLED) { return userId * PER_USER_RANGE + (appId % PER_USER_RANGE); } else { return appId; } }
UserHandle
包含三種概念:userid,uid,appid
- userid:就是有多少個(gè)實(shí)際的用戶(hù)羅,例如老爸很窮,要跟兒子共用一臺(tái)手機(jī),那可以跟手機(jī)將兩個(gè)用戶(hù),user 0和user 1。兩個(gè)用戶(hù)的應(yīng)用和數(shù)據(jù)是獨(dú)立的。
- uid:跟應(yīng)用進(jìn)程相關(guān)。除了sharduid的應(yīng)用,每個(gè)用戶(hù)的每個(gè)應(yīng)用的uid不一樣的。用戶(hù)0的應(yīng)用的uid從一萬(wàn)開(kāi)始算。
- appid:跟app相關(guān),包名相同的appid都一樣。即使是不同用戶(hù)。例如你和兒子都在這臺(tái)手機(jī)裝了微信,但這兩個(gè)微信的appid是一樣的。
appid 的范圍是 public static final int FIRST_APPLICATION_UID = 10000; /** * Last of application-specific UIDs starting at * {@link #FIRST_APPLICATION_UID}. */ public static final int LAST_APPLICATION_UID = 19999;
對(duì)于用戶(hù)組的進(jìn)程來(lái)說(shuō),似于u0_a86這樣的UID。這個(gè)UID的前一部分表示userId,后一部分表示appId(減去Process.FIRST_APPLICATION_UID的結(jié)果)。
//uid 不能超出限制。Android 對(duì) UID 進(jìn)行了分類(lèi),應(yīng)用 APK 所在進(jìn)程的 UID 從 10000 開(kāi)始, //而系統(tǒng) APK 所在進(jìn)程小于 10000
到此這篇關(guān)于Android 多用戶(hù)詳情的文章就介紹到這了,更多相關(guān)Android 多用戶(hù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- android10 隱藏SystemUI鎖屏下的多用戶(hù)圖標(biāo)的示例代碼
- Android 如何攔截用戶(hù)頻繁操作(點(diǎn)擊事件)
- Android實(shí)現(xiàn)用戶(hù)圓形頭像和模糊背景
- Android實(shí)現(xiàn)簡(jiǎn)單用戶(hù)注冊(cè)案例
- Android啟動(dòng)頁(yè)用戶(hù)相關(guān)政策彈框的實(shí)現(xiàn)代碼
- 詳解Android Studio實(shí)現(xiàn)用戶(hù)登陸界面demo(xml實(shí)現(xiàn))
- android實(shí)現(xiàn)記住用戶(hù)名和密碼以及自動(dòng)登錄
- Android權(quán)限如何禁止以及友好提示用戶(hù)開(kāi)通必要權(quán)限詳解
- Android百度地圖定位、顯示用戶(hù)當(dāng)前位置
- Android模擬用戶(hù)點(diǎn)擊的實(shí)現(xiàn)方法
- Android EditText 監(jiān)聽(tīng)用戶(hù)輸入完成的實(shí)例
- Android 用戶(hù)Session管理的設(shè)計(jì)方案
- Android基于AlarmManager實(shí)現(xiàn)用戶(hù)在線(xiàn)心跳功能示例
相關(guān)文章
android 處理配置變更的實(shí)現(xiàn)方法
這篇文章主要介紹了android 處理配置變更的實(shí)現(xiàn)方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-07-07Android列表控件Spinner簡(jiǎn)單用法示例
這篇文章主要介紹了Android列表控件Spinner簡(jiǎn)單用法,結(jié)合實(shí)例形式分析了Android列表控件Spinner的布局與功能實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-12-12Android ContentProvider獲取手機(jī)聯(lián)系人實(shí)例
這篇文章主要介紹了Android ContentProvider獲取手機(jī)聯(lián)系人實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02Android中Activity生命周期和啟動(dòng)模式詳解
這篇文章主要介紹了Activity生命周期和啟動(dòng)模式詳解的相關(guān)資料,需要的朋友可以參考下2016-07-07Android開(kāi)場(chǎng)動(dòng)畫(huà)類(lèi)完整實(shí)現(xiàn)代碼
這篇文章主要介紹了Android開(kāi)場(chǎng)動(dòng)畫(huà)類(lèi)完整實(shí)現(xiàn)代碼,是非常實(shí)用的功能,需要的朋友可以參考下2014-07-07簡(jiǎn)單實(shí)現(xiàn)Android讀取網(wǎng)絡(luò)圖片到本地
這篇文章主要為大家詳細(xì)介紹了如何簡(jiǎn)單實(shí)現(xiàn)Android讀取網(wǎng)絡(luò)圖片到本地的方法,感興趣的小伙伴們可以參考一下2016-08-08Android中ViewPager獲取當(dāng)前顯示的Fragment
這篇文章主要介紹了Android中ViewPager獲取當(dāng)前顯示的Fragment的兩種方法,一種是使用 getSupportFragmentManager().findFragmentByTag()方法,另一種是重寫(xiě)適配器的 setPrimaryItem()方法,有需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-01-01Android開(kāi)發(fā)之計(jì)算器GridLayout布局實(shí)現(xiàn)方法示例
這篇文章主要介紹了Android開(kāi)發(fā)之計(jì)算器GridLayout布局實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了Android計(jì)算器界面布局及表達(dá)式計(jì)算相關(guān)操作技巧,需要的朋友可以參考下2019-03-03Android判斷手機(jī)是否是小米MIUI系統(tǒng)的方法
這篇文章主要介紹了Android判斷手機(jī)是否是小米MIUI系統(tǒng)的方法的相關(guān)資料,需要的朋友可以參考下2016-02-02