Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。












想改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。

4年前关闭。



Improve this question




我不了解mktemp的功能以及临时文件的含义。
touch xyzmktemp xyz之间有什么区别(除了mktemp将创建一些附加了xxx的文件并具有600个权限的事实之外)?

请澄清。

最佳答案

mktemp将名称随机化。从安全 Angular 来看,这非常重要。
试想一下,您会执行以下操作:

echo something > /tmp/temporary-file
在您的root运行脚本中。
然后有人(已经读过您的脚本)
ln -s /etc/passwd /tmp/temporary-file
之前。
这导致/etc/passwd被覆盖,并且可能意味着从系统开始的各种不愉快的事情都被破坏了,而以系统结尾的东西则被黑了(当可以精心制作输入的something时)。
在这种情况下,mktemp命令可以为您提供帮助:
TEMP=$(mktemp /tmp/temporary-file.XXXXXXXX)
echo something > ${TEMP}
现在,此ln /etc/passwd攻击将不起作用。
简要了解mktemp的历史:mktemp命令是OpenBSD的人们发明的,最早出现在1997年的OpenBSD 2.1中。他们的目标是提高shell脚本的安全性。以前,通常将$$添加到临时文件名中,这绝对是不安全的。现在,所有UNIX/Linux系统都具有mktemp或它的替代版本,并且它已成为事实上的标准。有趣的是,不安全地拒绝了mktemp C函数。

关于linux - 为什么我们需要mktemp? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11636790/

10-10 16:53