Android 在 SElinux下 如何獲得對一個核心節點的存取權限【轉】

來源:互聯網
上載者:User

標籤:允許   自訂   and   serve   types   sni   cli   針對   class   

本文轉載自:http://blog.csdn.net/u012719256/article/details/52585956

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  
  1. /dev/tegra.* u:object_r:video_device:s0  
  2. /dev/tf_driver u:object_r:tee_device:s0  
  3. /dev/tty u:object_r:owntty_device:s0  
  4. /dev/tty[0-9]* u:object_r:tty_device:s0  
  5. # We add here  
  6. /dev/wf_bt              u:object_r:wf_bt_device:s0  
wf_bt_device是自訂,其他左右兩邊的內容都和上面的範例一致。 第三步:開啟檔案AndroidL/android/external/sepolicy/ device.te仿照這個檔案裡的寫法,將剛剛第二步寫的wf_bt_device聲明為dev_type: [python] view plaincopy  
  1. # Device types  
  2. type device, dev_type, fs_type;  
  3. type alarm_device, dev_type, mlstrustedobject;  
  4. type adb_device, dev_type;  
  5. type ashmem_device, dev_type, mlstrustedobject;  
  6. type audio_device, dev_type;  
  7. type binder_device, dev_type, mlstrustedobject;  
  8. type block_device, dev_type;  
  9. # We add here  
  10. type wf_bt_device, dev_type;  
第四步:AndroidL/android/external/sepolicy/目錄下 很多.te檔案都是以進程名來結尾的,比如有針對surfaceflinger進程的surfaceflinger,有針對vold進程的vold.te,剛剛從第一步得到,這個節點是由system_server進程來訪問,所以,我們找到 system_server.te開啟,加入允許這個進程對/dev/wf_bt的讀寫權限,  [python] view plaincopy  
  1. # Read/Write to /proc/net/xt_qtaguid/ctrl and and /dev/xt_qtaguid.  
  2. allow system_server qtaguid_proc:file rw_file_perms;  
  3. allow system_server qtaguid_device:chr_file rw_file_perms;  
  4.   
  5. # chr_file表示字元裝置檔案,如果是普通檔案用file,目錄請用dir  
  6. # rw_file_perms代表讀寫權限  
  7. allow system_server wf_bt_device:chr_file rw_file_perms;  // 允許system_server進程擁有對wf_bt_device的這個字元裝置的讀寫權限;
這句話的意思是:允許system_server進程擁有對wf_bt_device的這個字元裝置的讀寫權限。改了這些之後,你就可以make installclean;make -j16編譯image來驗證許可權是否擷取成功。 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下 如何獲得對一個核心節點的存取權限【轉】

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.