为什么复制的文件在Linux中具有不同的权限?

为什么复制的文件在Linux中具有不同的权限?,linux,cp,Linux,Cp,我以root用户身份登录Linux。我有一个777权限的文件。我用cp将文件复制到同一目录中 cp settings.php settings_copy.php 但是,复制的文件具有不同的文件权限 [root@localhost default]# ls -l setting* -rwxr-xr-x. 1 root root 29105 Apr 26 11:48 settings_copy.php -rwxrwxrwx. 1 root root 29105 Apr 26 09:48 setti

我以root用户身份登录Linux。我有一个777权限的文件。我用
cp
将文件复制到同一目录中

cp settings.php settings_copy.php
但是,复制的文件具有不同的文件权限

[root@localhost default]# ls -l setting*
-rwxr-xr-x. 1 root root 29105 Apr 26 11:48 settings_copy.php
-rwxrwxrwx. 1 root root 29105 Apr 26 09:48 settings.php

这正常吗?如何确保复制的文件获得相同的权限?我相信这是任何操作系统中copy命令的默认行为

使用
-p
选项保留权限:

cp -p settings.php settings_copy.php

复制文件时,您正在创建一个新文件。因此,其(新文件)权限取决于当前文件创建掩码,您可以通过
umask
命令更改该掩码。阅读
man umask
了解更多信息。

您看过
man cp

这是相关章节:

-p     same as --preserve=mode,ownership,timestamps

--preserve[=ATTR_LIST]
  preserve the specified attributes (default: mode,ownership,timestamps), if possible additional attributes: context, links, xattr, all
因此,要保持相同的所有权和模式,请运行以下命令:

cp --preserve=mode,ownership
如果您知道这始终是您想要的,并且不想记住它,则可以将其作为别名添加到.bashrc

alias cp='cp --preserve=mode,ownership'

除了下面的
cp-p
建议外,还应检查umask设置。umask针对副本上的权限应用。尤其是根,这是一个重要的考虑因素。参见,例如。在“Unix和Linux”领域,这个问题可能会更好。