为什么 mktemp -u 被认为“不安全”?

为什么 mktemp -u 被认为“不安全”?

我最近阅读了该--help文本mktemp(该man页面不可用)并发现了这一点:

  -u, --dry-run       do not create anything; merely print a name (unsafe)

为什么这“不安全”?如此标记有什么具体原因吗?

答案1

mktemp引用其手册,其要点是“安全地创建临时文件或目录”。基本上,在脚本中,您可以编写

file="$(mktemp)"

或者

dir="$(mktemp -d)"

并根据需要使用其中任何一个,安全地知道临时文件和目录只能由运行命令的用户(当然,在大多数设置中是 root )访问,并且它们不是其他内容的符号链接,等等(仍然有一些警告;特别是,您需要检查退出状态,并且父目录需要安全使用。请参阅文档了解详情。)

mktemp -u不提供这些保证,因为它将文件名的构造与其使用分开;在脚本中,您必须运行 (不要这样做

dir="$(mktemp -u)"
mkdir "$dir"
chmod 700 "$dir"

mktemp和之间mkdir,另一个进程可以创建具有不同所有权的目录;或者,对于文件,另一个进程可以创建该文件或在其位置创建符号链接...

相关内容