Permissions

使用 .tgz 保存文件所有權

  • July 31, 2020

回到另一個可能非常基本的 UNIX 問題。

我了解 Tape Archive Zips ( .tgz) 的前提是它們保留 uid、gid、權限……

但是,這似乎不是攜帶式的。例如,如果使用者john在一台 UNIX 機器上創建了一個 .tgz,然後在沒有該使用者的機器上解壓縮,或者使用同名但 UID 不同的使用者時會怎樣。

這是如何運作的?

真正的舊tar格式僅儲存數字使用者和組標識符,因此它們存在您描述的問題。

但是從 1988 年的 POSIX 標准開始,tar諸如Unix 標準tar格式之類的格式也pax儲存使用者名和組名,因此它們可以按名稱保留所有權。給定一個包含由 uid 1234 擁有的文件的 tarball,使用 username johntar將查找名為 的使用者john,並在可能的情況下提取具有該所有權的文件(可能使用不是 1234 的 uid),如果沒有這樣的 uid 則回退到 uid 1234使用者。

這一切都不是完美的,這就是為什麼tar除非以 root 身份執行,否則不會恢復所有權(除了它需要是 root 才能更改所有權這一事實);預設情況下,文件以執行使用者的所有權提取。

引用自:https://unix.stackexchange.com/questions/600914