我在 Raspberry Pi 2 (Raspbian Jessie) 上运行 zsh。 zsh compinit
提示 /tmp
目录不安全。所以,我检查了目录的权限:
$ compaudit
There are insecure directories:
/tmp
$ ls -ld /tmp
drwxrwxrwt 13 root root 16384 Apr 10 11:17 /tmp
显然任何人都可以在/tmp 目录中做任何事情。考虑到它的目的,这是有道理的。所以我尝试了 this stackoverflow question 上的建议.我还在其他网站上尝试了类似的建议。具体来说,它建议关闭对该目录的组写权限。由于根据 ls -ld
权限看起来如何,我还必须关闭“所有”写权限。所以:
$ sudo su
% chmod g-w /tmp
% chmod a-w /tmp
% exit
$ compaudit
# nothing shows up, zsh is happy
这让 zsh 闭嘴了。但是,其他程序开始崩溃。例如,每当我输入字母“l”时,gnome-terminal 就会崩溃。因此,我不得不重新打开写入权限,然后在我的 .zshrc
中运行 compinit -u
。
我想知道的是:有没有更好的方法来解决这个问题?我不确定让 compinit 使用不安全的目录是否是个好主意。我的点文件存储库托管 here ,我现在运行 compinit -u
的文件是 here .
最佳答案
首先,/tmp
的原始权限是正确的。确保您已正确恢复它们:ls -ld/tmp
必须以 drwxrwxrwt
开头。您可以使用 sudo chmod 1777/tmp
来设置正确的权限。 /tmp
应该是每个人都可写的,任何其他权限很可能会破坏内容。
compaudit
提示 fpath
中的目录,因此 fpath
中的目录之一的格式为 /tmp/...
(不一定是 /tmp
本身)。检查 fpath
的设置方式。通常 fpath
中的目录应该只是 zsh 安装目录的子目录,并且放在您的主目录中。 /tmp
的子目录不会出现在您不寻常的情况下。
如果你找不到添加到 fpath
的杂散目录,运行 zsh -x 2>zsh-x.log
,然后寻找 fpath
在跟踪文件 zsh-x.log
中。
使用 /tmp
下的目录可以是安全的,但前提是您安全地创建了它。 /tmp
的权限允许任何人创建文件,但用户只能删除或重命名他们自己的文件(这就是 the t
at the end of the permissions means )。因此,如果一个目录是安全创建的(例如使用 mktemp -d
),那么在 fpath
中使用它是安全的。 compaudit
不够复杂,无法识别这种情况,而且在任何情况下它都没有足够的信息,因为目录是否安全取决于它的创建方式。
关于linux - zsh compinit : insecure directories. Compaudit 显示/tmp 目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36534044/