Linux 上的共用資料夾

Linux 上的共用資料夾

如何在 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帳戶的密碼。

希望有幫助。

相關內容