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
どんな助けでも大歓迎です。
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