概要

以前、ezjailを使用したJail環境構築スクリプトを作成しましたが、そのqjail版を作成しました。 前回:【FreeBSD】Jail環境の作成を自動化してみた - くんすとの備忘録そもそも、ezjailもqjailもJail環境の構築を簡単に行うためのものですが、それに加えて

  • ルートのパスワード設定
  • デフォルトユーザーの登録
を自動で行えるようにしたラッパースクリプトです。ものぐさな自分向けのツールという位置づけ。

前提条件

スクリプト中で「sudo qjail」と「sudo jexec」をしてます。 suもsudoもしないでqjailを使いたい - くんすとの備忘録 に書いた設定を行っている前提です。

スクリプト

create_jail.sh

#!/bin/sh
USAGE(){
cat <<++EOS >&2
USAGE:`basename $0` jail_name ip_address flavor [ -y root_password default_user default_user_password ]
++EOS
}
# Const
NIC=em1
if [ "_$3" = "_" ] ; then
USAGE
exit 9
fi
jail_name=$1
ip_address=$2
flavor=$3
if [ "_$4" = "_-y" ] ; then
if [ "_$7" = "_" ] ; then
USAGE
exit 9
fi
is_silent=$4
root_password=$5
default_user=$6
default_user_password=$7
else
is_silent=""
echo -n "Input root password: "
read root_password
echo -n "Input default username: "
read default_user
echo -n "Input default user password: "
read default_user_password
fi
cat <<++EOS
I will create a Jail with the following.
jail_name :${jail_name}
ip_address :${ip_address}
flavor :${flavor}
root_password :${root_password}
default_user :${default_user}
default_user_password:${default_user_password}
++EOS
if [ "${is_silent}" != "-y" ] ; then
echo -n 'create? [y/n]: '
read YN
if [ "$YN" != "y" -a "$YN" != "yes" ]; then
exit 9
fi
fi
echo
echo "########### SETUP START ###########"
set -v
# create Jail
sudo qjail create -n $NIC -4 $ip_address -f $flavor $jail_name
sudo qjail config -k $jail_name
sudo qjail start $jail_name
# user settings
sudo jexec $jail_name sh -c "echo ${root_password} | pw usermod -n root -h 0"
sudo jexec $jail_name sh -c "echo ${default_user_password} | pw useradd -n ${default_user} -G wheel -m -h 0"
set +v
echo "########### SETUP END ###########"
view raw create_jail.sh hosted with ❤ by GitHub
※NIC=em1のところは環境に合わせて変更してください。

使い方の例

1
2
3
4
5
6
7
# 対話モード
$ create_jail.sh test 10.0.3.11 default

# バッチモード
#   ※rootパスワードが「1111」、デフォルトユーザーが「hoge」パスワードが「2222」
$ create_jail.sh test 10.0.3.11 default -y 1111 hoge 2222