Type: concept
Confidence: 0.80
Created: 2026-04-19
Updated: 2026-04-19
Tags: 数据结构算法安全计算理论

前缀树(Trie)

一种树形数据结构,按序列元素逐层分支,用于高效的前缀匹配。在 ExecPolicy 中,规则在加载时构建为前缀树,实现 O(k) 时间的命令匹配(k = 命令 token 数)。

关键内容

  1. ExecPolicy 中的结构git ├── log → allow ├── status → allow ├── push │ ├── --force → forbidden │ └── * → prompt └── commit → prompt 每个命令 token 是树的一层节点,叶子节点标注决策(allow/prompt/forbidden)。

  2. 优先级规则

  3. 更长前缀优先git push --force 匹配到更深的 --force 节点,优先于浅层的 push 节点
  4. first-match:同层多个规则时,先匹配者生效
  5. 无匹配 fallback:树中无路径时,回退到 approval_policy 全局设置

  6. 为什么选 Trie 而非正则/字符串匹配

  7. O(k) 确定性匹配,无回溯,无性能退化
  8. 天然支持"更具体规则优先"的语义
  9. 易于可视化和调试(树结构直观)
  10. 加载时一次性构建,执行时纯读取,零运行时开销

  11. 与 host_executable 的结合:Trie 匹配命令前缀后,--resolve-host-executables 进一步验证可执行文件的绝对路径,防止 PATH 欺骗攻击。

来源

相关