使用為 SFTP 目錄安裝的 gcsfuse 時出現同步問題

使用為 SFTP 目錄安裝的 gcsfuse 時出現同步問題

我在使用 gcsfuse 將儲存桶安裝到 GCP 中 CentOS 7 計算引擎虛擬機器上用於 SFTP 上傳的目錄時遇到困難。我最初嘗試使用安裝的基本說明來安裝它,如下所示:

GOOGLE_APPLICATION_CREDENTIALS=/root/service_account.json gcsfuse al-dev-sftp /sftp

但我無法在安裝的目錄中建立檔案/目錄。經過研究後,我安裝了驅動器,如下所示:

GOOGLE_APPLICATION_CREDENTIALS=/root/service_account.json gcsfuse -o allow_other --gid 0 --uid 0 --file-mode 777 --dir-mode 777 al-dev-sftp /sftp

它允許建立檔案和目錄。但是,我無法根據需要 chown/chmod 任何檔案或目錄來 chroot 監獄使用者目錄(作為 SFTP 的正常用例)。

為了嘗試克服這個問題,我創建了指向已安裝的SFTP 存儲驅動器的符號鏈接,這一切都很好,直到我們注意到將文件放在SFTP 上可以正確同步,但如果我們將文件放入存儲桶中,它就不會同步回已安裝的SFTP目錄。我嘗試進行一些 rsync,但無論我嘗試哪個方向,我們都會丟失檔案。 (我後來讀到 gcsfuse 不支援連結)。

做了更多研究,我發現了一個 github 項目對於 kubernetes gcs sftp 設定這看起來很有希望。我沒有以任何方式使用容器,但我對如何完成安裝以及使用的任何 SFTP 配置感興趣。這導致我創建了一個像這樣的安裝座:

 gcsfuse --uid 1000 --gid 1001 -o nonempty wraheem /test_sftp/wraheem/upload

這會將我的上傳目錄安裝到每個使用者的單獨儲存桶中(並不理想,但如果我能讓它工作,那麼就可以了),我可以將root 所有權放在使用者資料夾上,同時向使用者授予上傳資料夾的權限,完美地監禁SFTP 中的使用者。

問題在於,當使用者透過 SFTP(在 filezilla 中)登入並嘗試導航到其上傳資料夾時,他們會收到一條錯誤訊息:

Status:         Retrieving directory listing of "/test_sftp/wraheem/upload"...

Command:    cd "/test_sftp/wraheem/upload"

Error:          Directory /test_sftp/wraheem/upload: no such file or directory

這顯然是存在的。

我的 sshd 配置條目是:

Match User wraheem
ForceCommand internal-sftp
PasswordAuthentication yes
ChrootDirectory /test_sftp/wraheem
AllowTcpForwarding no

它可以與任何其他具有 root 擁有使用者目錄和使用者擁有子目錄的監獄模式的普通目錄一起正常工作。

我查看了安裝座本身並看到以下內容:

wraheem on /test_sftp/wraheem/upload type fuse (rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions)

對我來說最突出的是 user_id 和 group_id 設定為零(root),即使我可以新增檔案並且在執行 ls -l 時設定資料夾和檔案權限:

drwxr-xr-x. 1 wraheem wraheem 0 Aug 22 20:16 upload

我想知道即使我有權限,掛載點是否由root擁有,所以這根本不重要。作為測試,我嘗試將預設遠端目錄設為 /media (由 root 擁有),並在 filezilla 中獲得與以前相同的錯誤。

有人以這種方式使用 gcsfuse 進行 SFTP 嗎?或者有人能看到我在哪裡錯過了配置問題的步驟嗎?

感謝你們能想到的任何幫助;我想知道現在這是否可以用於 SFTP...

相關內容