Android property屬性許可權新增

petercao發表於2024-06-12

https://blog.csdn.net/qq_28648425/article/details/86691949

Google在Android O以後,為了降低vendor和system之間的耦合度,對property的作用區域也做了明確的區分,分為vendor三方的property和system平臺端的property.
因為參與的專案中需要新增一個system property用作三方應用的包名識別,所以新增了一個property:persist.camera.packagename,之後發現此property並沒有被正確的property_set賦值, 同時報如下錯誤,

E libc    : Access denied finding property "persist.camera.packagename"

在userdebug 版本中setenforce 0關掉selinux許可權後此包名可以被正確賦值,所以此處確定是selinux許可權問題.
vendor的property許可權大多都在devices目錄下面配置,但是其下沒有配置到system平臺段的許可權,之後查到system的在此路徑下配置 system/sepolicy .
在system/sepolicy / private/property_contexts檔案中新增如下把該property新增到system_prop table表中,此處也可以新建表(未做驗證)

 persist.camera.packagename         u:object_r:system_prop:s0

因為這個property是cameraserver配置的,所以需要在system/sepolicy / private/cameraserver.te中新增如下:, 賦予cameraserver對system_prop的設定許可權,
set_prop(cameraserver, system_prop)

新增上述程式碼後,發現編譯失敗,檢視編譯失敗log,發現其中配置的property要同system/sepolicy / prebuilts/api/28.0/private/ 要相同,不然會導致編譯fail,此處對比同步過去即可.

如上,system平臺端property屬性許可權新增完成,vendor三方屬性在另一篇博文中說明.

相關文章