Android7.0SEAndroidapp權(quán)限配置的示例分析-創(chuàng)新互聯(lián)

小編給大家分享一下Android 7.0 SEAndroid app權(quán)限配置的示例分析,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

偏關(guān)網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),偏關(guān)網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為偏關(guān)成百上千提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的偏關(guān)做網(wǎng)站的公司定做!

1.SEAndroid app分類

SELinux(或SEAndroid)將app劃分為主要三種類型(根據(jù)user不同,也有其他的domain類型):

1)untrusted_app 第三方app,沒(méi)有Android平臺(tái)簽名,沒(méi)有system權(quán)限

2)platform_app 有Android平臺(tái)簽名,沒(méi)有system權(quán)限

3)system_app 有android平臺(tái)簽名和system權(quán)限

從上面劃分,權(quán)限等級(jí),理論上:untrusted_app < platform_app < system_app

2.seapp_contexts定義

system/sepolicy/seapp_contexts

isSystemServer=true domain=system_server 
user=system seinfo=platform domain=system_app type=system_app_data_file 
user=bluetooth seinfo=platform domain=bluetooth type=bluetooth_data_file 
user=nfc seinfo=platform domain=nfc type=nfc_data_file 
user=radio seinfo=platform domain=radio type=radio_data_file 
user=shared_relro domain=shared_relro 
user=shell seinfo=platform domain=shell type=shell_data_file 
user=_isolated domain=isolated_app levelFrom=user 
user=_app seinfo=platform domain=platform_app type=app_data_file levelFrom=user 
user=_app domain=untrusted_app type=app_data_file levelFrom=user

從上面可以看出,domain和type由user和seinfo兩個(gè)參數(shù)決定。

比如:

user=system seinfo=platform,domain才是system_app

user=_app,可以是untrusted_app或platform_app,如果seinfo=platform,則是platform_app。

3.user和seinfo判定方式

首先看user,user可以理解為UID,例如ps -Z結(jié)果如下:

u:r:system_app:s0    system 2414 1172 com.android.keychain 
u:r:platform_app:s0   u0_a6  2439 1172 com.android.managedprovisioning 
u:r:untrusted_app:s0   u0_a8  2460 1172 com.android.onetimeinitializer 
u:r:system_app:s0    system 2480 1172 com.android.tv.settings 
u:r:untrusted_app:s0   u0_a27 2504 1172 com.android.email 
u:r:untrusted_app:s0   u0_a28 2523 1172 com.android.exchange 
u:r:untrusted_app:s0   u0_a7  2567 1172 com.android.musicfx

第一列是SContext,第二列是UID,只要UID是system的基本都是system_app,反過(guò)來(lái)一樣。

其他的U0_XXX要么屬于platform_app或untrusted_app

seinfo由system/sepolicy/mac_permissions.xml決定,內(nèi)容如下:

<!-- Platform dev key in AOSP --> 
<signer signature="@PLATFORM" > 
 <seinfo value="platform" /> 
</signer> 
 
<!-- All other keys --> 
<default> 
 <seinfo value="default" /> 
</default>

即如果簽名是platform,seinfo就是platform,其他的比如shared等,seinfo是default。

比如上面ps -Z的結(jié)果里面,OneTimeInitializer.apk是untrusted_app,ManagedProvisioning.apk是platform_app。

分別查看這兩個(gè)app的Android.mk

packages\apps\OneTimeInitializer\Android.mk 沒(méi)有定義LOCAL_CERTIFICATE,默認(rèn)是shared

packages\apps\ManagedProvisioning\Android.mk 有定義LOCAL_CERTIFICATE := platform

因?yàn)镸anagedProvisioning.apk有platform簽名,所以seinfo是platform。

TvSettings是system_app,查看對(duì)應(yīng)的參數(shù):

packages\apps\TvSettings\Settings\Android.mk 有定義LOCAL_CERTIFICATE := platform

packages\apps\TvSettings\Settings\AndroidManifest.xml 有定義android:sharedUserId="android.uid.system"

TvSettings user是system,seinfo是platform,所以是system_app

packages\apps\ManagedProvisioning\AndroidManifest.xml 沒(méi)有定義android:sharedUserId="android.uid.system"

所以ManagedProvisioning雖然seinfo是platform,但是user不是system,因此只是platform_app,而不是system_app。

4.app對(duì)應(yīng)的te文件

system_app -> system/sepolicy/system_app.te

untrusted_app -> system/sepolicy/untrusted_app.te

platform_app -> system/sepolicy/platform_app.te

對(duì)應(yīng)的權(quán)限,通過(guò)allow語(yǔ)句給予,比如只有system_app才可以設(shè)置prop:

# Write to properties 
unix_socket_connect(system_app, property, init) 
allow system_app debug_prop:property_service set; 
allow system_app net_radio_prop:property_service set; 
allow system_app system_radio_prop:property_service set; 
auditallow system_app net_radio_prop:property_service set; 
auditallow system_app system_radio_prop:property_service set; 
allow system_app system_prop:property_service set; 
allow system_app ctl_bugreport_prop:property_service set; 
allow system_app logd_prop:property_service set;

總結(jié):

在引入SEAndroid后,app開(kāi)發(fā)需要注意需要哪些權(quán)限,根據(jù)配置(shareuid和簽名)來(lái)決定domain,從而決定權(quán)限大小。

看完了這篇文章,相信你對(duì)“Android 7.0 SEAndroid app權(quán)限配置的示例分析”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!

網(wǎng)頁(yè)名稱:Android7.0SEAndroidapp權(quán)限配置的示例分析-創(chuàng)新互聯(lián)
本文地址:http://muchs.cn/article6/dsehog.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站網(wǎng)站排名、做網(wǎng)站、用戶體驗(yàn)、ChatGPTApp開(kāi)發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都app開(kāi)發(fā)公司