android開發基礎(五)- avc: denied解決範例
之前提到過 SELINUX for Android,
Android 5 之後引入了selinux機制,
在遇到權限問題時候,
系統都會有log 描述問題,
基本上就是缺什麼補什麼,
直到沒有avc denied為止,
當然,
系統預設的never allow建議不要修改,
底下列了幾個
avc: denied解決範例
Table of Contents
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 };
權限問題不會一次全部顯示出來,
出現一個加一個直到沒有為止.
================================
分享與讚美,是我們繼續打拼的原動力.
若文章對您有幫助,望請不吝按讚或分享.
或者對影片有興趣可以訂閱頻道接收通知
================================
YouTube 頻道
FB 粉絲專頁
================================
hi~請教如果添加了某項allow, 發現又與其他的原生.te檔衝突(neverallow),像這類的問題通常要怎麼解決呢??
不建議修改
否則在將來CTS測試項目會有問題
(android.cts.security.SELinuxNeverallowRulesTest)
但如果只是個人使用的話,
那就放心改吧
感謝您的回覆,再請教網路上有蒐到利用自訂domain, 或是自訂file_type的方式去避開neverallow。就您的經驗來看我該如何快速知道遇到什麼樣的denied訊息去分辨下一步該自訂domain還是新增一個file_type?謝謝!
這個似乎沒捷徑,
都是遇到才來解決,
除非對所有neverallow都很熟的人才有辦法
OK, 謝謝!