SCP / SFTPユーザーを特定のディレクトリに限定する簡単な方法はありますか?私が遭遇したすべての方法では、バイナリをコピーしてchroot刑務所を設定する必要がありますが、これが必要だとは思いません。
答え1
SSH はデフォルトで SFTP ユーザーのルート指定をサポートします。あなたが提供する必要があるすべて
Chroot ディレクトリ
sshd 構成ファイルから sshd を再始動します。
SFTPのみを実行している場合は、他の操作を実行する必要はありません。残念ながら、これはscpでは機能しません。対話型シェルの場合は、バイナリノードと/ devノードをchrootにコピーする必要があります。
シングルユーザー testuser の構成例:
Match User testuser
ChrootDirectory /home/testuser
ForceCommand internal-sftp
sshd_configのマニュアルページで注意してください:
パス名のすべてのコンポーネントは、ルートが所有するディレクトリではなく、ルートが所有するディレクトリである必要があります。 他のユーザーまたはグループが作成できます。 chroot の後、sshd(8) が変更されます。 作業ディレクトリをユーザーのホームディレクトリにコピーします。
詳細については、man sshd_configでChrootDirectoryを検索してください。
答え2
chrootは非常に簡単な方法です。オペレーティングシステムにはすでにこのセキュリティ機能があるため、デーモンの作成者はそれを再実装しようとしない傾向があります。
リモート接続chroot刑務所の設定に関するガイドが付属しています。位置していますCHROOT
ソースディストリビューションのファイル。つまり、次のものが必要です。
- ルートからコピーされたいくつかのバイナリ:
/usr/bin/scp
、、、/usr/libexec/openssh/sftp-server
/usr/bin/rssh_chroot_helper
{/usr,}/lib/lib*.so.[0-9]
それらが使用するライブラリ()もコピーされます。- A
/etc/passwd
(コピーではない可能性が高いがマスターから派生) - 一部のデバイス:
/dev/null
、/dev/tty
および/dev/log
ロギング用のソケット(syslogデーモンにこのソケットを受け取るように指示する必要があります)
rssh ドキュメントにない追加のヒント: chroot 刑務所にある特定のファイルにアクセスする必要がある場合は、次のものを使用できます。ファイルシステムバインディングあるいは、Linuxはmount --bind
刑務所の外に追加のディレクトリ階層を作成します。bindfs
再マウントが許可されるディレクトリには、読み取り専用など、より制限的な権限があります。 (mount --bind
カーネルパッチを適用しない限り; Debianにはeast lennyからこれが含まれていましたが、2011年現在、他のほとんどのディストリビューションには含まれていません。)