1

这可能是 zsh 中的错误或错误功能,但我不太了解,我可能会误解。

compinit(初始化完成的函数)运行compaudit以强制执行一个安全模型,它只会从您的目录中加载完成函数,这些目录$fpath被认为是“安全的”(由 root 或我拥有,而不是世界可写等)。它将警告用户有关不安全的路径并提示跳过它们或中止它们。这一切都很好。

它在 处创建结果缓存~/.zcompdumpAFAICT,它只是手动失效(即删除)。

我不完全清楚缓存中有什么,所以我不能说这是否真的是一个很大的安全问题。但是,至少,compinit即使缓存由其他用户拥有,也会认为缓存有效,从而避免加载对当前用户有效但前一个用户无效的完成函数。

每次我使用sudo -s我拥有的 zsh 安装(OS X 自制软件)时,都会发生这种情况。它写入一个不完整的完成缓存。然后我开始下一个shell,它加载了被破坏的缓存并且没有看到任何完成。

这是我的问题吗?ZSH的?家酿?

4

0 回答 0