Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。
想改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。
4年前关闭。
Improve this question
我不了解
请澄清。
然后有人(已经读过您的脚本)
这导致
在这种情况下,
简要了解mktemp的历史:
想改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。
4年前关闭。
Improve this question
我不了解
mktemp
的功能以及临时文件的含义。touch xyz
和mktemp 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