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。ユーザーの公開キーは に配置しました。ユーザーのグループ ( ) が に読み取り/書き込み/実行/sgid 権限を持つ/home/fflintstone/.ssh/authorized_keysフォルダーを作成しました。OpenSSH の SFTP を で構成しました。srgcompany/home/customers/srgcompany/fileshereSubsystem sftp internal-sftp -u 0007 -l INFO

したがって、現時点では、ユーザーが SFTP クライアントを使用して接続する場合、表示されるディレクトリ (および pwd コマンドによって返されるディレクトリ) に書き込むことはできません。ユーザーは、fileshere フォルダーに cd して、そこに書き込むことができます。以下の例のように、ユーザーが SFTP でログインするとすぐに、その fileshere フォルダーを初期のリモート作業ディレクトリにする方法はありますか? または、chroot されたフォルダーを書き込み可能にできますか?

私が欲しいもの:

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

どのような助けでも大歓迎です。

答え1

sftp-serverchrootまたはinternal-sftpを使用しない場合、OpenSSHパッケージは、着信SFTPセッションを処理するためにという名前のプログラムを使用します。sftp-server のドキュメント開始ディレクトリのコマンドライン オプションを一覧表示します。

-dstart_directory は
、ユーザーの代替開始ディレクトリを指定します。パス名には、実行時に展開される次のトークンを含めることができます: %% はリテラル '%' に置き換えられ、%d は認証されるユーザーのホーム ディレクトリに置き換えられ、%u はそのユーザーのユーザー名に置き換えられます。デフォルトでは、ユーザーのホーム ディレクトリが使用されます。このオプションは、sshd_config(5) ChrootDirectory オプションと組み合わせて使用​​すると便利です。

このドキュメントはサブシステムにも適用されるinternal-sftpため、このオプションもサブシステムで使用できます。システムの実際のルートではなく、chroot を基準とした開始ディレクトリを指定する必要があることに注意してください。

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

関連情報