Ubuntu Server 22.04 SSH ChrootDirectory 在透過 SFTP 存取時未如預期執行

Ubuntu Server 22.04 SSH ChrootDirectory 在透過 SFTP 存取時未如預期執行

一般來說,在成功登入sftp並執行put命令後,我希望我的檔案傳輸到登入使用者的$HOME目錄。這是開箱即用的,但我想將用戶限制sftp在他們的$HOME目錄中(例如,他們不能cd升級任何級別)。

這是我使用的地方ChrootDirectory- 根據文件(https://linux.die.net/man/5/sshd_config

ChrootDirectory:指定驗證後 chroot(2) 的路徑。此路徑及其所有元件必須是 root 擁有的目錄,任何其他使用者或群組都不可寫入

我相信我已經正確設定了資料夾/權限。我認為文檔的下一句話沒有如預期般運作或表現。

chroot 後,sshd(8) 將工作目錄變更為使用者的主目錄。

修改sshd_config為使用ChrootDirectory並成功存取伺服器後,sftp使用者工作目錄並沒有設定為使用者的$HOME目錄,實際上設定為上一層。 (例如,/home而不是/home/userTest)對於使用者來說,明顯的解決方法是cd 到下一級的正確目錄,但如果您使用一些簡單地將資料FTP 到當前工作目錄的自動化系統,這可能會產生很大的問題。

我將首先展示一般情況,然後對其進行修改以展示預設工作目錄行為在ChrootDirectory引入後如何變化sshd_config

這按預期工作:

  1. 建立使用者(用於-m建立該使用者的主目錄):sudo useradd -m userTest
  2. 給用戶一個密碼:sudo passwd userTest
  3. 注意userTest$HOME目錄: cat /etc/passwd->userTest:x:1002:1004::/home/userTest:/bin/sh
  4. sftp 到您剛剛建立的使用者的伺服器:sftp userTest@<your-server>
  5. 登入成功後記下工作目錄:pwd->Remote working directory: /home/userTest

上面的範例完全按照預期工作,唯一的問題是userTest沒有鎖定到工作目錄並且可以cd ..重置檔案系統。

幾個指南都對這個問題有相同的基本解決方案(https://linuxconfig.org/how-to-setup-sftp-server-on-ubuntu-20-04-focal-fossa-linux

新增到前面的步驟

  1. 新增一個 sftp 群組(這將用作我們的Match區塊的密鑰sshd_config):sudo addgroup sftp
  2. 將使用者加入userTest群組:sudo usermod -a -G sftp userTest
  3. 編輯sshd_configsudo nano /etc/ssh/sshd_config
  4. 將以下行新增至文件末尾
Match group sftp
ChrootDirectory /home
ForceCommand internal-sftp

(這基本上意味著屬於該sftp組的任何用戶都將受到ChrootDirectoryForceCommand規則的約束)

儲存檔案並重新啟動 ssh: sudo systemctl restart ssh

驗證指定的目錄是否ChrootDirectory符合上述文件中的要求: ls -ltr-> drwxr-xr-x 4 root root 4096 Jun 10 09:02 home(我相信這通過了)

再次使用新設定 sftp 來比較開箱即用設定的結果userTestsftp userTest@<your-server>

注意目前工作目錄:pwd->Remote working directory: /

這並不是一個絕對的錯誤,我們期望工作目錄會改變......但是讓我們快速檢查當前工作目錄的內容:

ls -ltr-> drwxr-x--- 3 1002 1004 4096 Jun 10 09:10 userTest(!!!)

根據文件:

chroot 後,sshd(8) 將工作目錄變更為使用者的主目錄。

ls -ltr向我們表明工作目錄不在userTest主目錄中,它實際上比主目錄高一級。

有沒有一種配置方法ChrootDirectory或其他方法可以使其按預期工作?

注意:ForceCommand從 sshd_config 中刪除實際上會導致 11 年前關閉作為勘誤表的另一個問題? https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=681202

相關內容