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

时间:2016-04-26 18:52:09

标签: linux cp

我在Linux中以root用户身份登录。我有一个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

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

2 个答案:

答案 0 :(得分:8)

使用-p选项保留权限:

cp -p settings.php settings_copy.php

复制文件时,您正在创建新文件。因此,它的(新文件)权限取决于您通过umask命令更改的当前文件创建掩码。请阅读man umask以获取更多信息。

答案 1 :(得分:1)

你看过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'