首先在对应的init.XXX.rc文件里写入用户群组使用权限
放到相应平台下面device/mediate/mt6739/init.mt6739.rc
当然写在device/droi/pl0762_tyt_e83/init.project.rc
也是可以的,因为device/mediate/mt6739/init.mt6739.rc文件引用了
import ${ro.vendor.rc}init.project.rc
#vox
+ chown system system /dev/debussy_vox_misc
+ chmod 0777 /dev/debussy_vox_misc
写入后写入会报
avc权限问题
最外面touch avc.txt,把报错信息复制过去
10-25 19:11:03.913 1011 1011 W system_server: type=1400 audit(0.0:321): avc: denied { write } for name="debussy_vox_misc" dev="tmpfs" ino=2153 scontext=u:r:system_server:s0 tcontext=u:object_r:device:s0 tclass=chr_file permissive=0
比如11-24 13:58:56.316 937 937 W InputReader: type=1400 audit(0.0:232): avc: denied { read } for name="rotary_status" dev="sysfs" ino=31400 scontext=u:r:system_server:s0 tcontext=u:object_r:sysfs:s0 tclass=file permissive=0
多复制几遍,有可能第一行无法编到,注意!!!不要错误换行,比如上面的scontext=u:r:是连在一起的,如果换行了就得出是空的
然后需要把out/target/product/pl0762_tyt_e83/recovery/root/sepolicy
这个文件复制到创建avc.txt的目录下,注意sepolicy这个是个文件
运行前需要安装插件
sudo apt install policycoreutils-python-utils
命令audit2allow -i avc.txt -p sepolicy
就可以得到
#============= system_server ==============
allow system_server device:chr_file write;
除了这个下次可能还会报错,不止write权限,之后一并加上
把这个得到的复制到对应项目下
/home/server/4THHD/P1/device/droi/common/sepolicy/non_plat/system_app.te
也可以在device/mediatek/ sepolicy/basic/non_plat/system_app.te
这里其实可以放在system_server.te因为报的是这个,由系统非应用进程触发
如果是系统应用,比如工模或者预置客户apk里面要用到这个节点,那么avc权限那就在system_app.te里加,如果是系统进程那就在system_server.te下加。
#============= system_server ==============
allow system_server device:chr_file { open read write getattr };
然后在
system/sepolicy/prebuilts/api/28.0/public/domain.te
system/sepolicy/public/domain.te
同步修改,不然编译不通过
-neverallow domain device:chr_file { open read write };
+neverallow { domain -system_server } device:chr_file { open read write };
意思是只要是system_server调用的含domain权限文件的,在执行device:chr_file赋予open read write权限。注意这个减号就是移除这个,相当于跳过此相关权限吧
如果再遇到异常avc权限报错再重复用audit2allow -i avc.txt -p sepolicy,查看缺了啥权限,其实异常avc报错里就有看是啥wirte open read getattr等
#============= system_server ==============
allow system_server device:chr_file { open read write getattr };