当前位置: 首页 > news >正文

openharmony之sandbox沙箱机制详解

1. 概述

1.1 沙箱机制定义

鸿蒙系统沙箱(Sandbox)是一种安全隔离机制,通过mount命名空间和控制组(cgroup)技术,为系统服务和应用创建独立的运行环境,限制其对系统资源的访问权限。
为什么要有沙箱这个概念:
为了把每个应用关进“小黑屋”,防止它偷窥、篡改、破坏别人或系统的数据与资源。

  1. 数据隔离:应用 A 的文件、配置、数据库默认只能自己看,连应用 B 都碰不到,更别提系统。
  2. 权限最小化:即使应用申请了敏感权限(如麦克风、通讯录),也只能在沙箱里“有限使用”,超出范围立即被内核拒绝。
  3. 故障/攻击面最小化:应用崩溃或被植入恶意代码,最坏也只是把自己的沙箱玩坏,不会拖垮整个系统或其他应用。
    简单来说就是HAp与系统间接隔离,防止应用直接访问系统资源。造成系统损坏

2. 沙箱配置文件结构

写在前面: APP启动沙箱相关源码在base\startup\appspawn\modules\sandbox路劲下
相关的沙箱json文件:
base\startup\appspawn\appdata-sandbox-app.json
base\startup\appspawn\appdata-sandbox.json
base\startup\appspawn\appdata-sandbox64.json
=====================================================================
Init进程启动时沙箱相关配置文件:
base\startup\init\services\sandbox\system-sandbox.json
base\startup\init\services\sandbox\chipset-sandbox.json

2.1 配置文件类型

配置文件类型 适用架构 作用域 路径
system-sandbox.json 32位系统 系统组件 /system/etc/sandbox/
system-sandbox64.json 64位系统 系统组件 /system/etc/sandbox/
chipset-sandbox.json 32位系统 芯片组件 /system/etc/sandbox/
chipset-sandbox64.json 64位系统 芯片组件 /system/etc/sandbox/

2.2 配置语法规范

{"sandbox-root": "/mnt/sandbox/[system|chipset]","mount-bind-paths": [...],"mount-bind-files": [...],"symbol-links": [...]
}

3. 配置参数详解

3.1 根目录配置

{"sandbox-root": "/mnt/sandbox/system"
}
  • system: 系统服务沙箱根目录
  • chipset: 芯片组件沙箱根目录

3.2 目录挂载配置(mount-bind-paths)

3.2.1 基本结构
{"mount-bind-paths": [{"src-path": "/system/lib","sandbox-path": "/system/lib","sandbox-flags": ["bind", "rec", "private"],"ignore": 1}]
}
3.2.2 参数说明
参数名 类型 必填 说明 示例
src-path string 源目录路径 “/system/lib”
sandbox-path string 沙箱内挂载路径 “/system/lib”
sandbox-flags array 挂载标志 [“bind”, “rec”, “private”]
ignore int 是否忽略挂载失败(1=忽略,0=检查) 1
3.2.3 挂载标志详解
  • bind: 绑定挂载
  • rec: 递归挂载子目录
  • private: 私有挂载,不共享挂载事件

3.3 文件挂载配置(mount-bind-files)

3.3.1 基本结构
http://www.dtcms.com/a/360850.html

相关文章:

  • Docker一键快速部署压测工具,高效测试 API 接口性能
  • datax将数据从starrocks迁移至starrocks
  • Java比较器
  • golang 14并发编程
  • 20250828的学习笔记
  • Socket-TCP 上位机下位机数据交互框架
  • 深入理解 HTTP 与 HTTPS:区别以及 HTTPS 加密原理
  • UART-TCP双向桥接服务
  • Flutter WebAssembly (Wasm) 支持 - 实用指南Flutter WebAssembly (Wasm) 支持 - 实用指南
  • 解决爬虫IP限制:Selenium隧道代理完整解决方案
  • 聚焦智慧教育新趋势:AI+虚拟仿真技术加速未来学习转型
  • 算法面试题(上)
  • 【Java后端】Spring Boot 全局域名替换
  • Azure AI Search构建RAG的优化点
  • 接口自动化测试之设置断言思路
  • 大模型应用开发面试实录:LLM原理、RAG工程与多Agent场景化落地解析
  • mysql实例是什么?
  • 产品月报|睿本云8月产品功能迭代
  • Topaz Video AI:AI驱动的视频增强与修复工具
  • 嵌入式实时操作系统(二十五)-实时性
  • 从 “能用” 到 “好用”:生成式 AI 落地三大核心痛点与破局路径
  • nt5inf.hash排序后前后两个共五个和nti5nf.cat文件用asn.1editor打开后导出后部分内容的对比--重要
  • Unity中多线程与高并发下的单例模式
  • 结构体成员大小及内存对齐练习
  • Electron使用WebAssembly实现CRC-16 CCITT校验
  • 9.1C++——类中特殊的成员函数
  • 安卓悬浮球-3566-测试报告
  • vue社区网格化管理系统(代码+数据库+LW)
  • Adobe Acrobat打开pdf文件时闪退如何解决?
  • OpenCV-CUDA 图像处理