web-dev-qa-db-ja.com

SFTPで初期リモート作業ディレクトリを設定する

Amazon Linux AMI(Red Hat派生)を実行していて、OpenSSHを使用して新しいSFTPサーバーを作成しています。 SFTPユーザーをディレクトリに制限し、SFTPクライアントが表示する初期ディレクトリに書き込むことができるようにしたいと考えています。

ChrootDirectoryを使用してユーザーを/home/customers/srgcompanyにchrootしています。つまり、このディレクトリはルートによって所有され、ルートによってのみ書き込み可能である必要があります。ユーザーのpasswdエントリはfflintstone:x:508:515:Fred Flintstone:/home/fflintstone:/sbin/nologinのようになります。ユーザーの公開鍵を/home/fflintstone/.ssh/authorized_keysに配置しました。ユーザーのグループ(srgcompany)が/home/customers/srgcompany/fileshereで読み取り/書き込み/実行/ sgid権限を持つフォルダを作成しました。 OpenSSHのSFTPにSubsystem 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

どんな助けでも大歓迎です。

4
pgn674

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

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

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

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