foo.txt
我在一个 Linux 发行版中有一个名为 root 权限的文本文件。我将其复制到另一台计算机上的另一个 Linux 发行版中。
文件权限是否仍保留foo.txt
?
如果是,Unix/Linux linux 如何知道并复制文件的权限?
它是否会向文件添加额外的字节(表示权限)?
答案1
要添加埃里克的答案(没有代表发表评论),权限不存储在文件中,而是存储在文件中索引节点(文件系统指向文件在磁盘上的物理位置的指针)作为元数据以及所有者和时间戳。这意味着将文件复制到非 POSIX 文件系统(如 NTFS 或 FAT)将删除权限和所有者数据。
文件所有者和组只是一对数字,分别是用户 ID (UID) 和组 ID (GID)。标准根 UID 为 0,因此在(几乎)每个 UNIX 兼容系统上,文件将显示为由根拥有。另一方面,非 root 所有者将不会以有意义的方式保存。
简而言之,如果通过 extX usbstick 等压缩或复制,根所有权将被保留。非根所有权是不可靠的。
答案2
这取决于你如何复制它。如果您将其放在一个tar
球中并复制它,然后解压它,tar
将保留权限。如果您使用rsync
它,根据标志,也将保留权限。这些应用程序负责权限。如果您这样做,scp
权限将不会被保留。
执行复制的命令负责管理新创建的文件的权限。
答案3
对于所有者/组,这取决于谁进行复制以及如何进行复制。
- 普通用户:将始终是所有命令的副本的所有者
root
用户也可以使用cp
(除了使用--preserve
选项)root
“preserve”将是with的默认值tar