Linuxシステム内の特定のアプリケーション、ユーザー、または環境を分離したい場合が多くあります。オペレーティングシステムが異なれば、分離を実現する方法も異なります。Linuxでは、古典的な方法は chroot
を使用することです。 環境。
このガイドでは、通常のオペレーティングシステムと含まれている環境の間にバリアを作成するために、chrootを使用して分離された環境をセットアップする方法を段階的に説明します。これは主にテスト目的で役立ちます。 Ubuntu14.04VPSインスタンスの手順を説明します。
ほとんどのシステム管理者は、すばやく簡単なchroot環境を実現する方法を知っていることで恩恵を受けることができ、それは貴重なスキルです。
chroot環境
chroot環境は、ルートの場所を一時的に新しいフォルダーに変更するオペレーティングシステムコールです。通常、オペレーティングシステムのルートディレクトリの概念は、「/
」にある実際のルートです。 "。ただし、chroot
、chrootの期間中、最上位ディレクトリとして機能する別のディレクトリを指定できます。
chroot
内から実行されるすべてのアプリケーション 原則として、残りのオペレーティングシステムを表示することはできません。
Chroot環境の利点
- Test applications without the risk of compromising the entire host system.
- From the security point of view, whatever happens in the chroot environment won't affect the host system (not even under root user).
- A different operating system running in the same hardware.
たとえば、通常のオペレーティングシステムとは別の環境でソフトウェアをビルド、インストール、およびテストできます。また、64ビット環境で32ビットアプリケーションを実行する方法としても使用できます。 t。
しかし、chroot環境は確かに特権のないユーザーのために追加の作業を行いますが、セキュリティ機能ではなく強化機能と見なす必要があります。つまり、完全なソリューションを作成するのではなく、攻撃ベクトルの数を減らしようとします。完全な分離が必要な場合は、Linuxコンテナー、Docker、vserverなどのより完全なソリューションを検討してください。
DebootstrapとSchroot
chroot環境をセットアップするために必要なパッケージはdebootstrap およびschroot 、ubuntuリポジトリで利用できます。 schrootコマンドは、chroot環境をセットアップするために使用されます。
デブートストラップ オペレーティングシステムの基本インスタンスを実行するために必要なすべての基本コマンドとバイナリを含むディレクトリ内のリポジトリから、Debian(またはdebianベース)システムの新しい新しいコピーをインストールできます。
シュルート 同じメカニズムを使用して通常のユーザーがchrootにアクセスできるようにしますが、権限を確認し、追加のファイルシステムやその他の構成タスクのマウントなど、chroot環境の追加の自動セットアップを許可します。
これらは、Ubuntu14.04LTSでこの機能を実装するための手順です。
1。パッケージのインストール
まず、ホストのUbuntu14.04LTSにdebootstrapとschrootをインストールします。
$ sudo apt-get install debootstrap
$ sudo apt-get install schroot
2.Schrootの構成
適切なツールが揃ったので、chroot環境として使用するディレクトリを指定するだけです。ルートディレクトリにlinoxideというディレクトリを作成して、そこにchrootを設定します。
sudo mkdir /linoxide
構成ファイルのニーズに合わせてschrootを構成する必要があります。schroot
を変更します。 構成するために必要な情報を含む構成ファイル。
sudo nano /etc/schroot/schroot.conf
現在、Ubuntu 14.04 LTS(Trusty Tahr)システムを使用していますが、Ubuntu13.10で利用可能なコード「SaucySalamander」をテストしたいとします。これを行うには、次のようなエントリを作成します。
[saucy]
description=Ubuntu Saucy
location=/linoxide
priority=3
users=arun
root-groups=root
上記の例の構成パラメーターの値を、システムに合うように変更します。
3.debootstrapを使用した32ビットUbuntuのインストール
Debootstrapは、chroot環境内に最小限のオペレーティングシステムをダウンロードしてインストールします 。リポジトリが利用可能である限り、任意のDebianベースのディストリビューションをインストールできます。
上記では、chroot環境をディレクトリ / linoxideの下に配置しました これはchroot環境のルートディレクトリです。したがって、すでに作成したディレクトリ内でdebootstrapを実行する必要があります。
cd /linoxide
sudo debootstrap --variant=buildd --arch amd64 saucy /linoxide/ http://archive.ubuntu.com/ubuntu/ sudo chroot /linoxide /debootstrap/debootstrap --second-stage
--archのamd64は、リポジトリで使用可能なi386またはセットアップしたい他のビットOSとして置き換えることができます。上記のミラーhttp://archive.ubuntu.com/ubuntu/を最も近いものとして置き換えることができます。最も近いものは、公式のUbuntuミラーページから入手できます。
注: 64ビットのホストUbuntuでi386ビットのOSchootを次のように設定する場合は、3行目のコマンドの上に--foreignを追加する必要があります。
sudo debootstrap --variant=buildd --foreign --arch i386 saucy /linoxide/ http://archive.ubuntu.com/ubuntu/
システム全体をダウンロード、インストール、および構成するには、(帯域幅によっては)時間がかかります。最小限のインストールには約500MBかかります。
4。 chroot環境の完成
システムをインストールした後、システムが正しく機能することを確認するために、いくつかの最終構成を行う必要があります。まず、ホストのfstab
を確認します。 ゲストのいくつかの疑似システムを認識しています。
sudo nano /etc/fstab
fstabの下部に次のような行を追加します:
proc /linoxide/proc proc defaults 0 0
sysfs /linoxide/sys sysfs defaults 0 0
ファイルを保存して閉じます。
次に、これらのファイルシステムをゲスト内にマウントする必要があります:
$ sudo mount proc /linoxide/proc -t proc
$ sudo mount sysfs /linoxide/sys -t sysfs
/etc/hosts
もコピーします 正しいネットワーク情報にアクセスできるようにファイルします:
$ sudo cp /etc/hosts /linoxide/etc/hosts
最後に、schrootコマンドを使用して利用可能なchroot環境を一覧表示できます。
$ schroot -l
次のようなコマンドでchroot環境に入ることができます:
$ sudo chroot /linoxide/ /bin/bash
You can test the chroot environment by checking the version of distributions installed.
# lsb_release -a
# uname -a
このチュートリアルを終了するには、chrootからグラフィックアプリケーションを実行するために、DISPLAY環境変数をエクスポートする必要があります。
$ DISPLAY=:0.0 ./apps
ここでは、ホストUbuntu 14.04 LTS(Trusty Tahr)にChrooted Ubuntu 13.10(Saucy Salamander)が正常にインストールされています。
以下のコマンドを実行すると、chroot環境を正常に終了できます。
# exit
その後、procおよびsysファイルシステムをアンマウントする必要があります:
$ sudo umount /test/proc
$ sudo umount /test/sys