反对 /tmp – Tony Finch

主要观点:评论指出/tmp通常不是个好主意,虽曾常见安全问题但如今已少见,其存在导致诸多复杂和安全问题,如共享全局可变状态跨越安全边界等,介绍了多种与/tmp相关的 Unix 机制及问题,如粘性位、C 语言中的tmp相关函数、mktemp在 shell 中的使用、tmp清理脚本问题及补救措施(如 per-user 的$TMPDIR)等,虽无法回到过去去掉/tmp,但仍在努力使其更安全,作者在写软件时避免使用/tmp
关键信息:/tmp的安全问题及历史演变、各种与/tmp相关的 Unix 机制和函数及其特点、per-user 的$TMPDIR作为补救措施、使/tmp更安全的努力等。
重要细节:

  • 粘性位最初用于加快常用程序,后用于目录以解决/tmp的安全问题,使目录中的文件只有特定用户可删除。
  • POSIX 曾提供 5 种创建临时文件的方式,其中 3 种已被弃用,2 种较安全的函数后来被添加。
  • mkstempmkdtemp函数用于创建安全的临时文件和目录,要生成不可预测的文件名等。
  • mktemp命令是mkstemp的包装器,可安全用于 shell 脚本。
  • tmp清理脚本存在时间-检查/时间-使用漏洞等问题。
  • 若有 per-user 的$TMPDIR,可避免/tmp相关的安全问题,setuid 程序需更小心创建临时文件。
  • 过去未采用 per-user 的$TMPDIR主要是路径依赖等原因,现在有一些使/tmp更安全的机制如pam_namespacesystemd PrivateTmp
阅读 12
0 条评论