回到另一个可能非常非常基本的 UNIX 问题。
我理解 Tape Archive Zips ( ) 的前提.tgz
是它们保留 uid、gid、权限......
但是,这似乎不可移植。例如,如果用户john
在一台 UNIX 计算机上创建 .tgz,并在没有该用户或具有相同名称但不同 UID 的用户的计算机上解压缩,会怎样?
这是如何运作的?
答案1
真正的旧tar
格式仅存储数字用户和组标识符,因此它们存在您所描述的问题。
然而,从 1988 年的 POSIX 标准开始,tar
诸如Unix标准tar
格式或者pax
还存储用户名和组名,以便他们可以按名称保留所有权。给定一个包含 uid 1234 拥有的文件的 tarball,用户名为john
,tar
将查找名为 的用户john
,并在可能的情况下提取具有该所有权的文件(可能使用非 1234 的 uid),如果没有这样的用户,则回退到 uid 1234用户。
这些都不是完美的,这就是为什么tar
除非以 root 身份运行否则不会恢复所有权的原因(除了它需要 root 才能更改所有权这一事实);默认情况下,文件是以运行用户的所有权提取的。