Permissions

保存在特定文件夾中時將所有者更改為文件

  • January 11, 2020

我有一個 NAS,其中包含我家每個成員的目錄。

我的使用者名,是每個成員組的成員。所以我可以訪問所有使用者的文件夾。

我希望,當我在使用者目錄中放置文件時,該文件從父目錄中獲取所有權。或獲取特定權限。

我妻子的目錄是“zoe_folder”,擁有 zoe:zoe 和權限 rwxrwx—。

當我以 root 身份執行touch file.txt我妻子目錄(或子目錄)中的命令時,file.txt 擁有 root:root 所有權和權限 rw-r–r–。我想要所有權 zoe:zoe(或作為解決方法權限 rw-rw-rw-)。

當然,無需執行任何命令chmodchown. 它是 NAS,客戶端 PC 是 Windows。我無法每次使用控制台登錄 NAS 並更改權限。

有任何想法嗎?

我認為您正在尋找的是:

  1. 在每個使用者的目錄上使用一個setgid,這樣該目錄中的每個新文件都將與該目錄具有相同的;和
  2. 將您的系統設置umask為 0002,因為它看起來是 0022。從預設權限umask 中刪除現有權限,預設權限是 0777 用於目錄,0666 用於文件。使用新設置,文件的預設權限將更改:從 0644 到 0664,對於目錄:從 0755 到 0775。我對您提供的詳細資訊的理解是它將適用於您的系統。

要將setgid放在所有子目錄上,請使用以下find命令,請確保您的起始目錄位於使用者目錄的頂部,以便簡單地ls將它們全部列出,因為使用錯誤的起始目錄可能會導致扭轉所有已經完成的事情有點痛苦

find ./ -type d -mindepth 1 -maxdepth 1 -exec chmod --preserve-root g+s '{}' \;

給定的選項執行以下操作:

-type d返回文件類型“目錄”的所有內容;

-mindepth 1防止列出起始目錄,使其權限不會改變;

-maxdepth 1列出第一級子目錄,但不深入到自己的子目錄;

-exec對通過測試的每個項目執行以下命令,這就是 ‘{}’ 的含義;和

--preserve-root是 chmod 中的一種保護,以防止權限更改意外應用於根目錄(可能還有整個文件系統)。

如果您不確定什麼會受到影響,只需執行find不帶參數的命令-exec,如下所示:

find ./ -type d -mindepth 1 -maxdepth 1,它將為您提供它將傳遞給您與-exec參數一起使用的任何命令的每個文件的列表。

可能重複

通過一個小的搜尋,我發現這個問題 可能已經(部分)在這裡得到了回答:

如何為目錄中的所有文件夾/文件設置預設文件權限?

接受的答案是關於如何在https://www.linuxquestions.org/questions/linux-desktop-74/applying-default-permissions-for-newly-中為目錄設置預設權限的分步教程created-files-within-a-specific-folder-605129/

請確認是否是這種情況。

引用自:https://unix.stackexchange.com/questions/561555