« あなたのスキルで飯は食えるか?に挑戦 | トップページ | iPhoneのsafariで文字化けしているサイトを読めるようにする »

2010年8月 8日 (日)

LinuxでchrootによるJail環境を構築2

前にも書いたLinuxでchrootによるJail環境を構築 ですが、現在のプロジェクト
でもかなり役にたったので、再掲載。
今回はUbuntu 10.04で検証しました。
今回のプロジェクトで必要になった理由は、Rails2.8とRails3のWebアプリを1台
のサーバで開発、動作させたいけど、rails3が依存する1.0系のbundlerが現在主流
の0.9系とGemファイルで互換性がないため、bundler1.0系をインストールでき
ないよというジレンマを解消するため、Jail環境でbundler1.0系やRails3をインス
トールするようにしました。ポート番号のバッティングさえ気をつければ、サーバ
が増えたような環境ができます。
KVMやXen等を使えば、OSさえ違うもっと完全な仮想マシンを作れますが、よく
知らないので、そこまでしたくないなーという時に便利です。

sudo su -l

rootになる。

mkdir /chroot

適当なchroot用のディレクトリの作成(どこでもいい。以降は/chrootと仮定)

mkdir /chroot/proc

procディレクトリの作成

mkdir /chroot/root

rootのホームディレクトリの作成

mkdir /chroot/bin

chroot用の/binディレクトリの作成

cp -r /bin/* /chroot/bin/

/bin配下のコマンドをchroot環境にコピー

mkdir /chroot/lib

chroot用の/libディレクトリの作成

cp -r /lib/* /chroot/lib/

/lib配下のライブラリをchroot環境にコピー

mkdir /chroot/usr

chroot用の/usrディレクトリの作成

cp -r /usr/include /chroot/usr/

/usr/include配下のヘッダをchroot環境にコピー

cp -r /usr/lib /chroot/usr/

/usr/lib配下のライブラリをchroot環境にコピー

mkdir /chroot/tmp

chroot用の/tmpディレクトリの作成

chmod 777 /chroot/tmp

chroot用の/tmpディレクトリのモード変更

mkdir /chroot/dev

chroot用の/devディレクトリの作成

mknod  -m 666 /chroot/dev/null c 1 3

chroot環境に/dev/nullデバイスの作成

mknod  -m 666 /chroot/dev/zero c 1 5

chroot環境に/dev/zeroデバイスの作成

mknod  -m 644 /chroot/dev/random c 1 8

chroot環境に/dev/randomデバイスの作成

mknod  -m 644 /chroot/dev/urandom c 1 9

chroot環境に/dev/urandomデバイスの作成

mknod  -m 666 /chroot/dev/tty c 5 0

chroot環境に/dev/ttyデバイスの作成

mknod  -m 660 /chroot/dev/tty0 c 4 0

chroot環境に/dev/tty0デバイスの作成

mknod  -m 600 /chroot/dev/tty1 c 4 1

chroot環境に/dev/tty1デバイスの作成

mkdir /chroot/etc

chroot環境に/etcディレクトリの作成

cp -r /etc/* /chroot/etc

chroot環境に/etc配下をコピー

mkdir /chroot/usr/bin

chroot環境に/usr/binディレクトリの作成

cp -r /usr/bin/* /chroot/usr/bin/

/usr/bin以下のコマンドをchroot環境にコピー

mkdir /chroot/sbin

chroot環境に/sbinディレクトリの作成

cp -r /sbin/* /chroot/sbin/

/sbin以下のコマンドをchroot環境にコピー

chmod 4511 /chroot/usr/bin/sudo

chroot環境のsudoにrootのsetuidをセット

mkdir /chroot/usr/sbin

chroot環境に/usr/sbinディレクトリの作成

cp -r /usr/sbin/* /chroot/usr/sbin

chroot環境に/usr/sbinをコピー

mkdir /chroot/var
mkdir /chroot/var/lock
mkdir /chroot/var/log
mkdir /chroot/var/run

chroot環境に各種/varディレクトリの作成

mkdir /chroot/usr/share
cp -r /usr/share/perl /chroot/usr/share/
cp -r /usr/share/perl5 /chroot/usr/share/
cp -r /usr/share/git-core /chroot/usr/share/
cp -r /usr/share/vim /chroot/usr/share/

chroot環境に/usr/shareを必要な分だけコピー(環境によって違う)

sudo cp /usr/share/zoneinfo/Japan /chroot/etc/localtime

chroot環境の時刻のlocaleを設定

mkdir -p /chroot/home/ユーザー名
chown -R ユーザ名:ユーザ名 /chroot/home/ユーザー名

chroot環境に自分のホームディレクトリを作成(作成済みユーザーであること)

chroot /chroot

chrootの実行!!

mount -t proc proc /proc

/procのmount

su -l ユーザー名
ssh-keygen

これで、aptなり、gemを本体に影響与えることなく、好きにインストールし放題。
chrootのディレクトリの名前さえ変えれば、任意の数だけJail環境を構築できる。
仮想化によるオーバーヘッドもないし、もっとみんな知っといたほうがいいんじゃ
ないかな。

|

« あなたのスキルで飯は食えるか?に挑戦 | トップページ | iPhoneのsafariで文字化けしているサイトを読めるようにする »

コメント

Amiable brief and this enter helped me alot in my college assignement. Gratefulness you seeking your information.

投稿: Wordpress Themes | 2010年8月19日 (木) 21時02分

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/68673/49094815

この記事へのトラックバック一覧です: LinuxでchrootによるJail環境を構築2:

« あなたのスキルで飯は食えるか?に挑戦 | トップページ | iPhoneのsafariで文字化けしているサイトを読めるようにする »