使用 .tgz 保存文件所有权

使用 .tgz 保存文件所有权

回到另一个可能非常非常基本的 UNIX 问题。

我理解 Tape Archive Zips ( ) 的前提.tgz是它们保留 uid、gid、权限......

但是,这似乎不可移植。例如,如果用户john在一台 UNIX 计算机上创建 .tgz,并在没有该用户或具有相同名称但不同 UID 的用户的计算机上解压缩,会怎样?

这是如何运作的?

答案1

真正的旧tar格式仅存储数字用户和组标识符,因此它们存在您所描述的问题。

然而,从 1988 年的 POSIX 标准开始,tar诸如Unix标准tar格式或者pax还存储用户名和组名,以便他们可以按名称保留所有权。给定一个包含 uid 1234 拥有的文件的 tarball,用户名为johntar将查找名为 的用户john,并在可能的情况下提取具有该所有权的文件(可能使用非 1234 的 uid),如果没有这样的用户,则回退到 uid 1234用户。

这些都不是完美的,这就是为什么tar除非以 root 身份运行否则不会恢复所有权的原因(除了它需要 root 才能更改所有权这一事实);默认情况下,文件是以运行用户的所有权提取的。

相关内容