其他

解决zsh compinit : MacOS 上的不安全目录问题

问题:

mac 打开终端提示

zsh compinit: insecure directories, run compaudit for list.
Ignore insecure directories and continue [y] or abort compinit [n]? 

mac os : big sur 11.3.1

原因分析:

警告中出现 compaudit ,通过资料得知:

compaudit 的原理:

出于安全原因,compinit 还会检查补全系统是否会使用不属于 root
或当前用户所有的文件,或者目录中的文件是全局或组可写的,或者不属于 root
或当前用户所有的文件。如果找到这样的文件或目录,compinit 会询问是否真的应该使用补全系统。为避免这些测试并使找到的所有文件无需询问即可使用,请使用选项 -u,并使用选项 -i 使 compinit 静默忽略所有不安全的文件和目录。当给出 -C 选项时,将完全跳过此安全检查。

可以随时通过运行 compaudit 命令来重试安全检查。

运行提示的 compaudit 得到两个路径:

zx@zxdeMacBook-Pro ~ % compaudit
There are insecure directories:
/usr/local/share/zsh/site-functions
/usr/local/share/zsh

我这个提示可能的是由于安装 Homebrew 引起的。

可以通过 ls -lh 命令来检查以上目录的权限

ls -lh /usr/local/share

ls -lh /usr/local/share/zsh

可以发现

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

这两个路径的权限都是 drwxrwxr-x

解决方案:

chmod g-w /usr/local/share/zsh 
chmod g-w /usr/local/share/zsh/site-functions 

去掉两个路径的可写权限