Skip to content

文件系统挂载规则构成了 组织文件系统访问策略。每条规则列出沙箱可以 作为工作区挂载的主机路径,以及它允许或拒绝对这些路径的访问:read、write,或者 两者。要向策略中添加规则,请参阅 创建和管理组织策略。

当沙箱挂载工作区时,Docker Sandboxes 会针对该挂载所需的访问把这些路径与这些规则 进行比对。只读工作区只需要 read。可写工作区同时需要 read 和 write,因此该路径 必须对两种操作都被允许。

路径模式 ​

主目录 ​

~ 在每个平台上都会展开为用户的主目录,包括 Windows,在那里它解析为 %USERPROFILE%。因此,一条 ~/** 规则可以匹配 macOS、Linux 和 Windows 上每个用户的 主目录树。请在每个平台上都用正斜杠书写 ~,例如 ~/**,Windows 也一样。策略引擎 只展开 ~:它不展开环境变量,因此 %USERPROFILE%\** 或 $HOME/** 这样的模式什么 都匹配不到。

操作系统格式 ​

对于主目录之外的路径,请按用户操作系统使用的格式书写。macOS 或 Linux 路径不匹配 Windows 或 WSL 路径,因此多个平台共享的位置需要为每个平台各写一条规则:

操作系统示例路径
macOS、Linux/data/project/**
WindowsC:\data\project\**
WSL\\wsl.localhost\<distro>\data\project\**

在 Windows 上,*: 匹配任意盘符,因此 *:\data\** 可以匹配任意驱动器上的路径。

通配符 ​

通配符在每种路径格式中的行为都相同:

模式示例匹配
精确路径/data仅 /data
路径段通配符/data/*/data/project,仅一个路径段,不含子目录
递归通配符/data/**/data/project、/data/project/src,任意深度

例如,~/** 匹配主目录下的所有路径,而 ~/* 只匹配它的直接子项。

大小写和分隔符 ​

匹配会忽略路径书写方式的某些差异:

差异是否忽略示例
斜杠方向是,但 ~ 之后除外C:/data/** 和 C:\data\** 是同一个
Windows 驱动器和 UNC 路径(包括 WSL)中的大小写是C:\Data\** 匹配 c:\data\project
macOS 和 Linux 路径中的大小写否/Data/** 不匹配 /data/project
WSL 前缀是\\wsl$\ 和 \\wsl.localhost\ 是同一个

即使在大小写不敏感的卷上,macOS 路径也区分大小写,因此请按磁盘上目录名的大小写书写 规则。

挂载路径如何解析 ​

Docker Sandboxes 会用解析后的工作区路径与规则进行比对,而不是开发者传给 sbx run 或 sbx create 的路径。它会展开 ~、把路径转为绝对路径、去掉 . 和 .. 路径段, 并按如下方式解析路径:

开发者传入用于比对的路径
相对路径,例如 .绝对路径
符号链接链接指向的目标

由于符号链接会被跟随,因此位于允许路径之下的链接,如果指向没有任何规则允许的目录, 就会被拒绝。