在 chrooted sftp 環境中強制組分配
我有以下設置:
有幾個使用者 /home/user1、/home/user2 等等。另外還有一個使用者 /home/sftp-all。文件夾 /home/sftp-all/shared 安裝在每個其他使用者的 /home 目錄中,例如 /home/user1/shared。所有使用者 user1,user2,…,sftp-all 都是名為“sharegroup”的組的成員。
現在的問題是,如果其中一個使用者(user1,…)寫入該文件夾,則新文件歸使用者和他的主要組所有(例如 user1:user1,..)。相反,我希望它歸 user1:sharegroup 所有。任何想法如何解決這個問題?先感謝您!
您應該考慮在文件系統上使用 ACL 權限。您可以設置“預設”權限,並且可以擁有多個組、使用者等。
https://help.ubuntu.com/community/FilePermissionsACLs
有關更多資訊,請參閱其他文章的答案:
https://superuser.com/questions/381416/forcing-group-and-permissions-for-created-file-inside-folder
設置 sgid 位以便在目錄上啟用它
/home/sftp-all/shared
,並創建此目錄的組sharegroup
。$ chmod g+s /home/sftp-all/shared
最後確保其中任何預先存在的文件
/home/sftp-all/shared
都將其組設置為sharegroup
. 這可以這樣做:$ chgrp sharegroup /home/sftp-all/shared/*
通過在目錄上設置 xgid 位,您將強制在任何時候在其中創建新文件時傳播組所擁有的目錄,即目錄。此方法僅適用於新創建的文件,例如,如果有人要將文件從系統上的其他位置移動到此目錄中,則不會強制執行組所有權。
但是,鑑於這是一個 SFTP 伺服器應用程序,我想不出使用者能夠以任何方式將文件移動到 SFTP 之外的此目錄中。