SEandroid 安全机制---文件安全上下文

本文详细介绍了SEAndroid安全机制中的文件安全上下文,包括读取mac_permissions.xml文件、创建数据目录及其Java和native层的过程,以及如何设置和管理不同应用的数据文件安全上下文,确保Android系统的安全。
摘要由CSDN通过智能技术生成

2文件安全上下文

SEAndroid是一种基于安全策略的MAC安全机制。这种安全策略实施在主体和客体的安全上下文之上。

这意味着安全策略在实施之前,SEAndroid安全机制中的主休和客体是已经有安全上下文的。

在SEAndroid安全机制中,主体一般就是进程,而客体一般就是文件。文件的安全上下文的关联有不同的方式。

本文主要分析文件安全上下文的设置过程。

虽然android系统中有各种不同的文件,但再次仅论述应用进程的数据文件, 无论是系统应用程序,还是第三方应用程序,

它们的数据文件都是位于data分区的data子目录中的,因此需要有一种机制给在/data/data目录中创建的数据文件

设置不同的安全上下文。应用程序在安装的时候,PackageManagerService会通过守护进程installd在/data/data

目录中创建相应的数据目录,以后应用程序在运行的过程中默认创建的数据文件就位于对应的数据目录中,

因此只要给这些数据目录设置不同的安全上下文,就可以让不同类型的应用程序在运行的过程中创建不同安全上下文的数据文件。

例如.data/data 目录下面的文件上下文如下,这些是都apk的文件目录,

ls  -Z


2.1 读取mac_permissions.xml文件

PackageManagerService负责安装Android应用程序,在该服务启动(构造方法中)的时候会调用SELinuxMMAC的

readInstallPolicy方法读取mac_permissions.xml文件,

mFoundPolicyFile = SELinuxMMAC.readInstallPolicy();

readInstallPolicy方法如下,

public static boolean readInstallPolicy() {
        // Temp structure to hold the rules while we parse the xml file
        List<Policy> policies = new ArrayList<>();

        FileReader policyFile = null;
        XmlPullParser parser = Xml.newPullParser();
        try {
            policyFile = new FileReader(MAC_PERMISSIONS);
            Slog.d(TAG, "Using policy file " + MAC_PERMISSIONS);

            parser.setInput(policyFile);
            parser.nextTag();
            parser.require(XmlPullParser.START_TAG, null, "policy");
••••

这个方法一看就知道是将xml文件解析出来,然后放到集合中保存,保存在sPolicies中。

private static List<Policy> sPolicies = new ArrayList<>();

PackageManagerService通过调用SELinuxMMAC类的静态成员函数readInstallPolicy,

就初始化好了接下来安装应用程序时要用到的seinfo字符串。

PackageManagerService在安装应用程序的时候,会调用到scanPackageDirtyLI来解析应用程序的信息。

这个函数会同时也会给正在安装的应用程序分配一个字符串,如下所示:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值