这意味着什么?我该如何解决?
zsh compinit: insecure directories, run compaudit for list.
Ignore insecure directories and continue [y] or abort compinit [n]?
运行compaudit将返回如下结果:
There are insecure directories:
/usr/local/share/zsh/site-functions
这意味着什么?我该如何解决?
zsh compinit: insecure directories, run compaudit for list.
Ignore insecure directories and continue [y] or abort compinit [n]?
运行compaudit将返回如下结果:
There are insecure directories:
/usr/local/share/zsh/site-functions
当前回答
今天早上,我的系统中的一些包更新了,并给我留下了这个错误消息。我使用的是Ubuntu 18.04。
显然,更新中的某些内容将用户名和组更改为数字,而不是root,如下所示:
# There are insecure files: /usr/share/zsh/vendor-completions/_code
# sudo ls -alh
-rw-r--r-- 1 131 142 2.6K 2019-10-10 16:28 _code
我只是将这个文件的用户和组改回root,问题就解决了。我不需要更改任何权限,并且警告不要这样做,除非了解问题的根本原因。
Sudo chown root _code && Sudo CHGRP root _code
在将131和142切换回根目录后,来自zsh的错误消息消失了。
其他回答
我在运行google-cloud-sdk安装脚本后得到了这个问题,该脚本通过.zshrc中的一个条目将命令补全添加到shell中。
按照Homebrew的说明在zsh中配置补全是有帮助的。
此外,如果你在尝试加载这些补全时收到" zsh compinit: insecure directories "警告,你可能需要运行这个:chmod -R go-w "$(brew——prefix)/share"
我通过做来解决它
sudo chown -R root:staff /usr/local/share/zsh
在我的例子中,share/中的其他目录也分配了“staff”组
更新所有权限正确的文件/文件夹:
Compaudit | xargs chmod g-w
您不需要使用sudo更改所有者-除非文件属于root
(在macOS BigSur上测试)
这个答案主要是我自己在未来使用的参考,因为大多数答案都没有提供一个成熟的解决方案。下面就是:
第一次运行:
compinit
如果以上都不起作用,请使用compaudit
对于打印的每个路径,运行以下命令:
sudo chown $(whoami) PATH_HERE
sudo chmod -R 755 PATH_HERE
简单的例子,假设运行compinit后打印的路径之一是“/usr/local/share/zsh”。然后:
sudo chown $(whoami) /usr/local/share/zsh
sudo chmod -R 755 /usr/local/share/zsh
在macOS Sierra上,你需要运行: sudo chown -R $(whoami):staff /usr/local