这是什么意思,我该如何解决?
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
Answers:
这为我解决了:
$ cd /usr/local/share/zsh
$ sudo chmod -R 755 ./site-functions
信用:zsh邮件列表上的帖子
编辑:正如@biocyberman在评论中指出的。您可能还需要更新其所有者site-functions
:
$ sudo chown -R root:root ./site-functions
在我的机器(OSX 10.9)上,我不需要这样做,但是YMMV。
EDIT2:在OSX 10.11上,仅此有效:
$ cd /usr/local/share/
$ sudo chmod -R 755 zsh
$ sudo chown -R root:staff zsh
另外,user:staff是OSX上正确的默认权限。
.zshenv
并.zshrc
使用新文件夹,并chmod
在新文件夹上执行与我随该文件夹发布的相同操作。
chmod
命令修改为sudo chmod -R go-w zsh
。
/usr/local/share/zsh/site-functions
来/usr/local/Cellar
,只好chown -R root:staff /usr/local/Cellar
也才这个工作。
compaudit | xargs chmod g-w
可以解决问题,请参阅http://www.wezm.net/technical/2008/09/zsh-cygwin-and-insecure-directories/
compaudit
可用于诊断和修复此类问题。
compaudit | xargs chown root
compaudit | xargs chmod g-w
一起ompaudit | xargs chown root
为我工作,似乎让HomeBrew感到高兴。有人可以解释一下发生了什么。
大多数答案都带有解决方案,但没有提及为什么会出现此警告。这是ZSH的compinit的摘录:
出于安全原因,compinit还会检查完成系统是否将使用root或当前用户不拥有的文件,或目录中可全局写入或可组写的文件,或者不是root或当前用户拥有的文件。如果找到了此类文件或目录,compinit会询问是否应真正使用完成系统。为了避免进行这些测试并使所找到的所有文件都无需询问就可以使用,请使用选项-u,并使compinit静默忽略所有不安全的文件和目录,请使用选项-i。给定-C选项时,将完全跳过此安全检查。
因此,该解决方案意味着修复以下一项(或全部):
将当前用户设置为所有目录/子目录/文件的所有者,原因是:
compaudit | xargs chown -R "$(whoami)"
删除组/其他文件的写许可权,原因是:
compaudit | xargs chmod go-w
另一种方法是通过使用跳过这些检查
compinit -u
但我并没有真正建议这样做,因为将问题隐藏在地毯下只能在短期内解决问题。
chown -R "$(whoami)"
对于主目录之外的文件,/usr/local/
将无法正常工作。根据文档,将文件设为根目录拥有所有权更有意义吗?
sudo -i
启动root shell时,我也得到了同样的警告,@ chakrit的解决方案对我不起作用。
但是我发现工作的-u
切换compinit
,例如在您的.zshrc / zshenv或您致电的地方compinit
compinit -u
注意:不建议用于生产系统
另请参见http://zsh.sourceforge.net/Doc/Release/Completion-System.html#Initialization
在macOs Sierra(10.12.1)上,接受的答案对我不起作用。必须从/ usr / local递归执行
cd /usr/local
sudo chown -R <your-username>:<your-group-name> *
注意:您可以使用来获取您的用户名whoami
,id -g
我通过做固定
sudo chown root:staff -R /usr/local/share/zsh
在我的情况下,share /中的其他目录也分配了“ staff”组
这是https://github.com/zsh-users/zsh-completions/issues/433#issuecomment-600582607中唯一对我有用的东西。谢谢https://github.com/malaquiasdev!
$ cd /usr/local/share/
$ sudo chmod -R 755 zsh
$ sudo chown -R root:staff zsh
我的机器:
System Version: macOS 10.15.4 (19E287)
Kernel Version: Darwin 19.4.0
所以这就是我所做的
运行compaudit
,它将为您提供它认为不安全的目录列表。
运行sudo chmod -R 755 target_directory
(例如:sudo chmod -R 755 /usr/local/share/zsh
)
范例:
compaudit
返回:
/ usr / local / share / zsh
所以我跑
sudo chmod -R 755 /usr/local/share/zsh
今天早上,我系统中的某些软件包已更新,并给我留下此错误消息。我正在使用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
回root
,从zsh的此错误消息就走了。
运行compaudit
,它将为您提供它认为不安全的目录列表
sudo chown -R username:root target_directory
sudo chmod -R 755 target_directory
列出的所有解决方案都不适合我。相反,我最终卸载并重新安装了Homebrew,从而达到了目的。卸载说明可以在这里找到:http : //osxdaily.com/2018/08/12/how-uninstall-homebrew-mac/
运行此命令对我来说有效mac OS Catalina
:
compaudit | xargs chmod g-w,o-w
我在运行google-cloud-sdk
安装脚本后遇到了这个问题,该脚本通过中的条目将命令完成功能添加到shell中.zshrc
。
遵循Homebrew的有关在zsh中配置补全的说明很有帮助。