zsh compinit:不安全的目录。 Compaudit 显示 /tmp 目录
zsh compinit: insecure directories. Compaudit shows /tmp directory
我 运行ning zsh 在 Raspberry Pi 2 (Raspbian Jessie) 上。 zsh compinit
抱怨 /tmp
目录不安全。所以,我检查了目录的权限:
$ compaudit
There are insecure directories:
/tmp
$ ls -ld /tmp
drwxrwxrwt 13 root root 16384 Apr 10 11:17 /tmp
显然任何人都可以在 /tmp 目录中做任何事情。考虑到它的目的,这是有道理的。所以我尝试了 this Whosebug question 上的建议。我还在其他网站上尝试了类似的建议。具体来说,它建议关闭对该目录的组写权限。由于根据 ls -ld
的权限,我还必须关闭 'all' 写入权限。所以:
$ sudo su
% chmod g-w /tmp
% chmod a-w /tmp
% exit
$ compaudit
# nothing shows up, zsh is happy
这让 zsh 闭嘴了。但是,其他程序开始中断。例如,每当我输入字母 'l' 时,gnome-terminal 就会崩溃。因此,我不得不重新打开写权限,并且 运行 compinit -u
在我的 .zshrc
.
我想知道的是:有没有更好的方法来解决这个问题?我不确定这是个好主意让 compinit 使用不安全的目录。我的点文件存储库托管在 here, and the file where I now run compinit -u
is 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
的杂散目录,在trace文件中寻找fpath
zsh-x.log
.
使用 /tmp
下的目录 可以 是安全的,但前提是您安全地创建了它。 /tmp
的权限允许任何人创建文件,但用户只能删除或重命名他们自己的文件(这就是 the t
at the end of the permissions means)。因此,如果一个目录是安全创建的(例如 mktemp -d
),那么在 fpath
中使用它是安全的。 compaudit
不够复杂,无法识别这种情况,而且无论如何它都没有足够的信息,因为目录是否安全取决于它的创建方式。
我 运行ning zsh 在 Raspberry Pi 2 (Raspbian Jessie) 上。 zsh compinit
抱怨 /tmp
目录不安全。所以,我检查了目录的权限:
$ compaudit
There are insecure directories:
/tmp
$ ls -ld /tmp
drwxrwxrwt 13 root root 16384 Apr 10 11:17 /tmp
显然任何人都可以在 /tmp 目录中做任何事情。考虑到它的目的,这是有道理的。所以我尝试了 this Whosebug question 上的建议。我还在其他网站上尝试了类似的建议。具体来说,它建议关闭对该目录的组写权限。由于根据 ls -ld
的权限,我还必须关闭 'all' 写入权限。所以:
$ sudo su
% chmod g-w /tmp
% chmod a-w /tmp
% exit
$ compaudit
# nothing shows up, zsh is happy
这让 zsh 闭嘴了。但是,其他程序开始中断。例如,每当我输入字母 'l' 时,gnome-terminal 就会崩溃。因此,我不得不重新打开写权限,并且 运行 compinit -u
在我的 .zshrc
.
我想知道的是:有没有更好的方法来解决这个问题?我不确定这是个好主意让 compinit 使用不安全的目录。我的点文件存储库托管在 here, and the file where I now run compinit -u
is 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
的杂散目录,在trace文件中寻找fpath
zsh-x.log
.
使用 /tmp
下的目录 可以 是安全的,但前提是您安全地创建了它。 /tmp
的权限允许任何人创建文件,但用户只能删除或重命名他们自己的文件(这就是 the t
at the end of the permissions means)。因此,如果一个目录是安全创建的(例如 mktemp -d
),那么在 fpath
中使用它是安全的。 compaudit
不够复杂,无法识别这种情况,而且无论如何它都没有足够的信息,因为目录是否安全取决于它的创建方式。