chrootされたユーザーはホームディレクトリから起動せず、bash_profilesもロードしません。

chrootされたユーザーはホームディレクトリから起動せず、bash_profilesもロードしません。

ユーザーがログインすると、chroot の / (実機では /var/jail)から起動します。ホームディレクトリから起動するようにします。また、プロファイルファイル(.bash.rc など)をロードしていないようです。これ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 環境から抜け出すことができます。これ以前私が尋ねた質問は多少関連しています。コマンドラインの見た目がおかしいのは、プロファイル ファイルがロードされていないことが原因だと思います。この問題を修正するアイデアはありますか?

答え1

小さな詳細を除いて設定は正しいです: のホーム ディレクトリには/etc/passwdchroot パス部分を含めないでください。次のように変更します。

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

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

からman sshd_config

Chrootディレクトリ

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

つまり、最初にsshdを実行しchroot(この場合はchroot /var/jail)、次にsshdディレクトリをユーザーのホームディレクトリに変更します (この場合はcd /home/testchroot 環境ではcd /var/jail/home/test機能しません)。

Debian/Ubuntu を使用している場合 (言及したチュートリアルは Debian 用であるため)、/var/jail/etc/debian_chroot「chroot」という内容のファイルを作成すると、ユーザー プロンプトに次のように括弧内に表示されます(chroot)test@servername:~$

(あなたの設定を Ubuntu 12.04 に複製し、/var/jailユーザー テストのエントリから削除した後、動作しました/etc/passwd。)

関連情報