
私は 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/fileshere
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
どのような助けでも大歓迎です。
答え1
sftp-server
chrootまたは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