更新:我发现我可以使用 GNU Tar 上的“--numeric-owner”标志以原始权限进行查看/提取。但是,我仍然想确切了解 tar 在这里做什么,因为我不清楚,特别是因为 Ubuntu 16.04 系统上确实存在“33”用户。
我有一个运行 BusyBox v1.01(2010.02.12-18:03+0000)内置外壳(ash)的嵌入式系统。
我注意到,当我创建一个 tarball(特别是 gzip 的 tarball,tgz)时,嵌入式系统和我的 Ubuntu 16.04 系统(运行 GNU tar 1.28)之间的文件所有权似乎不一致。
忙碌箱系统:
# touch my_file
# chown 33:0 my_file
# tar -zcvf /mnt/usb/myfile.tgz my_file
# tar -ztvf /mnt/usb/myfile.tgz
-rw-r--r-- 33/0 12 1970-03-18 21:21:39 my_file
如您所见,当我在 BusyBox 中再次查看该文件(并且确实提取它)时,它拥有 33/0 的所有权。
但是当我在 Ubuntu 16.04 中查看相同的文件时,它显示具有 root/root 所有权:
Ubuntu 16.04:
# tar -tvf myfile.tgz
-rw-r--r-- root/root 12 1970-03-18 17:21 my_file
当然,如果我以 root 身份提取文件,它归 root/root 所有,而不是我期望的 33/root 所有(手册页说 --same-owner 是作为 root 提取时的默认设置)。
我以前从未在 tar 中看到过这样的行为……为什么当我在 Ubuntu 中查看文件时所有权没有保留?
另外,有没有办法在 Ubuntu 中提取文件,同时保留 BusyBox 系统原有的 33/0 权限?