修复 Oh My Zsh“检测到不安全的完成依赖目录”

我的天啊Zsh 不安全完成依赖目录消息

如果您最近安装了 Oh My Zsh 或更新了运行 Oh My Zsh 的 Mac,在启动新的终端窗口时,您可能会遇到一个大的错误消息屏幕。该错误通常指出“检测到不安全的依赖于完成的目录”,并显示一系列 /usr/local/share/zsh/ 目录,其权限 zsh 认为是不安全的。

有两种选择来处理这个问题;一个是调整相关目录的用户权限,另一个是禁用对不安全目录的验证检查。

选项 1:更改指定目录的权限

更改权限的一个选项是使用 chmod 755,这是所有者(您)的完全权限,其他人的读取和执行权限有问题的目录。例如:

chmod 755 /usr/local/share/zsh

chmod 755 /usr/local/share/zsh/site-functions

您当然可以使用其他更适合自己的权限选项,但 755 应该可以解决 Oh My Zsh 的不安全目录问题。

(顺便说一句,对于大多数设置,这些目录的默认权限对于 rwxrwxr-x 是 775,如果您出于任何原因想要恢复)。

选项 2:禁用不安全目录检查

如果您不想更改权限而只是取消不安全的目录验证(基本上只是忽略检查,它不会解决潜在的安全问题),您可以将以下内容添加到您的 .zshrc 文件中:

ZSH_DISABLE_COMPFIX=true

使用 nano 是将其添加到您的 .zshrc 文件或您选择的文本编辑器的一种简单方法。

修改 zshrc

同样,这并没有解决权限投诉,它只是停止检查指定目录的权限。

对于许多用户来说,让所有用户帐户都可以访问 /usr/local/share/zsh/ 是可取的,这样 Mac 上的所有用户帐户都可以使用 Oh My Zsh,但对于其他想要对共享用户有更多限制的环境的人来说机器,您也可以更改权限以适应它。选择权在您。

完整的错误消息陈述如下,主要告诉您如何解决问题,但不一定以最简洁的方式编写以立即获得解决方案。尽管如此,它还是值得阅读和回顾的,因此您可以了解 Oh My Zsh 阐明的选择是什么,以及每个选项对删除安全消息的后果是什么。

[oh-my-zsh] 检测到不安全的完成依赖目录:
drwxrwxr-x 3 user admin 96 Jun 29 2020 /usr/local/share/zsh
drwxrwxr-x 5 user admin 160 7 月 19 日 14:54 /usr/local/share/zsh/site-functions

[oh-my-zsh] 为了安全起见,我们不会从这些目录加载补全,直到
[oh-my-zsh] 您修复了它们的权限和所有权并重新启动 zsh。
[oh- my-zsh] 请参阅上面的列表,了解具有组或其他可写性的目录。

[oh-my-zsh] 要修复您的权限,您可以通过禁用
[oh-my-zsh]“组”和“其他”的写权限并确保
[oh-my-zsh] 这些目录的所有者是 root 或您当前的用户。
[oh-my-zsh] 以下命令可能会有所帮助:
[oh-my-zsh] compaudit | xargs chmod g-w,o-w

[oh-my-zsh] 如果以上没有帮助或者你想跳过验证
[oh-my-zsh] 不安全的目录你可以将变量 ZSH_DISABLE_COMPFIX 设置为
[ oh-my-zsh] 在你的 zshrc 文件中获取 oh-my-zsh 之前的“true”。

如果您有其他解决此问题的方法,请随时在评论中分享。