SELinux为已有进程添加权限

产品,其te文件在\external\sepolicy路径下面。从这里面的te文件中,常看到的权限,
对于dir与file,主要有下面这些: dir:
create_dir_perms、search、r_dir_perms、rw_dir_perms、ra_dir_perms
file:
create_file_perms、r_file_perms、rx_file_perms、x_file_perms、rw_file_perms
在te文件中,增加权限的格式一般如下:
1、增加单个权限:allow xxx object_r:tclass 权限; 2、增加多个权限:allow xxx object_r:tclass {权限1 权限2 … 权限n}; 当在进程里面对某个文件操作失败时,需要检查是不是权限不满足,具体方法如下描述。
查看kmsgcat-log文件,搜索关键字“avc: denied”,找到对应操作文件的行。看看具体是什么类 型的文件没有什么样的权限。主要是看comm、scontext、tcontext、tclass这4个域和avc: denied后面
{}中的操作类型。
下面举2个例子:
02-03 02:28:29.234 <12>[ 220.856536s][pid:2624,cpu1,logd.auditd]type=1400 audit(1422930509.219:9): avc:
denied { read open } for pid=2547 comm=“xxx” path="/data/media/0/log" dev=“mmcblk0p40” ino=65540
scontext=u:r:xxx:s0 tcontext=u:object_r:media_rw_data_file:s0 tclass=dir permissive=1
这就表示,我们需要在xxx.te文件里面,增加以下内容来获取权限:
allow xxx media_rw_data_file:dir { read open };
当我们在framework中要读写某个文件,报如下权限问题时:
01-25 14:52:09.717 <36>[ 235.990081s][pid:383,cpu1,logd.auditd]type=1400 audit(1453704729.689:20): avc:
denied { search } for pid=4481 comm=“m.android.phone” ppid=532 ppid_comm=“main” name="/" dev=“mmcblk0p19”
ino=2 scontext=u:r

上一篇:防火墙&&selinux临时与永久的开启&关闭


下一篇:SELinux 入门详解