web-dev-qa-db-ja.com

Chrootされたユーザーがホームディレクトリで起動せず、bash_profileをロードしない

ユーザーがログインすると、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環境を離れることができます。 これ 前に尋ねた質問は多少関係があります。ロードされていないプロファイルファイルが原因でコマンドラインの見た目が間違っているからです。これを修正する方法はありますか?

4
Stuffy

あなたの設定は少し詳細を除いて正しいです:/etc/passwdのホームディレクトリはchrootパス部分を含んではいけません。それを次のように変更します。

test:x:1004:1008:,,,:/home/test:/bin/bash

sshdを再起動して、もう一度お試しください。

man sshd_configから:

ChrootDirectory

認証後にchroot(2)するディレクトリのパス名を指定します。パス名のすべてのコンポーネントは、他のユーザーまたはグループが書き込みできないルート所有のディレクトリである必要があります。 chrootの後、sshd(8)は作業ディレクトリをユーザーのホームディレクトリに変更します。

つまり、最初にsshdchroot(この場合は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を削除した後に機能しました。)

5
jaume