為什麼我的新 SFTP 用戶不能在不同的目錄下工作?

為什麼我的新 SFTP 用戶不能在不同的目錄下工作?

我正在嘗試為我的伺服器建立一個新的 SFTP 帳戶。當我按照這些說明操作時確切地,然後一切正常:https://www.thegeekstuff.com/2012/03/chroot-sftp-setup/

我可以guestuser透過 與使用者連接,瀏覽我的主目錄,然後從進入sftp上一層。incoming/sftp/guestuser

我甚至可以將ChrootDirectoryin 的值具體更改/etc/ssh/sshd_config為 be /sftp/guestuser,而不是實現該%u參數。因此,硬編碼的目錄名稱可以正常工作。

ChrootDirectory但從那時起,如果我所做的只是將我的群組更改sftpusers為我的實際網站目錄/var/www/www.example.com,那麼我將無法再sftp透過該用戶的命令進行連接。外殼輸出:

與 www.example.com 的連線被遠端主機關閉。無法讀取資料包:連線已被對等方重置

我確實做到了:

  1. 確保我的目錄incoming中有該資料夾/var/www/www.example.com
  2. /var/www/www.example.com將和的所有權設定/var/www/www.example.com/incomingguestuser:sftpusers
  3. /嘗試透過執行以下操作將使用者的主目錄設定為usermod guestuser -d /

/sftp/guestuser目錄(與其一起工作的目錄)屬於 的所有權root:root,因此 的權限/var/www開啟這一事實root:root應該不重要(?)

為什麼我無法更改新 SFTP 使用者的主目錄?

更新

我可以將目錄更改為:

  • /sftp
  • /
  • /var
  • /var/www

這些都有效。但是一旦再進入/var/www, 就像/var/www/test, 它就不起作用了。我嘗試從原始目錄名稱中刪除點www.example.com,但沒有什麼區別。

這也不是關於子目錄層級數量的限制,因為/sftp/guestuser/incoming也有效。使用新目錄測試它/web/www.example.com沒有。

答案1

好的,我已經找出原因了。我為ChrootDirectory使用者定義的目錄必須由 擁有root

如果我希望我的用戶能夠上傳內容(顯然他無法在 root 擁有的用戶中執行此操作),那麼我需要在其中建立子目錄,並透過參數將該目錄設定為他的主-d目錄建立或編輯用戶時。

如果在任何時候所有權發生更改,從而ChrootDirectory由嘗試 ftp 進入該檔案的使用者擁有,則該broken pipe訊息將再次出現。將所有權更改回root,用戶可以再次連接。

相關內容