zsh compinit:不安全的目录。 Compaudit显示/ tmp目录

时间:2016-04-10 18:49:35

标签: linux zsh zsh-completion

我在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 up。但是,其他程序开始破解。例如,每当我输入字母“'”时,gnome-terminal就会崩溃。因此,我必须重新启用写入权限,然后在我的compinit -u中运行.zshrc

我想知道的是: 有没有更好的方法可以解决这个问题? 我不确定让它成为一个好主意使用不安全的目录。我的dotfiles repo托管here,我现在运行compinit -u的文件是here

1 个答案:

答案 0 :(得分:4)

首先,/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不够复杂,无法识别这种情况,并且无论如何它都没有足够的信息,因为目录是否安全取决于它是如何创建的。