这意味着什么?我该如何解决?
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
当前回答
在macOS Sierra上,你需要运行: sudo chown -R $(whoami):staff /usr/local
其他回答
更新所有权限正确的文件/文件夹:
Compaudit | xargs chmod g-w
您不需要使用sudo更改所有者-除非文件属于root
(在macOS BigSur上测试)
今天早上,我的系统中的一些包更新了,并给我留下了这个错误消息。我使用的是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的错误消息消失了。
我没有看到任何关于这个主题的自制信息的回答:https://docs.brew.sh/Shell-Completion#configuring-completions-in-zsh
要使Homebrew的完成功能在zsh中可用,必须在初始化zsh的完成功能之前在FPATH上获得Homebrew管理的zsh site-functions。将以下内容添加到~/。zshrc中:
if type brew &>/dev/null; then
FPATH=$(brew --prefix)/share/zsh/site-functions:$FPATH
autoload -Uz compinit
compinit
fi
这必须在调用compinit之前完成。
这为我解决了问题,无需手动更改所有权或其他方式。
当我sudo -i启动根shell时,我得到了相同的警告,@chakrit的解决方案对我不起作用。
但我发现-u开关的compinit工作,例如在你的.zshrc/zshenv或你调用compinit的地方
compinit -u
注意:不建议用于生产系统
参见http://zsh.sourceforge.net/Doc/Release/Completion-System.html#Initialization
我的建议是运行compaudit,然后修复由审计发现的目录的权限。 确保识别的目录没有组或其他的写权限。