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,更新之後
即可套用新的規則.
官方也有相關說明
網址是:
官方說明網址
沒有留言:
張貼留言