当前位置: 首页 > 工具软件 > SE Android > 使用案例 >

SEAndroid语法介绍

卢晟
2023-12-01

1.命令

通过ls -Z命令查看文件的安全上下文。ps -Z查看进程的上下文。

安全上下文的格式:

USER: ROLE: TYPE[LEVEL]

USER:指定用户。

    1.user_u:代表普通用户,权限受限

    2.system_u:系统级别进程

    3.root:root用户

ROLE:指定角色。像文件、目录、socket等客体角色通常是object_r,主体进程的角色是r。一个用户可以有多个角色,但同一时间内只能使用一个。

TYPE:定义主体和客体所属的类型。对于进程,它的类型也称domain。

LEVEL:定义安全级别。s0-s15


2.type

无论主题还是客体的类型定义都需要通过type语句完成。

type 类型名称 属性

eg:type init, domain;//主体

type cgroup, fs_type, mlstrustedobject;//客体


3.allow语句

allow init unlabeled:filesystem mount;

其语法:

allow source_type targe_type: class permission

(源类型)source_type:代表主体

(目标类型)targe_type:允许访问客体的类型。可以同时多个

(客体类别)class:目标类型可能涵盖比较广,客体类别可以对客体类型进行限制。比如:前面init例子中 目标类型unlabeled可以代表文件、目录、文件系统。通过filesystem进行了限制,只能代表文件系统了。

(许可)permission:指定主体可以对客体进行操作的种类。


4.域的转移

SElinux如何让普通用户执行特权呢?可以通过域转移。其实就是把主体(进程)从一个域切换到另一个域。

domain_auto_trans(shell, su_exec, su)

domain_auto_trans是一个宏

当shell域的进程启动一个类型为su_exec的可执行文件时,把新的进程域切换到su域。


5.文件介绍

1.角色定义文件roles

用来定义SElinux的系统角色

role r;

role r types domain;

2.用户定义文件users

3.属性定义文件attributes

attribute dev_type;

attribute domain;

4.class定义文件security_classes

定义了所有的class

class filesystem;

class file;

5.操作定义文件access_vectors

common_file

{

ioctl

read

write

......

}

class filesystem

{

mount

remount

......

}

6.前十中规则文件

目录中以te结尾的文件。

7.TE的宏定义文件te_macros

8.file_contexts文件

保存系统中所有文件的安全上下文定义

9.property_contexts文件

保存系统所有android属性的安全上下文定义


 类似资料: