標籤:android 安全
android的許可權persion也是細粒度特權管理。
分類:
Normal
Dangerous(安裝時有提示的)
Signature(用於廠商定義的許可權,廠商開發的幾個app能用,其他第三方不能用,用的的是廠商的private key來簽名)
SignatureOrSystem(廠商或是在system內建的能用的許可權)
在frameworks/base/core/res/AndroidManifest.xml 下可以看到定義的許可權
運行時許可權控制方式:
1.通過PacakageManage的CheckPermission
Android專屬的Service(底層平台Linux不具有)
所以需要在Android本身Framework中控制
主流的Service一般都基於Binder IPC或者其他IPC提供服務
所以在最低層控制(Service所在的Server中)以避免逃逸控制
繞開Utility Function直接Invoke Remote Service
例子: DayDream
2.映射為OS的特定屬性
非Android特有的Service(底層平台已經提供,如File訪問,TCPIP數
據收發等)
多個入口訪問: Android API, Java API,NDK C API, Shell, etc
底層控制準則,會聚口在底層,所以在底層(OS層面)統一控制,這
樣可以避免逃逸控制
所以複用OS的一些安全控制特性,比如GID
所以需要把Android空間的Permission Mapping到OS的GID
例子:訪問SDCard
當我們聲明具有讀寫SD卡許可權時
查看檔案許可權,每個都加上了gid為 sdcard-_rw
怎麼加的呢?
文法:
UID assigning permission:<assign-permission
name=“permission_name" uid=“target_uid" />
GIDs Mapping: <permission name=“permission_name " >
<group gid=“assigned gid" />
<group gid=“assigned gid" />
…………
</permission>
發生時刻:安裝時
在etc/permissions目錄下
任何符合以上文法的在system/etc/permissions下面的xml檔案,都會被
系統讀取來parse並進行UID/GID的mapping。比如Platform.xml
安全性:只有ROOT使用者才允許新增或者改寫。
Android安全機制--許可權