2017年7月20日 星期四

android開發基礎(五)- avc: denied解決範例


之前提到過 SELINUX for Android,

Android 5 之後引入了selinux機制,

在遇到權限問題時候,

系統都會有log 描述問題,

基本上就是缺什麼補什麼,

直到沒有avc denied為止,

當然,

系統預設的never allow建議不要修改,

底下列了幾個

avc: denied解決範例

1.
type=1400 audit(4.840:7): avc: denied { getattr } for pid=204 comm="cameraserver" path="/vendor" dev="rootfs" ino=7096 scontext=u:r:cameraserver:s0 tcontext=u:object_r:rootfs:s0 tclass=lnk_file permissive=0

重點在於紅字,

這個範例簡單的講,

cameraserver 對 rootfs  的 lnk_file 缺少了 { getattr } 的權限 ,

只需要在cameraserver.te中

新增


allow cameraserver rootfs:lnk_file { getattr };


即可

2.
type=1400 audit(28.360:14): avc: denied { execute } for pid=704 comm="sh" name="toybox" dev="mmcblk3p5" ino=368 scontext=u:r:demo:s0 tcontext=u:object_r:toolbox_exec:s0 tclass=file permissive=0

#type=1400 audit(28.130:14): avc: denied { read open } for pid=718 comm="sh" path="/system/bin/toybox" dev="mmcblk3p5" ino=368 scontext=u:r:demo:s0 tcontext=u:object_r:toolbox_exec:s0 tclass=file permissive=0

在這個範例中

demo 對 toolbox_exec  的 file 缺少了 { execute read open } 的權限 ,
(多個權限設定,

只需要以大括號框住 ,

空格隔開即可)

找到demo.te

加入


allow demo toolbox_exec:file { execute read open  };

權限問題不會一次全部顯示出來,

出現一個加一個直到沒有為止.





沒有留言: