Android 在 SElinux下 如何获得对一个内核节点的访问权限
生活随笔
收集整理的這篇文章主要介紹了
Android 在 SElinux下 如何获得对一个内核节点的访问权限
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
點擊打開鏈接
Android?5.0下,因為采取了SEAndroid/SElinux的安全機制,即使擁有root權限,或者對某內核節點設置為777的權限,仍然無法在JNI層訪問。
本文將以用戶自定義的內核節點/dev/wf_bt為例,手把手教會讀者如何在JNI層獲得對該節點的訪問權限。第一步:找到需要訪問該內核節點的進程(process),筆者自己這個節點由system_server進程來訪問
第二步:打開文件AndroidL/android/external/sepolicy/file_contexts.be 仿照這個文件里的寫法,為你的節點定義一個你想要的名字: [python]?view plaincopy
第三步:打開文件AndroidL/android/external/sepolicy/device.te 仿照這個文件里的寫法,將剛剛第二步寫的wf_bt_device聲明為dev_type: [python]?view plaincopy
第四步: AndroidL/android/external/sepolicy/目錄下很多.te文件都是以進程名來結尾的,比如有針對surfaceflinger進程的surfaceflinger,有針對vold進程的vold.te, 剛剛從第一步得到,這個節點是由system_server進程來訪問,所以,我們找到system_server.te打開,加入允許這個進程對/dev/wf_bt的讀寫權限,
[python]?view plaincopy
fd =open("/dev/wf_bt",O_RDONLY | O_NOCTTY); 絕對成功!!!!!
=====================================
allow?system_server?wf_bt_device:chr_file?rw_file_perms;?//允許system_server進程擁有對wf_bt_device的這個字符設備的讀寫權限。
總結
以上是生活随笔為你收集整理的Android 在 SElinux下 如何获得对一个内核节点的访问权限的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SELinux策略语言--客体类别和许可
- 下一篇: 10个重要的Linux ps命令实战