以添加TP权限为例讲解
比如我真正代码文件里有一个节点:
/sys/devices/platform/mtk-tpd/tp_firmware_version
在权限文件中具体对应节点自定义了三个文件名(可以随意起):
touch_firm -------------》对应节点/sys/devices/platform/mtk-tpd/tp_firmware_version
1、 首先在device\mediatek\common\sepolicy\basic\file.te文件添加自己自定义的文件名,并给予文件类型(在这里定义为“文件类型、系统文件类型”)
type touch_firm,file_type,sysfs_type;
2、 在device\mediatek\common\sepolicy\basic\file_contexts文件中让代码中的节点与自定义文件名关联 [u:object_r表示当前用户 s0表示等级,最低权限等级]
/sys/devices/platform/mtk-tpd/tp_firmware_version u:object_r:touch_firm:s0
3、 在device\mediatek\common\sepolicy\basic\shell.te中加入权限(最重要的一个文件)
allow shell touch_firm:filerx_file_perms;
有些人是按下面方式加的(加两条):
allow shell touch_firm:dir {getattr search open read };
allow shell touch_firm:filer_file_perms;
上面的三条是权限所必须的,以下的文件是选择性的添加的,比如我们知道后续哪个模式下使用该节点或者手机在具体的模式报avc错误,那我们就在对应模式权限文件下面添加如下类似的权限即可:
4、 在device\mediatek\common\sepolicy\basic\radio.te中添加权限(这个我们可以不加,该项好像是Midtest模式下的一些权限,*#87下面)
allow radio sysfs_mtk_tpd_file:file rx_file_perms;
allow radio sysfs_mtk_tpd_file:dir search;
5、 device\mediatek\common\sepolicy\bsp\ueventd.te这个里面是log显示让加的,一般我们不会加的,注意
allow ueventd sysfs_mtk_tpd_file:file w_file_perms;
6、 device\mediatek\common\sepolicy\basic\meta_tst.te这个里面加meta相关权限,比如TPSTester.exe测试时出问题,一般就是这里少权限了。
allow meta_tst sysfs_mtk_tpd_file:file { open read };
allow meta_tst sysfs_mtk_tpd_file:file r_file_perms;
allow meta_tst sysfs_mtk_tpd_file:dir search;
allow meta_tst sysfs_mtk_tpd_file:dir { getattr search openread };
7、device\mediatek\common\sepolicy\bsp\factory.te 如果是Factory出问题一般就在这里添加。