我注意到,如果我rsync -o
提交文件,我将无法保留所有权。然而,当我移动它们时,我就是这样。这一切都没有管理员权限。这样做的理由是什么?多个线程例如(1)似乎呼应了对管理员权限的需要
答案1
当您在同一文件系统中移动文件时,这会将文件从其原始位置分离并将其附加到新位置。文件数据不变,文件元数据 -索引节点——也没有变化。因此,该文件保留其所有权、权限、时间和任何其他属性:仅保留其名称和包含目录更改(以及 inode 更改时间 (ctime))。
当您复制文件(使用rsync
或任何其他实用程序)时,这会创建一个属于您的具有相同内容的新文件,其修改时间设置为复制完成的日期。根据复制实用程序,它可能还会从原始文件中复制一些文件的元数据,例如拥有rsync -o
.
移动索引节点仅需要对源目录(以分离它)和目标目录(以重新附加它)的写权限。它不需要您拥有该文件,甚至不需要您可以读取或写入该文件。另一方面,您不能创建属于其他用户的文件,或者将文件赠送给其他用户(以 root 身份运行的程序除外)。因此,以非 root 身份复制文件无法保留所有权(除非进行复制的用户拥有原始文件)。