【发布时间】:2021-05-30 21:55:22
【问题描述】:
我想创建一个临时文件,正在查看 mktemp 手册,发现带有 -u 选项的 mktemp 被声明为不安全,这背后的原因是什么?
mktemp --help
Usage: mktemp [OPTION]... [TEMPLATE]
Create a temporary file or directory, safely, and print its name.
TEMPLATE must contain at least 3 consecutive 'X's in last component.
If TEMPLATE is not specified, use tmp.XXXXXXXXXX, and --tmpdir is implied.
Files are created u+rw, and directories u+rwx, minus umask restrictions.
-d, --directory create a directory, not a file
-u, --dry-run do not create anything; merely print a name (unsafe)
【问题讨论】:
-
我只想说这是您实际上并没有完全创建文件的事实,并且由于未遵循该过程,因此将其描述为不安全。在这种情况下,将 unsafe 定义为“不那么安全”可能会更好。
-
这是我从 mktemp 文档gnu.org/software/coreutils/manual/html_node/… 中找到的:“生成一个不命名现有文件的临时名称,而不更改文件系统内容。使用此命令的输出创建一个新文件本质上是不安全的,因为在生成名称和使用它之间有一个时间窗口,另一个进程可以使用相同的名称创建对象。”
标签: linux temporary-files tmp mktemp