2016-04-26 73 views
1

我在Linux中以root身份登录。我有一个拥有777权限的文件。我使用cp将该文件复制到同一个目录中。为什么复制的文件在Linux中具有不同的权限?

cp settings.php settings_copy.php 

但是,复制的文件具有不同的文件权限。

[[email protected] 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 

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

+0

除了下面的'cp -p'建议之外,请检查umask设置。 umask应用于副本上的权限。特别是根源,这是一个重要的考虑因素。参见例如http://unix.stackexchange.com/questions/115246/file-inheriting-permission-of-directory-it-is-copied-in。这个问题在“Unix&Linux”领域可能会更好。 – KevinO

回答

3

使用-p选项,以便保留权限:

cp -p settings.php settings_copy.php 

当你复制一个文件,要创建一个新的文件。所以,它的(新文件)权限取决于当前的文件创建掩码,您可以通过umask命令更改该文件。请阅读man umask了解更多信息。

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' 
相关问题