【问题标题】:What's a POSIX function for creating a temporary directory securely?什么是用于安全地创建临时目录的 POSIX 函数?
【发布时间】:2012-09-16 10:30:00
【问题描述】:

对于在/tmp中创建临时目录的任务, 对于可移植代码,如何在 mkdtempmkstemp 等之间进行选择?

【问题讨论】:

    标签: security unix directory posix mkdir


    【解决方案1】:

    我认为您需要在其他用户可能具有写入权限的目录中创建一个临时目录。

    作为管理员,您应该进行设置,以便每个用户都有自己的TMPDIR(例如使用pam-tmpdir — 或者使用per-process namespaces 更好,但这需要更多设置)。但是,作为应用程序编写者,您不能假设这一点,因此您需要处理全球可写的/tmp

    这里正确的函数是mkdtemp,因为mkstemp 只能创建常规文件。 mkdtemp 仅在 POSIX.1 2008 中引入,因此原则上它可能尚未在所有 POSIX 平台上可用。不过在各大平台上已经上线很久了:

    • 2.2 (1997) 以来在 OpenBSD 上
    • 2.2.7 (1998) 以来在 FreeBSD 上
    • 1.4 (1998) 以来在 NetBSD 上
    • OSX 自... 10.0?
    • 自 Glibc 2.2 (1999) 起在 Linux(使用 Glibc)上
    • 至少从 2001 年开始在 Dietlibc 中
    • 我认为从一开始就在 uClibc 中
    • MINIX 3
    • 仅在 Solaris 上,因为 Solaris 10

    所以在实践中,您可以安全地使用mkdtemp。如果您需要后备,请在您的源代码中包含 OpenBSD 实现。

    【讨论】:

      猜你喜欢
      • 2011-05-29
      • 2015-01-07
      • 2013-11-07
      • 2022-09-08
      • 1970-01-01
      • 2015-05-13
      相关资源
      最近更新 更多