2012-09-24 30 views

回答

11

我認爲您需要在其他用戶可能具有寫入權限的目錄內創建臨時目錄。

作爲管理員,您應該進行設置,以便每個用戶都有自己的TMPDIR(例如pam-tmpdir - 或者更好,per-process namespaces,但需要更多設置)。然而,作爲應用程序編寫者,您不能假設這一點,所以您需要應對世界可寫的/tmp

這裏的正確功能是mkdtemp,因爲mkstemp只能創建常規文件。 mkdtemp僅在POSIX.1 2008中引入,因此原則上它可能不適用於所有POSIX平臺。但是,它已經可以在各大平臺上很長一段時間:

  • 在OpenBSD因爲2.2(1997)在FreeBSD
  • 因爲2.2.7(1998)
  • 在NetBSD自1.4(1998)
  • OSX因爲... 10.0?在Linux上(用glibc),因爲Glibc 2.2
  • (1999)
  • 在dietlibc至少自2001年uClibc的
  • 從一開始,我覺得在MINIX 3
  • 在Solaris
  • 只因爲Solaris 10

所以在實踐中,您可以安全地使用mkdtemp。如果您需要回退,請在您的源代碼中包含OpenBSD實現。

相關問題