android property屬性property_set()&& property_get() selinux許可權問題
首先得知道,android property屬性,在selinux許可權下我們不管是property_set還是property_get,相關服務都是需要許可權去操作的,特別是property_set,
這裡就我遇到的問題為例說明下(Android 8.0):
1.開始我就設定好需要的屬性名(property_set("sys.dualcamera.cali.cit", "cit");)
2.我去property_set("sys.dualcamera.cali.cit", "cit");這個屬性的時候遇到了許可權問題。
3.這裡我現在我要操作的服務下新增:
property.te檔案:
type camera_cali_cit_prop, property_type;
property_contexts檔案:
sys.dualcamera.cali.cit u:object_r:camera_cali_cit_prop:s0
factory.te檔案:
allow factory camera_cali_cit_prop:property_service set;
allow factory camera_cali_cit_prop:file {getattr open read };
這裡面的property.te和property_contexts檔案就是起到一個許可權轉化的功能,這裡實際最後起作用的是sys.dualcamera.cali.cit這個屬性(這裡就不細述),最後在factory.te(你相關服務許可權檔案)里加上對應的許可權就行。
這裡提醒下我自己的遇到的問題點:
在factory.te裡面沒有加allow factory camera_cali_cit_prop:file {getattr open read };的這個許可權的時候,你去property_set和property_get的時候都會報: Access denied finding property “XXXXXX”,所以在你需要property_get的時候也需要新增這個許可權。
本文如有問題,歡迎指出糾正,感恩