Unix如何实现文件权限?

Unix如何实现文件权限?

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

相关内容