ユーザーがログインすると、chrootの/から開始します(実際のマシンでは/ var/jailです)。私は彼に彼のホームディレクトリから始めて欲しいです。また、プロファイルファイル(.bash.rcなど)をロードしていないようです。私は this チュートリアルに従って、chroot環境を作成しました。これは私の/ etc/passwdがどのように見えるかです:
test:x:1004:1008:,,,:/var/jail/home/test:/bin/bash
これは私の/ var/jail/etc/passwdファイルは次のようになります。
test:x:1004:1008:,,,:/home/test:/bin/bash
また、私が削除した場合、
Match User test
ChrootDirectory /var/jail
AllowTCPForwarding no
X11Forwarding no
/ etc/ssh/sshd_configから、ユーザーは自分の正しいホームフォルダーから開始し、bash設定をロードします。しかし、私がその部分を削除すれば、chroot環境を離れることができます。 これ 前に尋ねた質問は多少関係があります。ロードされていないプロファイルファイルが原因でコマンドラインの見た目が間違っているからです。これを修正する方法はありますか?
あなたの設定は少し詳細を除いて正しいです:/etc/passwd
のホームディレクトリはchrootパス部分を含んではいけません。それを次のように変更します。
test:x:1004:1008:,,,:/home/test:/bin/bash
sshd
を再起動して、もう一度お試しください。
man sshd_config
から:
ChrootDirectory
認証後にchroot(2)するディレクトリのパス名を指定します。パス名のすべてのコンポーネントは、他のユーザーまたはグループが書き込みできないルート所有のディレクトリである必要があります。 chrootの後、sshd(8)は作業ディレクトリをユーザーのホームディレクトリに変更します。
つまり、最初にsshd
がchroot
(この場合はchroot /var/jail
)を実行し、次にsshd
がディレクトリをユーザーのホームディレクトリに変更します(この場合はcd /home/test
-chroot環境でcd /var/jail/home/test
)動作しません)。
Debian/Ubuntuを使用している場合(あなたが言及しているチュートリアルはDebianのため)、内容が「chroot」の/var/jail/etc/debian_chroot
という名前のファイルを作成することができます。これは、次のような括弧内のユーザープロンプトに表示されます:(chroot)test@servername:~$
。
(Ubuntu 12.04で設定を複製しましたが、/var/jail
のユーザーテストのエントリから/etc/passwd
を削除した後に機能しました。)