zsh compinit: 不安全的目录

769

这是什么意思,我该如何修复它?

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

1
如果您没有更改答案中所给出的所需文件夹所有权的权限,则打开.zshrc文件并在文件开头放置此行ZSH_DISABLE_COMPFIX=true - codeman48
6
这个问题怎么可能不被认为是关于“主要由程序员使用的软件工具”呢?如果不是程序员,那么主要使用zsh的职业是什么? - twiz
28个回答

7
  1. 运行 compaudit 命令,它会列出它认为不安全的目录

  2. sudo chown -R 用户名:根目录 target_directory

  3. sudo chmod -R 755 target_directory


6
在macOS Sierra上,您需要运行以下命令:sudo chown -R $(whoami):staff /usr/local

这就是我的全部了。谢谢! - undefined

5
我没有看到任何参考本主题中 homebrew 信息的答案: https://docs.brew.sh/Shell-Completion#configuring-completions-in-zsh 为了在 zsh 中使用 Homebrew 的补全功能,您需要在初始化 zsh 的补全工具之前将 Homebrew 管理的 zsh 站点函数添加到 FPATH 中。 将以下内容添加到您的 ~/.zshrc 文件中即可:
```bash fpath=($(brew --prefix)/share/zsh/site-functions $fpath) ```
if type brew &>/dev/null; then
  FPATH=$(brew --prefix)/share/zsh/site-functions:$FPATH

  autoload -Uz compinit
  compinit
fi

在调用 compinit 之前必须执行此操作。

这解决了我的问题,并且没有手动更改所有权或其他操作。


5

我的建议是运行compaudit,然后仅修复审核发现的目录的权限。 确保所识别的目录对组或其他用户没有写权限。


3
今天早上,我的系统更新了一些包,留下了以下错误信息。我使用的是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

在将131142切换回root后,来自zsh的此错误消息消失了。


3

我在运行google-cloud-sdk安装脚本后遇到了这个问题,该脚本通过在.zshrc中添加条目来为Shell添加命令补全功能。

按照Homebrew配置zsh补全的指导是有帮助的。

此外,如果在尝试加载这些补全时收到“zsh compinit: insecure directories”警告,则需要运行此命令:chmod -R go-w "$(brew --prefix)/share"


2

2

使用compinit向脚本的输入流发送一个y字符,以自动回答“忽略不安全的目录和文件并继续 [y]”还是“中止compinit [n]?”的问题。

echo "y" > source <GOOGLECLOUDSDK>/completion.zsh.inc

当以下情况发生时,此解决方案非常有用:

  • 您无法对文件夹进行所有权/访问权限更改。
  • 您不能使用-u选项删除警告(可能是因为您没有明确调用'compinit',而是由您调用的脚本调用)。

注意:它不能解决问题,只是隐藏警告(与其他答案不同,那些答案涉及删除'组写入访问权限'或'更改所有权为root')。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接