日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Android 在 SElinux下 如何获得对一个内核节点的访问权限

發(fā)布時間:2025/4/16 linux 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android 在 SElinux下 如何获得对一个内核节点的访问权限 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

點擊打開鏈接

Android?5.0下,因為采取了SEAndroid/SElinux的安全機制,即使擁有root權(quán)限,或者對某內(nèi)核節(jié)點設(shè)置為777的權(quán)限,仍然無法在JNI層訪問。

本文將以用戶自定義的內(nèi)核節(jié)點/dev/wf_bt為例,手把手教會讀者如何在JNI層獲得對該節(jié)點的訪問權(quán)限。
第一步:找到需要訪問該內(nèi)核節(jié)點的進程(process),筆者自己這個節(jié)點由system_server進程來訪問
第二步:打開文件AndroidL/android/external/sepolicy/file_contexts.be 仿照這個文件里的寫法,為你的節(jié)點定義一個你想要的名字: [python]?view plaincopy
  • /dev/tegra.*?u:object_r:video_device:s0??
  • /dev/tf_driver?u:object_r:tee_device:s0??
  • /dev/tty?u:object_r:owntty_device:s0??
  • /dev/tty[0-9]*?u:object_r:tty_device:s0??
  • #?We?add?here??
  • /dev/wf_bt??????????????u:object_r:wf_bt_device:s0??
  • wf_bt_device是自定義,其他左右兩邊的內(nèi)容都和上面的范例一致。
    第三步:打開文件AndroidL/android/external/sepolicy/device.te 仿照這個文件里的寫法,將剛剛第二步寫的wf_bt_device聲明為dev_type: [python]?view plaincopy
  • #?Device?types??
  • type?device,?dev_type,?fs_type;??
  • type?alarm_device,?dev_type,?mlstrustedobject;??
  • type?adb_device,?dev_type;??
  • type?ashmem_device,?dev_type,?mlstrustedobject;??
  • type?audio_device,?dev_type;??
  • type?binder_device,?dev_type,?mlstrustedobject;??
  • type?block_device,?dev_type;??
  • #?We?add?here??
  • type?wf_bt_device,?dev_type;??

  • 第四步: AndroidL/android/external/sepolicy/目錄下很多.te文件都是以進程名來結(jié)尾的,比如有針對surfaceflinger進程的surfaceflinger,有針對vold進程的vold.te, 剛剛從第一步得到,這個節(jié)點是由system_server進程來訪問,所以,我們找到system_server.te打開,加入允許這個進程對/dev/wf_bt的讀寫權(quán)限,
    [python]?view plaincopy
  • #?Read/Write?to?/proc/net/xt_qtaguid/ctrl?and?and?/dev/xt_qtaguid.??
  • allow?system_server?qtaguid_proc:file?rw_file_perms;??
  • allow?system_server?qtaguid_device:chr_file?rw_file_perms;??
  • ??
  • #?chr_file表示字符設(shè)備文件,如果是普通文件用file,目錄請用dir??
  • #?rw_file_perms代表讀寫權(quán)限??
  • allow?system_server?wf_bt_device:chr_file?rw_file_perms;??// 允許system_server進程擁有對wf_bt_device的這個字符設(shè)備的讀寫權(quán)限;
  • 這句話的意思是:允許system_server進程擁有對wf_bt_device的這個字符設(shè)備的讀寫權(quán)限。 改了這些之后,你就可以make installclean;make -j16編譯image來驗證權(quán)限是否獲取成功。
    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的這個字符設(shè)備的讀寫權(quán)限。

    總結(jié)

    以上是生活随笔為你收集整理的Android 在 SElinux下 如何获得对一个内核节点的访问权限的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。