場合によっては、システムで実行されている他のプロセスからプロセスを分離する必要があります。 Linuxでchrootコマンドを使用してこれを行うことができます。
このチュートリアルでは、chrootコマンドとは何か、およびコマンドを使用してchroot jailを作成し、隔離された環境でユーザーまたはグループをトラップする方法を示します。
Linuxでのchrootコマンドについて
Linuxシステムではchrootコマンドが不可欠です。プロセスのルートディレクトリとその子プロセスを変更するのに役立ちます。ユーザーまたはグループの偽のルートディレクトリを作成すると、真のルートディレクトリにアクセスできなくなります。
したがって、ユーザーまたはグループはシステムの他の部分から分離されます。これには、次のような多くの用途があります。
- ソフトウェア開発とテストのためのテスト環境を作成します。
- システムへのブートローダーファイルの再インストールを開始します
- 老朽化する可能性のあるソフトウェアを実行する
- リングフェンシングメカニズムを使用してセキュリティを強化する
chrootコマンドは、基本的に仮想環境を作成します。その機能は仮想マシンに似ていますが、chrootjail専用のリソースを割り当てる必要はありません。
仮想環境は、すべてのカーネルをホストシステムと共有します。
chrootコマンドの構文
Linuxのchrootコマンドの構文は次のとおりです。
chroot [-OPTION] [PATH FOR NEW ROOT] [PATH FOR SERVER]
chrootコマンドを実行するために必要な唯一のパラメータは、新しいルートディレクトリのパスです。ただし、chrootコマンドで使用可能なオプションを使用して、目的の結果を得ることができます。
Linuxでchrootコマンドを使用するときに自由に使えるオプションは次のとおりです。
- –userspec =USER [:GROUP] –chrootコマンドを使用するユーザーまたはグループを定義するために使用されます。使用するグループまたはユーザーを名前またはIDで指定できます
- –groups =G_List – G1、G2…Gnとして使用する補足グループを指定するために使用されます
- —ヘルプ– ヘルプ画面を表示して終了します
- –バージョン– バージョンデータを表示して終了します
chrootコマンドjailの作成
chrootコマンドとその構文を理解したので、次はそれを使用します。それがどのように行われるかを示すために、chrootjailを作成します。
chroot jailは、ユーザーまたはグループのルートディレクトリを新しいディレクトリに変更することによって作成される仮想環境です。この新しいディレクトリは、chrootjailの偽のルートディレクトリとして機能します。
Linuxでchrootコマンドを使用してchrootjailを作成するために必要な手順を見ていきましょう。
1。ディレクトリを作成する
まず、mkdirコマンドを使用して/ home/chroot_jailに偽のルートディレクトリを作成することから始めます。
mkdir $home/chroot_jail
これにより、指定されたアドレスにディレクトリが作成され、chrootjailに使用されます。ただし、chrootコマンドにその仕事をさせる前に、必要なファイルを新しいディレクトリに追加する必要があります。
2。必要なルートディレクトリを追加する
まず、jailディレクトリに/ bin、/ lib、および/lib64を作成します。これらのディレクトリを作成するコマンドを以下に示します。
mkdir -p $home/chroot_jail/{bin,lib,lib64}
お気づきのとおり、仮想環境内に作成するディレクトリは中かっこ(‘{}’)で指定されています。
次に、cdコマンドを使用して、chroot_jailを新しいルートディレクトリにします。
cd $home/chroot_jail
3。許可されたコマンドのバイナリファイルを移動する
この例では、最小限のLinux環境を作成しています。 bash、ls、rm、touchコマンドを使用して、仮想環境の機能の一部にしましょう。
ルート/binディレクトリからchroot_jailの/binディレクトリにバイナリをコピーします。これは、cpコマンドと-v(verbose)タグを使用して行うため、特定の時点で何がコピーされているかを確認できます。
cp -v /bin/{bash,touch,ls,rm} $home/chroot_jail
ご覧のとおり、コピーしたいバイナリは中括弧で囲まれています。指定されたバイナリのファイルが新しいchrootjailディレクトリにコピーされました。
4。コマンドの依存関係の解決
ただし、これらのバイナリには依存関係があります。 bashの依存関係は、lddコマンドを使用して見つけることができます。
ldd /bin/bash
次に、cpコマンドを使用して、ディレクトリを1つずつ慎重にchrootjailにコピーします。すべての依存関係ライブラリをコピーする必要があります。そうしないと、chrootjailが正しく機能しません。
cp -v {<List dependencies here>} $home/chroot_jail/lib64
chrootjail内で許可するすべてのコマンドに対してこれらの手順を繰り返します。依存関係ライブラリを見つけて、chroot_jailディレクトリにコピーします。
5。新しいルートディレクトリへの切り替え
これで、あとはchrootjailのルートディレクトリを作成したばかりの新しい偽のディレクトリに変更するだけです。
ディレクトリを変更し、仮想化環境のシェルとして実行するアプリケーションとして実行するbashを指定するには、次のコマンドを使用します。
sudo chroot $home/chroot_jail/bin/bash
続行するには、ユーザーパスワードの入力を求められる場合があります。その場合、ユーザーパスワードを入力すると、コマンドが実行されます。
すべての手順を正しく実行すると、画面に次のような出力が表示されるはずです。
スクリーンショットでわかるように、bashバージョン4.4がchrootjailのシェルとして実行されています。
これで、最小限の仮想Linux環境が作成され、使用できるようになりました。通常のLinuxシステムのようにbashを使用して仮想環境と対話できます。
結論
Linuxのchrootコマンドは、Linuxユーザーのツールセットのシンプルで効果的なコマンドです。仮想マシンで見られるような監視ソフトウェアを必要とせずに仮想化環境を作成できるため、この用途の簡単な代替手段になります。
このチュートリアルは、chrootとは何かを理解し、単純なchrootjailを作成する方法を示すことを目的としています。ご不明な点、フィードバック、提案がございましたら、下のコメント欄でお気軽にお問い合わせください。