Strict模式Snap无Plugs却可访问主机SSH密钥?WSL2下的异常疑问
问题原因分析
核心问题:WSL2 默认未启用 AppArmor,导致 Snap 隔离失效
Snap 的 strict 隔离模式依赖 AppArmor(Linux 内核安全模块)来强制实施文件访问限制。但 WSL2 的默认内核配置通常没有编译或启用 AppArmor 支持,这就导致 Snap 的沙箱规则根本无法生效——哪怕你配置了 confinement: strict,也只是个“摆设”,程序能随意访问系统文件。
关于 --dangerous 参数的说明
你理解的没错,--dangerous 仅用于跳过 Snap 包的签名验证,完全不会改变 confinement 模式。这个参数和本次的权限问题无关,不用背锅。
验证与确认步骤
你可以在 WSL2 终端里执行以下命令,确认 AppArmor 的状态:
aa-status
如果输出提示 apparmor module is not loaded 或类似内容,就坐实了是 AppArmor 未启用导致的隔离失效。
临时解决思路(仅用于测试)
如果要在 WSL2 里验证 Snap 的 strict 隔离效果,需要手动启用 AppArmor:
- 首先确保你的 WSL2 内核版本足够新(建议 5.10+)
- 加载 AppArmor 模块:
sudo modprobe apparmor
- 启用 AppArmor 服务:
sudo systemctl start apparmor
之后重新安装你的测试 Snap 包,再运行脚本,应该就会出现预期的访问拒绝错误了。
不过要注意:WSL2 对 AppArmor 的支持并不完善,可能会出现兼容性问题,不建议在生产环境这么搞。
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

