o2o网站建设最好公司排名,中山外包网站设计,软文代写,企业网站 批量备案Android 9.0下#xff0c;因为采取了SEAndroid/SElinux的安全机制#xff0c;即使拥有root权限#xff0c;或者对某内核节点设置为777的权限#xff0c;仍然无法在JNI层访问。
本文将以用户自定义的内核节点/dev/wf_bt为例#xff0c;手把手教会读者如何在JNI层获得对该节…Android 9.0下因为采取了SEAndroid/SElinux的安全机制即使拥有root权限或者对某内核节点设置为777的权限仍然无法在JNI层访问。
本文将以用户自定义的内核节点/dev/wf_bt为例手把手教会读者如何在JNI层获得对该节点的访问权限。
一、找到进程名
找到需要访问该内核节点的进程process笔者自己这个节点由system_server进程来访问
二、修改file_contexts.te
打开文件device\mediatek\xxx[芯片]\sepolicy\basic\file_contexts.te或file_contexts
仿照这个文件里的写法为你的节点定义一个你想要的名字 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是自定义其他左右两边的内容都和上面的范例一致。 三、修改device.te
打开文件\device\mediatek\xxx[芯片]\sepolicy\basic\device.te
仿照这个文件里的写法将刚刚第二步写的wf_bt_device声明为dev_type # 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; 四、修改进程te文件
AndroidL/android/external/sepolicy/目录下很多.te文件都是以进程名来结尾的比如有针对surfaceflinger进程的surfaceflinger有针对vold进程的vold.te
刚刚从第一步得到这个节点是由system_server进程来访问所以我们找到system_server.te打开加入允许这个进程对/dev/wf_bt的读写权限 # 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代表读写权限 // 允许system_server进程拥有对wf_bt_device的这个字符设备的读写权限//第一种写法allow system_server wf_bt_device:chr_file rw_file_perms; //第二种写法allow system_server wf_bt_device:file {open write read};第五步:全编烧录