国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

Android 7.0 SEAndroid app權(quán)限配置方法

2019-12-12 00:38:57
字體:
供稿:網(wǎng)友

1.SEAndroid app分類

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

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

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

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

從上面劃分,權(quán)限等級,理論上: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兩個參數(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,反過來一樣。

其他的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。

分別查看這兩個app的Android.mk

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

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

因為ManagedProvisioning.apk有platform簽名,所以seinfo是platform。

TvSettings是system_app,查看對應(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 沒有定義android:sharedUserId="android.uid.system"

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

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

system_app -> system/sepolicy/system_app.te

untrusted_app -> system/sepolicy/untrusted_app.te

platform_app -> system/sepolicy/platform_app.te

對應(yīng)的權(quán)限,通過allow語句給予,比如只有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開發(fā)需要注意需要哪些權(quán)限,根據(jù)配置(shareuid和簽名)來決定domain,從而決定權(quán)限大小。

以上這篇Android 7.0 SEAndroid app權(quán)限配置方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持武林網(wǎng)。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 孝昌县| 伊宁县| 万源市| 安达市| 始兴县| 锡林郭勒盟| 龙井市| 旬阳县| 喀喇沁旗| 盐亭县| 独山县| 鲁甸县| 芦溪县| 长汀县| 本溪市| 宁河县| 江阴市| 阿勒泰市| 监利县| 汽车| 涪陵区| 龙泉市| 禄劝| 六枝特区| 满洲里市| 当阳市| 清远市| 宜君县| 阳原县| 朝阳区| 城口县| 即墨市| 瑞昌市| 秀山| 三河市| 祁连县| 昌邑市| 河池市| 白水县| 康马县| 六盘水市|