Adam R. Grey Asked: 2018-08-31 05:19:03 +0800 CST2018-08-31 05:19:03 +0800 CST 2018-08-31 05:19:03 +0800 CST 无论用于提取文件的命令如何,tarball 都可以更改文件提取到的位置,这是真的吗? 772 我有一位同事说您需要小心提取 tarball,因为它们可以进行您不知道的更改。我一直认为 tarball 只是压缩文件的层次结构,所以如果你将它解压缩到 /tmp/example/ 它不可能将文件偷偷溜进 /etc/ 或类似的东西。 filenames tar 2 个回答 Voted Best Answer Jeff Schaller 2018-08-31T05:43:35+08:002018-08-31T05:43:35+08:00 不同的 tar 实用程序在这方面的行为不同,所以要小心。对于您未创建的 tar 文件,请务必在解压缩之前列出目录。 Solaris 焦油: 命名文件从 tarfile 中提取并写入 tarfile 中指定的相对于当前目录的目录。使用要提取的文件和目录的相对路径名。 tar 存档中包含的绝对路径名使用绝对路径名解压缩,也就是说,前导正斜杠 (/) 不会被剥离。 对于具有完整(绝对)路径名的 tar 文件,例如: /tmp/real-file /etc/sneaky-file-here ...如果你提取这样的文件,你最终会得到这两个文件。 GNU焦油: 默认情况下,GNU tar 会/在输入或输出中删除前导,并抱怨包含..组件的文件名。有一个选项可以关闭此行为: --absolute-names -P 不要从文件名中去除前导斜杠,并允许文件名包含..文件名组件。 ...如果您使用 GNU tar 提取完整路径的 tar 文件而不使用该-P选项,它会告诉您: /tar:从成员名称中删除前导 并将文件提取到当前目录的子目录中。 AIX 焦油: 对此一无所知,它的行为与 Solaris tar 一样——它将创建和提取具有完整/绝对路径名的 tar 文件。 HP-UX tar:( 欢迎更好的在线参考) 警告 无法将绝对路径名恢复到相对位置。 OpenBSD 焦油: -P 不要/从路径名中去除前导斜杠 ( )。默认是去除前导斜杠。 在 macOS、FreeBSD 和 NetBSD 上也-P实现了tar具有相同语义的选项,此外,tar在FreeBSD和 macOS 上,将“拒绝提取路径名包含..或目标目录将被符号链接更改的归档条目”而没有-P. schilytools 明星: -/ 提取档案时,不要从文件名中去除前导斜杠。包含绝对路径名的 Tar 档案通常是个坏主意。对于其他 tar 实现,它们可能永远不会在不破坏现有文件的情况下被提取。出于这个原因,默认情况下,在提取模式下会从文件名中去除前导斜杠。 mosvy 2018-08-31T10:31:39+08:002018-08-31T10:31:39+08:00 tar 炸弹发生的一件有趣的事情是它们将当前目录的权限更改为包含在 tarball 中的权限。 例如,如果 tarball 包含 '.' 目录,然后您以 root 身份将其解压缩到 /tmp 中,它将破坏您的系统,因为除 root 之外的任何人都无法写入 /tmp。
不同的 tar 实用程序在这方面的行为不同,所以要小心。对于您未创建的 tar 文件,请务必在解压缩之前列出目录。
Solaris 焦油:
对于具有完整(绝对)路径名的 tar 文件,例如:
...如果你提取这样的文件,你最终会得到这两个文件。
GNU焦油:
...如果您使用 GNU tar 提取完整路径的 tar 文件而不使用该
-P
选项,它会告诉您:并将文件提取到当前目录的子目录中。
AIX 焦油:
对此一无所知,它的行为与 Solaris tar 一样——它将创建和提取具有完整/绝对路径名的 tar 文件。
HP-UX tar:( 欢迎更好的在线参考)
OpenBSD 焦油:
在 macOS、FreeBSD 和 NetBSD 上也
-P
实现了tar
具有相同语义的选项,此外,tar
在FreeBSD和 macOS 上,将“拒绝提取路径名包含..
或目标目录将被符号链接更改的归档条目”而没有-P
.schilytools 明星:
tar 炸弹发生的一件有趣的事情是它们将当前目录的权限更改为包含在 tarball 中的权限。
例如,如果 tarball 包含 '.' 目录,然后您以 root 身份将其解压缩到 /tmp 中,它将破坏您的系统,因为除 root 之外的任何人都无法写入 /tmp。