SELinex权限问题调试

来源:互联网 发布:装饰公司软件 编辑:程序博客网 时间:2024/05/29 07:51

SELinex调试

 

当SELinux处于enforcing模式下时某些程序的执行会失败,在这里总结此类问题的总体分析方法。

1、首先排除DAC权限的问题,使用“ls –l”检查相关文件的属主和权限。如果DAC的权限许可,则就是SELinux的策略显式地拒绝了当前操作的执行。


2、通过“setenforce 0”命令进入permissive模式(getenforce命令查看模式)。此操作可暂时关闭selinux强制访问控制,可直接进行调试,若此时操作还是不允许,则与selinux无关。重启后还原成默认模式。


3、通过“dmesg | grep avc”查看 AVC log,从分析失败操作相应的AVC Denied Msg入手区分问题的根源,以下为一条拒绝信息:

type=1400 audit(1392617891.300:4): avc: denied  { write } for  pid=1639 comm="fsck.exfat"name="log" dev="tmpfs" ino=1300 scontext=u:r:vold:s0tcontext=u:object_r:log_device:s0 tclass=dir


4、通过log信息可知,源域类型为vold,目标域类型为log_device,客体类别为dir,需要的权限为write,可在device/softwinner/wing-common/sepolicy下添加以下策略:

allow vold log_device:dir { write }


5、以上处理即可允许该操作,若需要自定义新的域类型。从Log中的comm="fsck.exfat"可找到应用名称,然后通过find命令找找到应用所在,然后通过命令“ls -Z /system/bin/fsck.exfat”查看安全上下文,fsck.exfat为system_file类型:

-rwxr-xr-x root     shell             u:object_r:system_file:s0fsck.exfat


6、添加以下策略及定义:

type newtype, domain; #定义新的域类型

permissive newtype;

type newtype_exec, file_type, exec_type;

domain_auto_trans(vold, newtype_exec, newtype) #域转换宏

unconfined_domain(newtype)

/system/bin/fsck.exfat u:object_r:newtype_exec:s0

allow newtype_exec log_device:dir { write }

1 0
原创粉丝点击