macOS 奇怪的安全扫码机制

macOS 奇怪的安全扫码机制

💡 原文中文,约3400字,阅读约需9分钟。
📝

内容提要

在测试 Rust 编译器时发现执行速度慢,怀疑与 macOS 更新或 VS Code 相关。通过脚本测试发现首次执行新文件时会触发 Gatekeeper 安全扫描,导致延迟。给予 VS Code 完全磁盘访问权限后,问题解决,执行速度恢复正常。

🎯

关键要点

  • 在测试 Rust 编译器时发现执行速度慢,怀疑与 macOS 更新或 VS Code 相关。
  • 通过脚本测试发现首次执行新文件时会触发 Gatekeeper 安全扫描,导致延迟。
  • 在 VS Code 终端中,首次执行和再次执行的耗时差距大约为 30-50 倍。
  • 使用 log show 查看系统日志,发现每次执行新文件时 syspolicyd 都会进行 Gatekeeper 扫描。
  • 确认原因后,给予 VS Code 完全磁盘访问权限后,执行速度恢复正常。
  • Full Disk Access 在 macOS 中对应的是最高级别的信任授权,能够跳过完整的 Gatekeeper 扫描。
  • syspolicyd 的扫描评估结果存储在 SQLite 数据库中,AppleSystemPolicy.kext 在内核中维护运行时缓存。
  • macOS 的安全评估系统是“学习型”的,记住过去的信任决策。
  • 如果遇到类似问题,可以检查是否是 Gatekeeper 的原因,并尝试给予程序 Full Disk Access。
➡️

继续阅读