我最近阅读了该--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
,另一个进程可以创建具有不同所有权的目录;或者,对于文件,另一个进程可以创建该文件或在其位置创建符号链接...