回答:
SSHは、SFTPユーザーのネイティブのchrootをサポートします。あなただけを提供する必要があります
ChrootDirectory
sshd構成ファイルで、sshdを再起動します。
sftpを実行しているだけであれば、それ以上何もする必要はありません。残念ながら、これはscpでは機能しません。対話型シェルの場合、バイナリと/ devノードをchrootにコピーする必要があります。
単一ユーザーtestuserの構成例:
Match User testuser
ChrootDirectory /home/testuser
ForceCommand internal-sftp
sshd_configのmanページから、次の点に注意してください。
パス名のすべてのコンポーネントは、次のものではないルート所有ディレクトリである必要があります 他のユーザーまたはグループが書き込み可能。chrootの後、sshd(8)は 作業ディレクトリからユーザーのホームディレクトリ。
詳細については、man sshd_configでChrootDirectoryを検索してください。
Subsystem sftp /usr/lib/openssh/sftp-server
行を次のように変更する必要もありましたSubsystem sftp internal-sftp -f AUTH -l VERBOSE
Match
セクションまで。
chrootはかなり単純な方法です。オペレーティングシステムには既にこのセキュリティ機能があるため、デーモン作成者はそれを再実装しようとしない傾向があります。
Rsshには、chroot刑務所のセットアップに関するガイドが付属しています。CHROOT
ソース配布物のファイルにあります。要するに、次のものが必要です。
/usr/bin/scp
/usr/libexec/openssh/sftp-server
/usr/bin/rssh_chroot_helper
{/usr,}/lib/lib*.so.[0-9]
同様にコピーされた、ライブラリが使用するライブラリ()/etc/passwd
(おそらくコピーではなく、マスターから派生)/dev/null
、/dev/tty
また、および/dev/log
ロギング用のソケット(およびあなたはそのソケットでリッスンするようにあなたのsyslogデーモンに伝える必要があります)rsshのドキュメントにはない追加のヒント:chroot jailでアクセスできるファイルが必要な場合は、bindfsまたはLinuxを使用mount --bind
して、jailの外部から追加のディレクトリ階層を作成できます。bindfs
再マウントされたディレクトリに、たとえば読み取り専用など、より制限された権限を許可します。(mount --bind
カーネルパッチを適用しない限り、Debianはこのパッチを東レニーから含めていますが、他のほとんどのディストリビューションには2011年の時点ではありません。)