Answers:
tar根据UID和GID而不是与它们关联的字符串记录权限。因此,如果一台服务器上的UID是3300并且链接到“ bob”,则在新服务器上,该文件将归拥有UID 3300的用户所有。
UNIX上的虚拟所有内容(我想说的都是一切,但您永远不能百分百确定)都使用UID:GID值,因为这实际上是存储在文件系统级别的内容。名称只是在passwd文件中的简单查找,使用数字值进行基础检查。
tar 做记录拥有者的名字。
总结以前的答案并添加一些重要信息:
创建档案时,除非使用,另行说明tar,否则将始终保留文件的用户名和组ID 。但是仍然始终会有与每个文件关联的用户和组。--owner=NAME--group=NAME
除非使用了GNU tar,也许还有其他版本的tar,也会存储用户名和组名--numeric-owner。让bsdtar也默认存储用户和组名,但支持--numeric-owner选项时创建为止,未发现的bsdtar 3.0(请注意,让bsdtar支持的选项提取更长的时间)。
以普通用户身份提取文件时,所有文件将始终归该用户所有。并没有什么不同,因为解压缩文件是在文件系统上创建一个新文件,并且普通用户无法创建文件并将所有权授予他人。
当作为提取根,tar会默认恢复解压缩文件的所有权,除非 --no-same-owner被使用,这将给所有权根自己。
在GNU tar,bsdtar以及可能的其他版本中tar,如果该信息在归档文件中并且目标系统中有匹配的用户,则还原的所有权由用户(和组)名称完成。否则,它将按ID恢复。如果提供了选项,则将忽略用户名和组名。--numeric-owner
权限和时间戳也会保存到存档中,并且默认情况下会还原,除非使用选项--no-same-permissions和/或--touch。当由用户萃取,用户的umask被减去,除非从权限--same-permissions被使用。
--preserve-permissions和--same-permissions是别名,并且具有与-p
希望这有助于澄清问题!:)
tar允许在--owner或中指定任意名称,--group过去tar在当前计算机上进行了无偿查找,/etc/passwd并且如果没有匹配项,则拒绝运行。
--owner同时又添加到--numeric-owner标志中,该怎么办?tar如何处理这些相互竞争的需求?
--owner和--numeric-owner并不互斥,并且具有非常不同的用途:--owner=USERNAME在归档文件时将覆盖文件和目录所有者,而--numeric-owner不会仅存储用户名,而不会存储用户名。
在GNU tar中使用--same-owner选项。参见http://www.gnu.org/software/tar/manual/html_section/Attributes.html
如果您试图在两个系统之间传输文件,则rsync默认情况下将通过用户名而不是uid来设置权限,同时查看两端的用户名。仅当用户不存在于其中一个系统上时,它才会使用uid复制它,除非您另有说明。