Permissions

如何設置文件夾中內容的未來權限

  • July 7, 2018

假設我是使用者 Alice,我有一個可公開訪問的文件夾/samba/public

公共 Samba 文件夾 ( /samba/public/) 的權限是 nobody:nogroup 和 0777。

當 Alice 嘗試將某些內容從她的主文件夾複製到共享公共驅動器時

(例如cp ~/Downloads/* /samba/public),

Alice 希望所有有權訪問公共 Samba 共享的客人都可以編輯/刪除新複製的文件。

我希望複製的文件歸 nobody:nogroup 所有並設置為 0777。

相反,新複製的文件歸 alice:alice 所有,公共驅動器上的來賓使用者無法編輯或刪除這些文件。

如何確保將來將內容從 Alice 的主文件夾複製/移動到共享/公共 Samba 文件夾的操作將歸nobody:nogroup 所有,這樣就不會阻止來賓使用者自己刪除/編輯文件?

我現在似乎已經解決了這個問題(觸摸木頭)。

我嘗試了各種不同的修復程序,因此很難確定是什麼使一切正常工作,但這些是我認為有幫助的步驟:


  1. 我有一個Docker 應用程序正在執行,它將內容下載到我的主目錄(這在當時似乎無關緊要)。

  1. 聽從@sourcejedi 的建議後,我umask的更改為0002.
  2. 按照@Isaac 給出的建議,我能夠從我的主目錄創建/複製/移動文件以及目錄,/samba/public/並且 Samba 來賓使用者能夠自由地重命名/編輯/刪除。

  1. 但是,當我嘗試複製/移動使用此 Docker 應用程序下載的主目錄中的任何內容時,Samba 來賓使用者無法自由重命名/編輯/刪除(因為 Docker 應用程序正在創建 chmod val 為 755 的目錄) .
  2. 然後我將 Docker 應用程序的 0002 更改umask為 Docker 應用程序生成的後續下載和目錄的 chmod val 775。當這些目錄複製到 時/samba/public/,Samba 來賓使用者現在可以重命名/編輯/刪除。

腳註:

  • 將 umask 更改為您選擇的值就像執行umask XXXXXXXX 是您想要的值一樣簡單。您只需umask在終端中輸入即可檢查您的 umask 值。
  • 更改我正在使用的 Docker 應用程序的 umask 是通過添加一個名為的新 ENV 參數umask並將其設置為0002. 當啟動一個 Docker 容器時,你可以通過 CLI 傳入這個參數,或者如果你使用 Portianer 來管理你正在執行的容器,你可以通過 web-UI 傳入這個 ENV 參數。
  • **主要警告:**作為使其工作的一部分,我首先嘗試遵循設置公共文件夾執行緒的權限中給出的建議,並嘗試使用@sourcejedi 在遵循@Isaac 的建議之前推薦的使用者私有組(UPG)模式。

如果將來有人遇到類似的問題,這可能是相關的嗎?

歡迎來到 U&L!你可能不需要文件成為nobody:nogroup 0777。我很抱歉,但你想要的模式被Gnome/systemd(和udisk)破壞了。至少,如果 Alice在執行 Samba 伺服器的同一台電腦上使用這些。

這在共享、讀寫、照片目錄樹、普通使用者在 ext4 磁碟上的多個使用者之間共享文件夾/文件的問題中討論(不是很清楚)

如果 Alice沒有在執行 Samba 伺服器的同一台電腦上使用 Gnome(包括 Gnome 文件管理器),也沒有使用 udisks(允許使用者掛載可移動文件系統),那麼您實際上可能能夠使用原始的使用者私有組模式.

IIRC,Redhat 系統已經為 UPG 設置了正確的 umask。對於基於 Debian 的系統,您可能需要啟用和配置 pam_umask。請參閱https://stackoverflow.com/questions/10220531/how-to-set-system-wide-umask

編輯:如果您必須更改umask,您還必須更改任何現有文件的訪問模式,您將來可能想要共享這些文件。例如chmod -R g+w $HOME/*chmod -R g+w /home/*/*。不要使用. _ chmod -R g+w $HOME它將改變 的模式$HOME/.ssh,並可能阻止您使用ssh.


否則,也許有人可以根據此資訊提出解決方法。

我可以建議一種替代方案,基於執行緒為公共文件夾設置權限

聽起來您希望來賓使用者能夠刪除和編輯這些文件……這表明它們可能不是很大的文件。

從您提供的資訊來看,Alice 似乎可以自己充當客人,使用 Samba 共享來上傳文件。…您只需要避免告訴 Alice Samba 目錄在伺服器上的位置。如果她足夠聰明,可以找到它,她也足夠聰明,可以被告知電腦是一個錯誤,而她完全合乎邏輯的想法將因為原因而行不通。

(如果您絕對需要,您可以通過在 LXC 等容器中執行 Samba 伺服器來“隱藏”它。)

如果 Alice 在 Samba 伺服器上有一個不是來賓的帳戶,則可能還需要chmod g+s在目錄上使用,並且在smb.confset

create mask = 0775
directory mask = 0775

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