2015年4月1日 星期三

[android]開發基礎(四)- 安全機制 SELinux

SELinux 使用白名單來定義系統可進行的行為,也就是說只有被允許的行為才會被執行.
Android 預設使用uid/gid來管理行為的權限,如果有應用程式取得root權限權限,此程式將不受任何限制,並且可在裝置上執行任何行為,基於SELinux設計的裝置可以限制這些取得root權限的程式(或者使用者),避免安全問題.

由於SELinux基於白名單方式的管理,所以系統如果有新增裝置或者功能,所以必須根據需求更改相關權限,以確保新的程式或者行為可以正確執行.

查詢裝置是否有被阻擋的行為可利用dmesg查詢:
su -c dmesg | grep 'avc: '

自訂SELinux主要有三個步驟

1.在BSP/device/manufacturer/device-name/sepolicy/底下,新增一個.te檔案
命令語法:
EX:(允許sdcard存取/data/下所有資料)
allow sdcardd media_data_file:file{read write};

2.更新boardconfig.mk,把新增的規則加進去

BOARD_SEPOLICY_DIRS += \
        device/manufacturer/device-name/sepolicy

BOARD_SEPOLICY_UNION += \
       file_contexts  \
       new_rule.te

3.更新file_contexts,把新的type加入
/data/(/.*)?    u:object_r:media_data_file:s0

重新build image,更新之後
即可套用新的規則.

官方也有相關說明
網址是:
官方說明網址

沒有留言: