【最新鸿蒙应开发】——HarmonyOS沙箱目录

鸿蒙应用沙箱目录

1. 应用沙箱概念

应用沙箱是一种以安全防护为目的的隔离机制,避免数据受到恶意路径穿越访问。在这种沙箱的保护机制下,应用可见的目录范围即为应用沙箱目录

  • 对于每个应用,系统会在内部存储空间映射出一个专属的应用沙箱目录,它是(“应用文件目录与应用文件路径)”与一部分系统文件(应用运行必需的少量系统文件)所在的目录组成的集合。

  • 应用沙箱限制了应用可见的数据的最小范围。在应用沙箱目录中,应用仅能看到自己的应用文件以及少量的系统文件(应用运行必需的少量系统文件)。因此,本应用的文件也不为其他应用可见,从而保护了应用文件的安全。

  • 应用可以在应用文件目录下保存和处理自己的应用文件;系统文件及其目录对于应用是只读的;而应用若需访问用户文件,则需要通过特定API同时经过用户的相应授权才能进行。

下图展示了应用沙箱下,应用可访问的文件范围和方式。应用沙箱文件访问关系图:

2. 应用沙箱目录与应用沙箱路径

在应用沙箱保护机制下,应用无法获知除自身应用文件目录之外的其他应用或用户的数据目录位置及存在。同时,所有应用的目录可见范围均经过权限隔离与文件路径挂载隔离,形成了独立的路径视图,屏蔽了实际物理路径:

  • 如下图所示,在普通应用(也称三方应用)视角下,不仅可见的目录与文件数量限制到了最小范围,并且可见的目录与文件路径也与系统进程等其他进程看到的不同。我们将普通应用视角下看到的应用沙箱目录下某个文件或某个具体目录的路径,称为应用沙箱路径

    • 从实际物理路径推物理路径沙箱路径并不是1:1的映射关系沙箱路径总是少于系统进程视角可见的物理路径。有些调试进程视角下的物理路径在对应的应用沙箱目录是无法找到的,而沙箱路径总是能够找到其对应的物理路径(不同权限与角色的进程下可见的文件路径不同)

3. 应用文件目录与应用文件路径

如前文所述,“应用沙箱目录”内分为两类:应用文件目录系统文件目录

系统文件目录对应用的可见范围由OpenHarmony系统预置,开发者无需关注。

在此主要介绍应用文件目录,如下图所示。应用文件目录下某个文件或某个具体目录的路径称为应用文件路径。应用文件目录下的各个文件路径,具备不同的属性和特征。应用文件目录结构图:

  1. 一级目录data/:代表应用文件目录

  2. 二级目录storage/:代表本应用持久化文件目录

  3. 三级目录el1/、el2/:代表不同文件加密类型

    • el1,设备级加密区:设备开机后即可访问的数据区。

    • el2,用户级加密区:设备开机后,需要至少一次解锁对应用户的锁屏界面(密码、指纹、人脸等方式或无密码状态)后,才能够访问的加密数据区。 应用如无特殊需要,应将数据存放在el2加密目录下,以尽可能保证数据安全。但是对于某些场景,一些应用文件需要在用户解锁前就可被访问,例如时钟、闹铃、壁纸等,此时应用需要将这些文件存放到设备级加密区(el1)。

    • el3:对于应用中的记录步数、文件下载、音乐播放,需要在锁屏时读写和创建新文件,放在(EL3)的加密分区比较合适。
    • el4:对于用户安全信息相关的文件,锁屏时不需要读写文件、也不能创建文件,放在(EL4)的加密分区更合适。
  4. 四级、五级目录: 通过ApplicationContext可以获取distributedfiles目录或base下的filescachepreferencestemp等目录的应用文件路径,应用全局信息可以存放在这些目录下。

    通过UIAbilityContext、AbilityStageContext、ExtensionContext可以获取HAP级别应用文件路径。HAP信息可以存放在这些目录下,存放在此目录的文件会跟随HAP的卸载而删除,不会影响App级别目录下的文件。

应用文件路径详细说明

目录名Context属性名称类型说明
bundlebundleCodeDir安装文件路径应用安装后的App的HAP资源包所在目录;随应用卸载而清理。 不能拼接路径访问资源文件,请使用资源管理接口访问资源。 可以用于存储应用的代码资源数据,主要包括应用安装的HAP资源包、可重复使用的库文件以及插件资源等。此路径下存储的代码资源数据可以被用于动态加载。
baseNA本设备文件路径应用在本设备上存放持久化数据的目录,子目录包含files/、cache/、temp/和haps/;随应用卸载而清理。
databasedatabaseDir数据库路径应用在el2加密条件下存放通过分布式数据库服务操作的文件目录;随应用卸载而清理。 仅用于保存应用的私有数据库数据,主要包括数据库文件等。此路径下仅适用于存储分布式数据库相关文件数据。
distributedfilesdistributedFilesDir分布式文件路径应用在el2加密条件下存放分布式文件的目录,应用将文件放入该目录可分布式跨设备直接访问;随应用卸载而清理。 可以用于保存应用分布式场景下的数据,主要包括应用多设备共享文件、应用多设备备份文件、应用多设备群组协助文件。此路径下存储这些数据,使得应用更加适合多设备使用场景。
filesfilesDir应用通用文件路径应用在本设备内部存储上通用的存放默认长期保存的文件路径;随应用卸载而清理。 可以用于保存应用的任何私有数据,主要包括用户持久性文件、图片、媒体文件以及日志文件等。此路径下存储这些数据,使得数据保持私有、安全且持久有效。
cachecacheDir应用缓存文件路径应用在本设备内部存储上用于缓存下载的文件或可重新生成的缓存文件的路径,应用cache目录大小超过配额或者系统空间达到一定条件,自动触发清理该目录下文件;用户通过系统空间管理类应用也可能触发清理该目录。应用需判断文件是否仍存在,决策是否需重新缓存该文件。 可以用于保存应用的缓存数据,主要包括离线数据、图片缓存、数据库备份以及临时文件等。此路径下存储的数据可能会被系统自动清理,因此不要存储重要数据
preferencespreferencesDir应用首选项文件路径应用在本设备内部存储上通过数据库API存储配置类或首选项的目录;随应用卸载而清理。详见通过用户首选项实现数据持久化。 可以用于保存应用的首选项数据,主要包括应用首选项文件以及配置文件等。此路径下仅适用于存储小量数据。
temptempDir应用临时文件路径应用在本设备内部存储上仅在应用运行期间产生和需要的文件,应用退出后即清理。 可以用于保存应用的临时生成的数据,主要包括数据库缓存、图片缓存、临时日志文件、以及下载的应用安装包文件等。此路径下存储使用后即可删除的数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/705454.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用神卓互联来访问单位内部web【内网穿透神器】

在现代工作环境中,有时我们需要从外部访问单位内部的 web 资源,而神卓互联这款内网穿透神器就能完美地满足这一需求。 使用神卓互联来访问单位内部 web 其实并不复杂,以下是大致的使用步骤和配置方法。 首先,我们需要在单位内部的…

pointnet

train_classification.py 把第91行修改为自己的路径,就可以运行了 test_cla.py,需要训练完才能运行测试,我没训练完,所以报错显示我没有best.pth文件 网盘里面是我运行的训练和测试的视频,以及源代码,数…

YOLOv10在RK3588上的测试(进行中...)

1.代码源 国内镜像站在gitcode。这个镜像站也基本上包含了github上常用项目的镜像。然后它的主发布源在这里: GitCode - 全球开发者的开源社区,开源代码托管平台 yolov10是清华主导做的... 然后,在维护列表里看到了这个: 2024年05月31日&am…

【深度优先搜索 广度优先搜索】297. 二叉树的序列化与反序列化

本文涉及知识点 深度优先搜索 广度优先搜索 深度优先搜索汇总 图论知识汇总 LeetCode297. 二叉树的序列化与反序列化 序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传…

Day 16:3040. 相同分数的最大操作数目II

Leetcode 相同分数的最大操作数目II 给你一个整数数组 nums ,如果 nums 至少 包含 2 个元素,你可以执行以下操作中的 任意 一个: 选择 nums 中最前面两个元素并且删除它们。选择 nums 中最后两个元素并且删除它们。选择 nums 中第一个和最后一…

1058 选择题(测试点1)

solution 把题目设置为结构体,记录题目的总分,做错该题的人数,题目编号(从1开始),正确答案。对于输入的学生答案提取每道题的回答,与答案对比是否相等,若相等则该同学的分数加上这一…

PHP和Mysql前后端交互效果实现

一、连接数据库基本函数 mysqli_connect(); 作用&#xff1a;创建数据库连接&#xff0c;打开一个新的mysql的连接。传参顺序&#xff1a;数据库地址、数据库账号、数据库密码 <?phpecho mysqli_connect("localhost",root,root) ?> /*结果&#xff1a;F…

Cloudflare 错误 1006、1007、1008 解决方案 | 如何修复

根据不完全统计&#xff0c;使用 Cloudflare 的网站比例已经接近 20%。因此&#xff0c;在日常工作中&#xff0c;比如进行网页抓取时&#xff0c;您可能经常会遇到一些因 Cloudflare 而产生的困难。例如&#xff0c;遇到 Cloudflare 错误 1006、1007 和 1008&#xff0c;这些错…

通过Stream流对集合进行操作

Stream Api是JDK8提供的新特性&#xff0c;可以更为方便地对集合进行操作&#xff0c;比如我今天遇到的一个场景&#xff1a; 将本地的一个视频文件分成多块上传到Minio服务器&#xff0c;现在上传功能已经完成&#xff0c;需要调用minioClient对已经上传的文件重新合并成一个新…

for循环结构

循环&#xff1a; 循环是一个重复执行一个代码的结构。只要满足循环的条件&#xff0c;会一直执行这个代码。 循环条件&#xff1a;在一定范围之内&#xff0c;按照指定的次数来执行循环。 循环体&#xff1a;在指定的次数内&#xff0c;执行的命令序列。只要条件满足&#…

C# 设置PDF表单不可编辑、或提取PDF表单数据

PDF表单是PDF中的可编辑区域&#xff0c;允许用户填写指定信息。当表单填写完成后&#xff0c;有时候我们可能需要将其设置为不可编辑&#xff0c;以保护表单内容的完整性和可靠性。或者需要从PDF表单中提取数据以便后续处理或分析。 之前文章详细介绍过如何使用免费Spire.PDF…

怎么改图片尺寸更方便?在线图片改大小的使用方法

图片怎么快速改尺寸呢&#xff1f;在网上传图或者做其他用途时&#xff0c;经常会对图片的尺寸有要求&#xff0c;当拍摄或者制作的图片太大或者太小时&#xff0c;都会导致图片的无法正常使用&#xff0c;那么就需要按照规定将图片改大小之后才能正常使用。 在遇到图片修改大…

调用腾讯智能云实现人脸融合

目录 1. 作者介绍2. 人脸识别内容介绍2.1 人脸识别简介2.2 技术原理 3. 实现流程及代码实现3.1 实现流程3.2 代码实现3.2.1 图片为url格式3.2.2 图片为base64格式 3.3 完整代码3.4 问题分析 1. 作者介绍 杨煜星&#xff0c;女&#xff0c;西安工程大学电子信息学院&#xff0c…

周四 A股震荡走低,行情总结

文章正文 周四&#xff0c;A股全日震荡走低&#xff0c;上证指数收跌0.28%&#xff0c;深成指跌近0.创业板指跌0.09%。猪肉、有色金属、中药、磷化工、煤炭、房地产、白酒行业跌幅靠前。科特估概念股掀起20cm涨停潮&#xff0c;半导体、机器人、消费电子、光伏、虚拟电厂概念股…

网络安全等级保护基本要求 第1部分:安全通用要求

基本要求 第三级 安全物理环境 物理位置选择 a) 机房场地应选择在具有防震、防风和防雨等能力的建筑内&#xff1b; b) 机房场地应避免设在建筑物的顶层或地下室&#xff0c;否则应加强防水和防潮措施 物理访问控制 a) 机房出入口应配置电子门禁系统&#xff0c;控制、鉴…

电表抄表软件是什么?

一、电表抄表软件的概念和作用 电表抄表软件&#xff0c;是一种致力于电力企业定制的数字化工具&#xff0c;用以远程控制搜集、管理方法与分析电表数据信息。它取代了传统人工抄表方法&#xff0c;大大提高了工作效率&#xff0c;降低了人为失误&#xff0c;并且能实时监控系…

Ubuntu下使用`sysbench`来测试CPU性能

使用 sysbench 来测试 CPU 性能是一个常见的方法。sysbench 是一个模块化的跨平台基准测试工具&#xff0c;常用于评估系统的各个组件&#xff08;例如 CPU、内存、I/O 子系统等&#xff09;的性能。 下面是如何使用 sysbench 来测试 CPU 性能的基本步骤&#xff1a; 1. 安装…

HTML LocalStorage

文章目录 关于HTML本地存储localStorage介绍用法如何获取localStorage中存储的所有值浏览器中查看Local Storage页面输出 关于HTML本地存储 Window.localStorage localStorage介绍 只读的localStorage 属性允许你访问一个Document 源&#xff08;origin&#xff09;的对象 S…

vue富文本wangeditor加@人功能(vue2 vue3都可以)

依赖 "wangeditor/editor": "^5.1.23", "wangeditor/editor-for-vue": "^5.1.12", "wangeditor/plugin-mention": "^1.0.0",RichEditor.vue <template><div style"border: 1px solid #ccc; posit…

表 达式树

》》》可以借助 LINQPad工具 using System; using System.Collections.Generic; using System.Data.Entity; using System.Linq; using System.Linq.Expressions; using System.Text; using System.Threading.Tasks; using System.Transactions;namespace EFDemo {public cla…