【发布时间】:2012-09-16 10:30:00
【问题描述】:
对于在/tmp中创建临时目录的任务,
对于可移植代码,如何在 mkdtemp、mkstemp 等之间进行选择?
【问题讨论】:
标签: security unix directory posix mkdir
对于在/tmp中创建临时目录的任务,
对于可移植代码,如何在 mkdtemp、mkstemp 等之间进行选择?
【问题讨论】:
标签: security unix directory posix mkdir
我认为您需要在其他用户可能具有写入权限的目录中创建一个临时目录。
作为管理员,您应该进行设置,以便每个用户都有自己的TMPDIR(例如使用pam-tmpdir — 或者使用per-process namespaces 更好,但这需要更多设置)。但是,作为应用程序编写者,您不能假设这一点,因此您需要处理全球可写的/tmp。
这里正确的函数是mkdtemp,因为mkstemp 只能创建常规文件。 mkdtemp 仅在 POSIX.1 2008 中引入,因此原则上它可能尚未在所有 POSIX 平台上可用。不过在各大平台上已经上线很久了:
所以在实践中,您可以安全地使用mkdtemp。如果您需要后备,请在您的源代码中包含 OpenBSD 实现。
【讨论】: