S.S. Anne Asked: 2019-09-09 11:50:54 +0800 CST2019-09-09 11:50:54 +0800 CST 2019-09-09 11:50:54 +0800 CST 为什么 mktemp -u 被认为是“不安全的”? 772 我最近阅读了--help文本(该页面不可用)并发现了这一点:mktempman -u, --dry-run do not create anything; merely print a name (unsafe) 为什么这是“不安全的”?是否有任何具体原因将其标记为此类? files filenames 1 个回答 Voted Best Answer Stephen Kitt 2019-09-09T13:06:53+08:002019-09-09T13:06:53+08:00 引用其手册的全部要点mktemp是“安全地创建临时文件或目录”。基本上,在脚本中,您可以编写 file="$(mktemp)" 或者 dir="$(mktemp -d)" 并根据需要使用任何一个,安全地知道临时文件和目录只能由运行命令的用户访问(当然,在大多数设置中是 root 用户),并且它们不是指向其他东西的符号链接,等(还有一些注意事项;特别是,您需要检查退出状态,并且父目录需要安全使用。有关详细信息,请参阅文档。) mktemp -u不提供这些保证,因为它将文件名的构造与其使用分开;在脚本中,您必须运行(不要这样做) dir="$(mktemp -u)" mkdir "$dir" chmod 700 "$dir" 在 和 之间mktemp,mkdir另一个进程可以创建具有不同所有权的目录;或者,对于文件,另一个进程可以创建文件或在其位置创建符号链接......
引用其手册的全部要点
mktemp
是“安全地创建临时文件或目录”。基本上,在脚本中,您可以编写或者
并根据需要使用任何一个,安全地知道临时文件和目录只能由运行命令的用户访问(当然,在大多数设置中是 root 用户),并且它们不是指向其他东西的符号链接,等(还有一些注意事项;特别是,您需要检查退出状态,并且父目录需要安全使用。有关详细信息,请参阅文档。)
mktemp -u
不提供这些保证,因为它将文件名的构造与其使用分开;在脚本中,您必须运行(不要这样做)在 和 之间
mktemp
,mkdir
另一个进程可以创建具有不同所有权的目录;或者,对于文件,另一个进程可以创建文件或在其位置创建符号链接......