用户和角色----SEAndroid in Android 5.x

来源:互联网 发布:荣誉证书打印软件 编辑:程序博客网 时间:2024/04/29 08:21
在开启了SELinux的android系统中,通过 ps -Z 命令,可以看到当前系统中正在运行的程序的信息。
u:r:untrusted_app:s0          u0_a142   7677 256  com.cyanogenmod.lockclock
u:r:untrusted_app:s0          u0_a9    7732  256  com.android.mms
u:r:untrusted_app:s0          u0_a108   7765 256  com.chaozh.iReaderFree

通过ls -Z 命令,可以看到当前目录下文件的信息。
drwxrwx---root    sdcard_r         u:object_r:fuse:s0 umeng_cache
drwxrwx---root    sdcard_r         u:object_r:fuse:s0 weather
drwxrwx---root    sdcard_r         u:object_r:fuse:s0 youku

注意有颜色的部分:
u:r:untrusted_app:s0          u0_a142   7677 256  com.cyanogenmod.lockclock
drwxrwx---root    sdcard_r         u:object_r:fuse:s0 weather
红色代表用户。在android系统中,其实只有一个用户u。
绿色代表角色。在android系统中,所有主体的角色都是r,客体的角色都是object_r。
蓝色代表类型,这一部分非常重要,seandroid的所有控制机制,基本上就是基于他们来执行的。
灰色是安全级别,目前只用到了s0。


通过external/sepolicy/users和external/sepolicy/roles文件的内容,我们就可以看到SEAndroid所定义的SELinux用户和SELinux角色。

文件external/sepolicy/users的内容如下所示:
    user u roles{ r } level s0 range s0 - mls_systemhigh; 
文件external/sepolicy/roles的内容如下所示:
    roler;  
    role r typesdomain;
如果没有出现其它的user或者role声明,那么就意味着只有u、r和domain可以组合在一起形成一个合法的安全上下文,而其它形式的安全上下文定义均是非法的。

但是!!!!!与此同时!!!!!!!!!!!!!!!!!!!!!!
SEAndroid使用声明属性(attribute)的方法,扩展了domain(在external/sepolicy/attributes文件中可以找到所有的attributes)。例如在zygote.te文件中有:
type zygote, domain;
这就是说,zygote声明自己具有domain的属性,也就可以和domain一样,和u,r一起组成合法的安全上下文。
同样,除了进程(主体)的安全上下文可以声明属性外,客体的安全上下文,也可以声明属性,在file.te中:
type system_data_file, file_type, data_file_type;
这就是说,system_data_file具有file_type和data_file_type两个属性。
在SEAndroid中,我们通常将用来标注文件的安全上下文中的类型称为file_type,而用来标注进程的安全上下文的类型称为domain,并且每一个用来描述文件安全上下文的类型都将file_type设置为其属性,每一个用来进程安全上下文的类型都将domain设置为其属性。
0 0