Linux
文件繼承了它被複製到的目錄的權限?
我在我的主目錄中創建了只有使用者讀取權限(
r-- --- ---
)的文件。我想將此文件複製到另一個/etc/test/
具有 744 (rwx r-- r--
) 文件夾權限的目錄。我需要允許我正在複製的文件繼承它複製到的文件夾的權限,因為到目前為止,當我複制它時,文件權限仍然相同(r-- --- ---
)。我試過 setfacl 命令,但是沒用?請幫忙。PS。我不能僅僅
chmod -r /etc/test/
因為隨著時間的推移有很多文件會被複製到這個文件夾中,而且我不想每次復製文件時都執行 chmod 命令。
權限通常不會由文件複製到的目錄傳播,而是由使用者的
umask
. 但是,當您將文件從一個位置複製到另一個位置時,這是一種特殊情況,其中使用者umask
基本上被忽略並且文件的現有權限被保留。理解這個概念是獲得你想要的東西的關鍵。因此,要復製文件但“刪除”其目前權限,您可以使用開關告訴
cp
“不保留” 。--no-preserve=all
例子
假設我有像你這樣的以下文件。
$ mkdir -m 744 somedir $ touch afile $ chmod 400 afile $ ll total 0 -r--------. 1 saml saml 0 Feb 14 15:20 afile
正如您已經確認的那樣,如果我們只是盲目地複制它,
cp
我們會得到:$ cp afile somedir/ $ ls -l somedir/ total 0 -r--------. 1 saml saml 0 Feb 14 15:20 afile
現在讓我們重複這個,但這次告訴
cp
“刪除權限”:$ rm -f somedir/afile $ cp --no-preserve=all afile somedir/ $ ls -l somedir/ total 0 -rw-rw-r--. 1 saml saml 0 Feb 14 15:21 afile
所以現在複製的文件的權限設置為 664,它是從哪裡得到的呢?
$ umask 0002
如果我將我的更改
umask
為其他內容,我們可以第三次重複此測試並查看對umask
未保存的影響cp
:$ umask 037 $ rm somedir/afile $ cp --no-preserve=all afile somedir/ $ ls -l somedir/ total 0 -rw-r-----. 1 saml saml 0 Feb 14 15:29 afile
注意權限不再是 664,而是 640?這是由
umask
. 它告訴任何創建文件的命令禁用權限中的低 5 位……這些傢伙:(----wxrwx
)。