您的位置:首页 > 移动开发 > Android开发

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

2015-12-02 15:21 429 查看
在开启了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设置为其属性。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: