2016-04-26 75 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' 
相關問題