在脚本中创建临时文件:mktemp 相对于触摸文件的优势?

新手上路,请多包涵

虽然我可以使用 mktemptouch 创建一个临时文件,但是 mktemp 手动编写脚本有什么好处 touch 文件?

原文由 Shehbaz Jaffer 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 419
2 个回答

mktemp 随机化名称。从安全的角度来看,这是非常重要的。

想象一下,你做了类似的事情:

 echo something > /tmp/temporary-file

在您的根运行脚本中。

有人(读过你的剧本)确实

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 函数因为不安全而被弃用。

原文由 Igor Chubin 发布,翻译遵循 CC BY-SA 4.0 许可协议

您经常需要一个“便签本文件”(或目录)。此外,您可能同时需要几个这样的文件,并且您不想费心弄清楚如何命名它们,这样就不会发生冲突。

“mktemp”符合要求 :)

原文由 paulsm4 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题