SElinux 應用例項

2021-07-23 10:40:07 字數 2153 閱讀 7699

**

android 5.x seandroid/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 plain

copy

/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是自定義,其他左右兩邊的內容都和上面的範例一致。

第三步:開啟檔案androidl/android/external/sepolicy/device.te

仿照這個檔案裡的寫法,將剛剛第二步寫的wf_bt_device宣告為dev_type:

[python]view plain

copy

# 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檔案都是以程序名來結尾的,比如有針對su***ceflinger程序的su***ceflinger,有針對vold程序的vold.te,

剛剛從第一步得到,這個節點是由system_server程序來訪問,所以,我們找到system_server.te開啟,加入允許這個程序對/dev/wf_bt的讀寫許可權,

[python]view plain

copy

# 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表示字元裝置檔案,如果是普通檔案用file,目錄請用dir

# rw_file_perms代表讀寫許可權

allow system_server wf_bt_device:chr_file rw_file_perms;  

這句話的意思是:允許system_server程序擁有對wf_bt_device的這個字元裝置的讀寫許可權。

改了這些之後,你就可以make installclean;make -j16編譯image來驗證許可權是否獲取成功。

fd =open("/dev/wf_bt",o_rdonly | o_noctty); 絕對成功!!!!!

檢視SELinux狀態 關閉SELinux

1.1 getenforce 1.2 usr sbin sestatus current mode表示當前selinux防火牆的安全策略 root localhost usr sbin sestatus selinux status enabled selinuxfs mount sys fs se...

檢視Selinux和關閉Selinux

selinux的檢視和設定 1.1 getenforce 1.2 usr sbin sestatus current mode表示當前selinux防火牆的安全策略 root localhost usr sbin sestatus selinux status enabled selinuxfs m...

應用例項 最新電工電路應用例項

電工學習網 www.diangon.com 最新電工電路應用例項 是根據最新國家職業標準,結合生產實際,以操作技能為主,以解決實際工作中的技術問題為目標而編寫的。本書的主要內容包括 照明 配電及單相電動機電路,電動機典型控制電路,電動機保護電路,工具機控制電路,穩壓電路及充電電路,電氣測量電路,pl...