用 mktemp 安全创建临时文件
告别可预测的 /tmp 文件名,脚本里安全又防冲突地建临时文件和目录。
用 tmpfile=$(mktemp) 创建临时文件,用 tmpdir=$(mktemp -d /tmp/backup-XXXXXX) 创建临时目录,退出时记得 trap 'rm -rf "$tmpdir"' EXIT 清理。
01命令
命令
$ tmpdir=$(mktemp -d /tmp/backup-XXXXXX) && echo "$tmpdir"02作用说明
手写的 /tmp/$$.log 这类文件名可预测、易被抢占:攻击者可以提前创建同名路径劫持你的写入。mktemp 原子化地创建 0600 权限的文件并输出唯一名字,只有你的脚本能碰它。模板末尾的 XXXXX 会变成随机后缀,mktemp -d 则创建整个临时目录。
03风险
!注意: mktemp 只负责创建,删除要靠自己,一般用 trap 在 EXIT 时清理。注意 mktemp -d 创建的目录是 0700,但你在里面新建的文件仍受 umask 影响,涉及机密内容请手动 chmod 600。
04撤销
✓无需撤销——该命令不会改变持久状态。
05来源
- mktemp(1) - Linux manual page依据: mktemp [OPTION]... [TEMPLATE] creates a temporary file or directory; TEMPLATE must contain at least 3 consecutive Xs and -d/--directory is documented.
- mktemp(1) — Debian bookworm依据: Documents the TEMPLATE requirement (at least 3 X's in the last component), --suffix and the safe creation mode 0600.
最后验证: 2026-09-19 · 分类: 文件与文件夹