Permissions
使用 .tgz 保存文件所有權
回到另一個可能非常基本的 UNIX 問題。
我了解 Tape Archive Zips (
.tgz
) 的前提是它們保留 uid、gid、權限……但是,這似乎不是攜帶式的。例如,如果使用者
john
在一台 UNIX 機器上創建了一個 .tgz,然後在沒有該使用者的機器上解壓縮,或者使用同名但 UID 不同的使用者時會怎樣。這是如何運作的?
真正的舊
tar
格式僅儲存數字使用者和組標識符,因此它們存在您描述的問題。但是從 1988 年的 POSIX 標准開始,
tar
諸如Unix 標準tar
格式之類的格式也pax
儲存使用者名和組名,因此它們可以按名稱保留所有權。給定一個包含由 uid 1234 擁有的文件的 tarball,使用 usernamejohn
,tar
將查找名為 的使用者john
,並在可能的情況下提取具有該所有權的文件(可能使用不是 1234 的 uid),如果沒有這樣的 uid 則回退到 uid 1234使用者。這一切都不是完美的,這就是為什麼
tar
除非以 root 身份執行,否則不會恢復所有權(除了它需要是 root 才能更改所有權這一事實);預設情況下,文件以執行使用者的所有權提取。