在 SFTP 中設定初始遠端工作目錄

在 SFTP 中設定初始遠端工作目錄

我正在運行 Amazon Linux AMI(Red Hat 衍生產品),並使用 OpenSSH 建立新的 SFTP 伺服器。我希望 SFTP 用戶被限制在一個目錄中,並且能夠寫入其 SFTP 用戶端顯示的初始目錄。

我正在使用 ChrootDirectory 將使用者 chroot 到/home/customers/srgcompany.這意味著目錄必須由 root 擁有且只能由 root 寫入。使用者的 passwd 條目看起來像fflintstone:x:508:515:Fred Flintstone:/home/fflintstone:/sbin/nologin。我已將用戶的公鑰放入/home/fflintstone/.ssh/authorized_keys.我建立了一個資料夾,使用者群組 ( srgcompany) 在 處具有讀取/寫入/執行/sgid 權限/home/customers/srgcompany/fileshere。我已經使用 .config 設定了 OpenSSH 的 SFTP Subsystem sftp internal-sftp -u 0007 -l INFO

因此,現在,當使用者使用 SFTP 用戶端連線時,顯示的目錄(由 pwd 命令傳回)無法寫入。使用者可以 cd 到 fileshere 資料夾,並在那裡寫入。有什麼方法可以讓 fileshere 資料夾在使用者 SFTP 進入後立即成為初始遠端工作目錄,如下例所示?或者,我可以使 chrooted 資料夾可寫入嗎?

我想要的是:

$ sftp sftpserver.sssprockets.com
Connected to sftpserver.sssprockets.com.
sftp> pwd
Remote working directory: /fileshere

任何幫助深表感謝。

答案1

當不使用 chroot 或內部 sftp 時,OpenSSH 軟體包會使用名為 的程式sftp-server來處理傳入的 SFTP 會話。這sftp 伺服器的文檔列出起始目錄的命令列選項:

-dstart_directory
為使用者指定備用起始目錄。路徑名可能包含以下在運行時擴展的標記:%% 替換為文字“%”,%d 替換為正在驗證的用戶的主目錄,%u 替換為該用戶的用戶名。預設是使用使用者的主目錄。該選項與 sshd_config(5) ChrootDirectory 選項結合使用非常有用。

該文件也適用於internal-sftp子系統,因此您也可以使用此選項。請注意,您應該指定相對於 chroot 的起始目錄,而不是系統的實際根目錄:

Subsystem sftp internal-sftp -u 0007 -l INFO -d /fileshere

相關內容