如何修复“zsh compinit:不安全的目录”?

如何修复“zsh compinit:不安全的目录”?

当我运行时fakerootzsh总是给我这个警告:

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

我可以通过按下y然后继续fakeroot工作。

我想知道这个错误信息是什么以及如何修复它。

(如果我按下n fakeroot仍继续(用 验证whoami),这对我来说似乎很奇怪。)

答案1

这使得错误消失:

cd /usr/local/share/zsh
sudo chmod -R 755 ./site-functions
sudo chown -R root:root ./site-functions

不过,我仍不确定这个错误意味着什么或者为什么会发生。

信用:StackOverflow 上的这个答案进而得到解决方案zsh 邮件列表上的一篇文章

答案2

我只是按照上面所写的内容去做了。

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

我忽略了这些。之后,我跑了compaudit

# compaudit

它向我展示了两个目录,

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

因此,不安全意味着他们的权限有问题,我改变了权限以保护他们的安全,错误就消失了。

我还检查了两个目录都是空的,所以我删除了它们,虽然我不建议这样做,但我还是这样做了。

答案3

修复错误

zsh compinit:不安全的文件,对列表运行 compaudit。忽略不安全的文件并继续 [y] 或中止 compinit [n]?

我运行了2个命令:

命令 1。

compaudit

输出:

There are insecure files:
/usr/share/zsh/vendor-completions/_code

然后我跑了:

命令 2。

sudo chown root /usr/share/zsh/vendor-completions/_code

干杯

答案4

今天早上,我的系统中的某些软件包进行了更新,并留下了这个错误消息。

显然,更新中的某些内容将用户名和组更改为数字,而不是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 的这个错误消息消失了。

相关内容