K2.12.4sandbox scoped file access设计研究

沙盒化趋势要求应用显式声明并请求文件访问范围

别名: 文件访问范围 · 沙盒授权 · TCC file access

概念解释

曾经默认可以读写任意路径的桌面应用,越来越多被要求先说出要碰哪一类位置:用户选中的那份文件、用户选中的那个文件夹、下载目录、可移动卷。显式声明并请求访问范围(scoped file access)是沙盒化趋势加在直接读写之上的手续:能力还在,但每次越过容器都要有一份可被系统执行的范围,而不是启动即拥有全盘。它不是「桌面到底能不能直接读写」的能力对比,而是那份能力正在变成必须开口要、必须说清边界的许可。

机制

系统把「能碰到磁盘」从应用身份里拿出来,改成按范围授予。用户通过打开/保存对话框点选,等于当场划出一块范围;应用也可以在清单里声明「需要下载文件夹」。授予可以记住,于是下次启动不必再问;也可以被系统设置里收回,于是昨天还能打开的路径今天变成权限错误。人仍按「这是我的文件、软件当然打得开」建模,手续是后来加上的一层。失败看起来像文件丢了或软件坏了,除非把「范围没覆盖到这里」说成原因。范围说得过宽(整盘、整个家目录)会把对话框变成一次空白支票,系统可能直接拒绝或反复盘问;说得过窄,用户每换一个项目文件夹都要再授权一次,手续本身变成主任务。

怎么研究

让人完成必须越过默认容器的任务(打开家目录之外的项目、从 U 盘导入、监视用户指定的文件夹)。比较「第一次点选即记住该文件夹」和「每次打开都再授权」。

自变量:请求时机(首次需要时 / 启动时一揽子)、范围粒度(单文件 / 文件夹 / 整盘)、拒绝之后是否还能用其余功能。 因变量:任务完成率、授权对话框被立刻关掉的比例、拒绝后是否理解「只是这块路径」、事后能否在系统设置里找到并收回该范围。

启动时一揽子要权限会把实验测成权限疲劳,而不是范围是否说得清。现场里人点「好」是为了让对话框消失,要在事后问「你刚允许它碰了哪」。跨平台结论必须分开:各系统记不记得文件夹、能不能在设置里收回,并不一样。

边界

未沙盒的传统桌面安装包仍可能一装就有全盘,这条的手续不出现,用户也不会期待它出现。企业受管机器用策略预授权某些路径,对话框被跳过,范围对用户不可见,出问题时应指向策略而不是应用。纯容器应用从不请求范围,用户文档本来就不在磁盘地图上。一次性打开某文件、不需要再访问其旁文件时,单文件范围足够,强要文件夹是过度声明。

怎么落地

  • 在真正碰到某路径的那一刻请求该范围,文案写清要读还是写、是这一份还是这一文件夹,不要在启动时要整盘。
  • 用户点选过的文件夹记住为范围,直到人在系统设置里收回;换项目时再请求新的一块,不要静默扫盘。
  • 拒绝或收回之后,其余不依赖该路径的功能仍可用;错误指向「没有访问这块位置的许可」并提供再选一次的入口。
  • 验证:全新安装,打开容器外的一份文件,应只出现针对该次点选的请求。拒绝后应用应仍能工作在容器内。把同一文件夹关掉再开,不应再问一次。到系统设置里收回该范围,再打开应再次失败并说清是许可而不是文件消失。

延伸

  • 同组K2.12.1 桌面应用可以直接读写用户文件系统而非局限在沙盒容器 · K2.12.2 文件路径与命名规则的操作系统差异会影响跨平台移植 · K2.12.3 直接操作文件系统的应用需要处理外部程序同时修改文件的冲突
  • 相邻K1.12 权限模型的平台差异 · O2.01 权限提示的信息设计
  • 站内检索scoped file access · app sandbox · file access prompt

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/K2.12.4