一个 tar 包被 8 种工具解出 8 种结果,探测 POSIX 边界
mitsuhiko · x · 2026-11-10
stoppels.ch 发布文章《The hardest tarball?》:构造一个可用单条 GNU tar 命令创建的归档,但不同工具解压会得到最多 8 种不同结果。
构造技巧:重复同名文件让 GNU tar 存成硬链接,再用 transform 改名为 café 触发 pax UTF-8 头,随后用 pax 的 size:=512 记录覆盖硬链接默认 size=0(512 恰好等于一个 tar 头大小),制造「硬链接带数据」的歧义——POSIX 只说 pax 归档中硬链接数据块「可以包含」,语义不明。
实测结果:GNU tar、BusyBox、Python、Go、Perl 这组忽略硬链接上的 size,解出三个文件;而 macOS 系统自带的 bsdtar 更贴近 POSIX 精神,把那 512 字节写进硬链接,导致 file 内容被覆盖。是对各 tar 实现兼容性差异的一次精彩实测。
「Fun」频道最新
- 博主 SimbaLee 发文抨击他人抄袭其 MiniMax 赞美帖 — lipeng0820 · 2026-11-11
- 未能中奖后自制 AI 霓虹灯牌:能听会说还会派活 — alexcovo_eth · 2026-11-11
- AI 圈梗:朋友们向「圣 Sam」祈祷新模型发布 — TheMoonMidas · 2026-11-11
- 一行指令生成科普视频:社区用 Claude Fable 5.2 批量创作 — EricBuess · 2026-11-11
- 「AI疲劳」爆梗:程序员自嘲被Claude全面取代只配创造股东价值 — justalexoki · 2026-11-11
- Gemini 4 Carbon 发布首日遭吐槽:用户每个请求都报内部错误 — Angaisb_ · 2026-11-11