如何設置文件夾中內容的未來權限
假設我是使用者 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 所有,這樣就不會阻止來賓使用者自己刪除/編輯文件?
我現在似乎已經解決了這個問題(觸摸木頭)。
我嘗試了各種不同的修復程序,因此很難確定是什麼使一切正常工作,但這些是我認為有幫助的步驟:
- 我有一個Docker 應用程序正在執行,它將內容下載到我的主目錄(這在當時似乎無關緊要)。
- 聽從@sourcejedi 的建議後,我
umask
的更改為0002
.- 按照@Isaac 給出的建議,我能夠從我的主目錄創建/複製/移動文件以及目錄,
/samba/public/
並且 Samba 來賓使用者能夠自由地重命名/編輯/刪除。
- 但是,當我嘗試複製/移動使用此 Docker 應用程序下載的主目錄中的任何內容時,Samba 來賓使用者無法自由重命名/編輯/刪除(因為 Docker 應用程序正在創建 chmod val 為 755 的目錄) .
- 然後我將 Docker 應用程序的 0002 更改
umask
為 Docker 應用程序生成的後續下載和目錄的 chmod val 775。當這些目錄複製到 時/samba/public/
,Samba 來賓使用者現在可以重命名/編輯/刪除。腳註:
- 將 umask 更改為您選擇的值就像執行
umask XXXX
XXXX 是您想要的值一樣簡單。您只需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.conf
setcreate mask = 0775 directory mask = 0775