MacOS 上的 `/tmp` 或 `/private/tmp` 是否需要全世界可写?

MacOS 上的 `/tmp` 或 `/private/tmp` 是否需要全世界可写?

我知道默认情况下它是全球可写的,但我想知道它是否需要这样?MacOS、操作系统及其任何支持的应用程序是否需要/tmp -> /private/tmp全球可写?

我在 Apple 的文档中找不到任何关于此或彼的信息,希望其他人可能知道?

有人主张删除其全球可写权限以获得更好的安全性,因为应用程序应该tmp在自己的应用程序目录中进行沙盒处理。

答案1

如果您锁定了/private/tmp(符号/tmp链接)的权限,那么任何试图以违反权限更改的方式使用它的软件都会中断(即使它以安全的方式使用了该目录,这也是完全可能的)。

让我来介绍一下更改权限将如何/private/tmp影响不同类型的软件:

  • 沙盒应用(即选择加入 macOS 沙盒机制的应用)大多被限制在自己的沙盒容器中(在 下~/Library/Containers),对其外部的访问权限有限。我认为它们根本无法使用/private/tmp(无论其权限如何)。除非有权利这样他们就可以访问它了——但我不知道有哪个系统可以做到这一点。
  • 使用任何标准方式创建/定位临时文件(包括使用$TMPDIR或 的shell 脚本mktemp -t ...)的软件将自动使用 下的私有(每个用户)目录/var/folders/something...,该目录比您使用 执行的锁定程度要高得多/private/tmp
  • 使用软件/private/tmp 适当地(这并不简单,但正如我所说,这是完全可能的)如果您的权限更改不允许访问它,它可能会失败(可能是以安全的方式,也可能不是 - 取决于细节)。
  • 使用软件/private/tmp 不当如果您的权限更改不允许访问它,也可能会失败(再次,也许是以安全的方式,也许不是 - 取决于细节)。

因此,据我所知,锁定/private/tmp很可能会破坏某些软件,并且可能产生比它解决的更多的问题。

相关内容