使用 cp 保留 Linux 权限和所有者

Jim*_*Jim 5 linux unix bash permissions cp

我不明白以下行为:
我有一个文件名为someFile/opt/com/internal/someFile
如果我ls -all /opt/com/internal/someFile的权限700 user:userGroup

我是 root 并且我愿意 cp /root/folder/someFile /opt/com/internal/someFile

  1. 我没有得到覆盖的提示。为什么不?

  2. 权限不变。但是,如果我这样做cp /root/folder/someFile /opt/com/internal/someFile并且该文件someFile不存在,则它由root和 not拥有user。为什么?

slh*_*hck 10

我没有得到覆盖的提示。为什么不?

因为你应该知道你在做什么。特别是作为根用户,您几乎可以覆盖任何内容,因此请注意这一点。

使用-i选项cp在覆盖现有文件之前获得提示。如果您总是想被提醒这一点,请考虑为to创建别名cpcp -i

权限不变。但是,如果 [...] 文件someFile不存在,则它由root而非user. 为什么?

因为您要复制到的文件已经存在。它没有被删除和重写。它仍然归user.

但是,检查cp-p选项。它将保留源文件的属性,即模式、所有权和时间戳。否则,目标文件的模式和所有权属性将保留(指示修改的时间戳除外)。

如果没有目标文件,显然需要复制源文件的属性,因为它们不能从目标文件继承。您基本上只需创建一个新文件,在这种情况下,它归root.

  • 只是对使用别名添加`-i`到`cp`/`rm`的评论:如果你习惯了这一点,突然发现自己在一个没有设置这些非标准别名的系统上,这可能是一个问题。最好不要因为期待而养成习惯。“默认几乎总是更好”,正如我刚才所说的 :-) 。 (5认同)