如何讓從存檔中提取的檔案繼承父資料夾的權限

如何讓從存檔中提取的檔案繼承父資料夾的權限

我正在使用 Centos 8 Linux,多個使用者屬於同一組,存取同一 FS (xfs) 中的多個 ff 資料夾/子資料夾和檔案。我希望所有檔案和資料夾都具有將umask 設定為0002 的群組的寫入權限,允許使用者建立的新檔案具有正確的權限,但我有tar 和其他壓縮檔案被使用者提取,提取的檔案保持它們在原始時擁有的權限並且不會更改,導致某些文件僅具有所有者權限,而不是組權限我正在嘗試找到一種自動設置權限的方法,而不需要用戶運行chmod 以允許為組寫入我嘗試分配g+ s 在主資料夾上,但我只能讓新資料夾繼承群組權限而不是單一檔案。我嘗試啟用 ACL,但同樣沒有讓檔案繼承父資料夾權限。這是我的主資料夾的樣子

drwxrwsr-x+ 4 owner group 4.0K Mar 6 10:26 test

以及裡面解壓縮出一個tgz檔案後的內容

drwxrwsr-x+ 8 owner group 202 Mar 6 09:56 folder1 
drwxrwsr-x+ 8 owner group 202 Mar 6 10:12 folder2

但是當我到達第一個包含文件的資料夾時,文件權限僅適用於所有者

ll test/folder1
-rwx------. 1 owner group 195K Jun 6 2018 file1
-rwx------. 1 owner group 225K Aug 4 2018 file2
-rwx------. 1 owner group 211K Aug 20 2018 file3
-rwx------. 1 owner group 100K Sep 9 2018 file4
-rwx------. 1 owner group 200K Oct 24 2018 file5
-rwx------. 1 owner group 199K Nov 9 2018 file6

即使執行後

setfacl -R -m d:o:rwx test

文件沒有改變它們的權限

有沒有辦法強制從壓縮存檔中建立或提取的所有檔案繼承主資料夾的權限?

答案1

我仍在尋找更好的解決方案,但現在我創建了一個腳本,將 tar 輸出傳輸到 chmod 命令

#!/bin/bash -
set -o pipefail
tar xvf "$@" | xargs -rd '\n' chmod 770 --

我不太喜歡它,因為指示 100 個或更多用戶使用不同的命令會很棘手,但如果找不到更好的解決方案,我會保留它。只是為了來自手冊頁 tar 的資訊似乎有一個選項應該忽略文件權限

--no-same-permissions

但似乎只有當 umask 權限比提取檔案上的權限更嚴格時才有效,想知道這是否是錯誤

答案2

你可以使用star實施tar及其-chmod在提取時設定檔案權限的選項:

star -x -o -f file.tar -find -chmod ug+rwX

相關內容