
如何在 Linux 伺服器上建立真正的共用資料夾?我希望專案團隊的成員能夠像自己的文件一樣讀取和寫入每個文件,無論他們是否將文件複製或移動到資料夾中、在資料夾中自己建立文件或文件是由其他的。
到目前為止,我遇到了以下問題:
- umask 僅在系統範圍內工作並忽略現有文件
- ACL 忽略使用者移入資料夾的文件
- inotify 看起來像是 hack,因為它之後修復了權限,這可能會導致某些 Office 文件出現問題
- 經常
chgrp -R projectteam /folder/
會導致效能、延遲和備份問題。
force user
我目前的解決方案是在同一台伺服器上安裝並啟用SAMBA 共用force group
。然而,這對於多個專案組來說管理起來很麻煩,而且我認為我的效能受到了影響。
任何幫助或想法將不勝感激。我跑的是 Debian 10。
來自德國漢堡的親切問候
麥可
答案1
如果所有專案使用者都指派了一個公用專案群組,您可以在專案目錄(及其子目錄)上設定 setgid 位元:
find /path/to/teamfolder -type d -exec chmod g+s '{}' \;
也可以在專案目錄上設定 ACL 權限,例如:
setfacl -d -m u::rwx,g::rwx,o::r-x /path/to/teamfolder
當在目錄上設定 setgid 位元時,在該目錄中建立的所有檔案都會繼承該目錄的群組所有權。 ACL 權限將允許專案目錄中建立的檔案對該群組具有寫入權限。
新用戶可以新增為:
sudo usermod -a -G projgrp newuser
希望這可以幫助。
答案2
您需要排列多層配置,這樣可以使管理變得非常簡單。
正如 Abhishek 所建議的,為目錄設定 setgid 位元非常有用,因為它使新建立的檔案和目錄預設可以繼承該目錄的群組所有權。
然而,正如您所觀察到的,複製的文件保留其所有權。對於重新設定群組所有權,incrontab 方法很好。更現代的方法是使用 systemd .path 檔案來監控修改,並使用對應的 .service 檔案來執行 chgrp。
若要解決有關配置以支援多個專案組的問題,請考慮以下事項:
首先,請記住,Samba 僅提供身份驗證,並依賴檔案系統權限和主機使用者帳戶。
設定umask為0002,預設允許群組寫入權限。
為每個使用者建立一個主機帳戶:
sudo useradd andreas
sudo useradd beatrix
sudo useradd ciela
建立一個與 root 不同的資料「超級使用者」以用於管理目的:
sudo useradd oberst
為每個專案建立一個群組:
sudo groupadd hund
sudo groupadd katz
為每個項目建立一個資料目錄,設定權限(包括 setguid 位元)和所有權。下面設定setgid位(2),給超級使用者oberst和指定群組完全權限(7),不給其他人任何權限(0),所以非群組成員不能讀、寫或執行:
sudo mkdir /srv/hund
sudo chown oberst:hund /srv/hund
sudo chmod 2770 /srv/hund
sudo mkdir /srv/katz
sudo chown oberst:katz /srv/katz
sudo chmod 2770 /srv/katz
將使用者加入群組:
sudo usermod -a -G hund andreas
sudo usermod -a -G hund beatrix
sudo usermod -a -G katz beatrix
sudo usermod -a -G katz ciela
將用戶新增至 Samba:
sudo smbpasswd -a andreas
sudo smbpasswd -e andreas
sudo smbpasswd -a beatrix
sudo smbpasswd -e beatrix
sudo smbpasswd -a ciela
sudo smbpasswd -e ciela
編輯 smb.conf 以建立共享。 Read-only=no 允許寫入訪問,browsable=no 則阻止其他人(即非群組成員)瀏覽共享。請注意 valid users 指令中的“@”前綴,它透過引用主機群組來定義存取權限:
[hund]
path=/srv/hund
read only=no
browsable=no
force group=hund
valid users=@hund
[katz]
path=/srv/katz
read only=no
browsable=no
force group=katz
valid users=@katz
現在(可能在重新啟動後),/srv/hund 可以由andreas 和beatrix 訪問(讀/寫),但不能由ciela 訪問,/srv/katz 可以由beatrix 和ciela 訪問(讀/寫),但不能由andreas 訪問。
變更使用者的存取權限只需使用 usermod 變更群組成員資格即可。
當然,您也應該配置主機帳戶和Samba帳戶的密碼。
希望有幫助。