gate-toroku-system | インストールの手引き
[1.1] その他のサーバーに必要な他のソフトウェア
事前に以下のようなソフトウェアをインストールしなければならない。 なお、以下では OS として Debian GNU/Linux 7.0 --wheezy-- を利用していることを仮定している。
- perl
- Debian パッケージ perl、および libcrypt-passwdmd5-perl と libdigest-md5-file-perl のどちらかをインストールする。 libperl4-corelibs-perl パッケージが抜けることがあるので注意する。 バイナリパッケージに頼らず perl をコンパイルする人は、たぶん何も考えなくていいと思う。
- jcode.pm
- Debian パッケージ libjcode-pm-perl をいれればよい。
- inetd
- gate-toroku-system をデーモンモードで起動する場合に必要になる。 パッケージ名は inetutils-inetd。
- ssh
- ファイル転送や遠隔操作に使う。
- sudo
- 別のユーザに成り変るのに使う。
- rsync
- ファイル転送に使う。
- cron
- クロンモードで運用する場合は必要。
- htroff_2.0-1
- roff ソースからハイパーテキストを生成する perl スクリプト。 地球流体電脳倶楽部 からとってくる
[1.2] ユーザアカウントに関する準備
[1.2.1] 注意
gate-toroku-system は adduser のかわりにユーザアカウントの自動割付を行う。 この自動割付はユーザID(UID)が 1000 〜 29999 の範囲で行われる (/etc/gate.conf で変更可能)。 この範囲の UID を用いるユーザアカウントは gate-toroku-system のインストール前にUIDを変更しておかねばならない。
作業用ユーザアカウントは UID が 30000 〜 59999 の範囲(Debian GNU/Linux の予約領域)に作成せよ。
[余談] 念のためいっておくが、UID を変更するには /etc/passwd の UID 欄(3つ目) を変更するだけではいけない。ホームディレクトリのオーナーは UID の数値で記録されているのでこれを変更してやらねばならない。 たとえばあるユーザのUID を 1001 から 30000 に変更するには
# find /home -uid 1001 -exec chown 30000 {} \; -printというコマンドを発行すればよい。
[1.2.2] 作業用アカウントの作成
gate-toroku-system のデータベースの所有者として用いるため、 gateユーザ と gate グループ の設定が必要である (名称は /etc/gate.conf で変更可能であるが、ユーザと同名のグループでなければならない)。 以下のコマンドを発行せよ。
# adduser --uid 500 --disabled-password gate上の例では UID, GID として 500 を用いたが、システムユ ーザに割り当てられた領域 (Debian GNU/Linux では 1-999) を用いねばならない。
[1.3] quota の設定
少なくとも Debian GNU/Linux では quota (ユーザごとのディスク使用量上限)の設定を行う場合 edquota コマンドを用いて別のユーザの設定を複写するのが便利である。 そこで gate-toroku-system もこの機能に対応し、 edquotaコマンドが起動可能な場合はホームディレクトリを 新規作成するユーザに gate ユーザ (どのユーザを用いるかは /etc/gate.conf で変更可能) の quota 設定を複写するようになっている。
そこで、quota を利用する場合は gate-toroku-system の本格運用前に gate ユーザに quota の設定を行えばよい。
quota を利用しない場合は edquota をインストールしないものと考えられるが、もし edquota をインストールしているにもかかわらず quota の設定をしない場合は gate ユーザのディスク使用可能量を無限大にしておけばよい。
[1.4] 遠隔起動に関する設定
登録サーバの gate ユーザが ssh を用いて他のホストのスーパーユーザとして ログインできるように設定しなければならない。 この方法については sshを用いたノンパスワードログイン (SSH2) を参照されたい。 なお、もしもSSH1を用いているのであれば sshを用いたノンパスワードログイン (SSH1) を参照されたい。
[ep local] 2007 年度の EP サーバではSSH2を用いている。
[ep local] orange.ep.sci.hokudai.ac.jp にログインしている gate ユーザが blue, grey yellow, white, green, brown, kurage について
gate@orange:~$ ssh blue.ep.sci.hokudai.ac.jp ls -l /home/gateのようにしてパスワードを投入することなく blue 〜 kurage にてコマンドを実行できればよい。
[2.1] パッケージの取得
gate-toroku-system は gate-toroku-system.tar.gz という(あるいは類似の)ファイル名の gzip で圧縮された tar アーカイブで提供される。 このファイルは現在のところ公開されていない。
[ep local] www.ep.sci.hokudai.ac.jp において /home/gate/gate-toroku-system.tar.gz を探索されたい。 さらに開発者向けに付言するなら、 gate-toroku-system ディレクトリにおいて make tar コマンドを発行することによって 最新版アーカイブを作成することができる。
[2.2] パッケージの展開
パッケージを展開する場所はどこでもよいが、 設定ファイルなどのバックアップをかねて /home/gate 以下がよいであろう。 /usr 以下のシステムディレクトリだと インストールされたものと区別がつきにくいので避けたほうがよい。 (以下、/home/gate/ 以下に gate システムのパッケージを展開すると 仮定して説明する。)
$ sudo -u gate -s
$ cp gate-toroku-system.tar.gz /home/gate/
$ cd /home/gate/
以下のコマンドを使うと、カレントディレクトリに パッケージが展開される。
$ tar xvfz gate-toroku-system.tar.gzなお、上記のコマンドは GNU tar がインストールされていない場合は 使用できないため GNU zip と tar が必要である。
$ zcat gate-toroku-system.tar.gz | tar xvf -いずれの方式でもカレントディレクトリに gate-toroku-system ディレクトリが作成され、 その中にファイルが展開される。以後の作業は主にこの gate-toroku-system ディレクトリで行われるのでそこに cd しておこう。
$ cd gate-toroku-system( 以後の作業はこのディレクトリから行うことを仮定しており, コマンドも相対パスで書かれているものがあるので注意 )
パッケージのインストール先、動作詳細などすべての設定は include/gate.conf ファイルを編集することで行う。
[3.1] 登録サーバの gate.conf をコピー
gate.conf の書式は複数のホストでデータベースを共有する場合、 まったく同じファイルを用いることができるように設計されている。 したがって、同じバージョンのgate-toroku-system を使っている場合は 登録サーバの gate.conf をコピー すればよい。
[ep local] EP サーバでは orange を登録サーバに使用しているので、 以下のようにして include/gate.conf に 登録サーバの /etc/gate.conf をコピーしてくればよい。
$ scp orange:/etc/gate.conf ./include/gate.conf[3.1.1] 確認
登録サーバの gate.conf の %DB_SHARE_HOSTS に このサーバの情報が書き込まれていることを確認すること。
書き込まれていない場合は 登録サーバの gate.conf にこのサーバの情報を書き込んだ後、 上記のようにコピーしてくること。
詳細は 「登録サーバへのインストール」 の 3. パッケージの設定 を参照せよ。
[3.1.2] テスト運用モードに
おそらくあなたがコピーしてきた 登録サーバの gate.conf の $DEBUG_CONFIG は 0 になっているはずである。 このようになっていると、gate-toroku-system は UNIX システムの ユーザデータベースである /etc/shadow や /etc/passwd を直接書き換えて しまうため、万が一正常に動作しなかった場合、危険である。
この危険を回避するため、まずはテスト運用モードを用いる。 /etc/gate.conf ファイルに以下のような行を発見し、
$DEBUG_CONFIG = 0; # 0 にすると本気モード
以下のように書き換えよ。
$DEBUG_CONFIG = 1; # 0 にすると本気モード
なおこの設定は7. 本格運用の際に元に戻す。
include/gate.conf の編集が終わったら、 いよいよインストールを行う. 以下の作業を /home/gate/gate-toroku-system ディレクトリにておこなってもらいたい。
[4.1] Config.mk の生成
gate.conf の設定内容を Makefile へ伝えるために config.pl を走らせて Config.mk を作成する。
$ cd /home/gate/gate-toroku-system
$ perl ./config.pl
[4.2] make によるコンパイル
make によるコンパイルを行う. 具体的には今のところ, roff 形式のファイル (man 用の書式のファイル) から htroff を用いて html ファイルを生成している.
$ make
[4.3] インストール
最後に、スーパーユーザの権限で以下のコマンドを実行する。
$ su (sudo を用いても良い)
# cd /home/gate/gate-toroku-system
# cp include/gate.conf /etc/gate.conf
# make install
[蛇足] ディレクトリ設定を変更していなければ、以下の作業が行われる。
もし以下のディレクトリが存在しなければ作成する
- /usr/local/bin
- /usr/local/sbin
- /usr/local/lib/gate
- /home/gate/userdb (所有者 gate, グループ gate, グループ外に読み取り不可)
- /home/gate/userdb/pending
- /home/gate/userdb/stable
- /home/gate/userdb/defunct
- /home/gate/ipdb (所有者 gate, グループ gate, グループ外に読み取り不可)
- /home/gate/ipdb/pending
- /home/gate/ipdb/stable
- /home/gate/ipdb/defunct
- /home/gate/ipdb/zone
- /home/gate/pipdb (所有者 gate, グループ gate, グループ外に読み取り不可)
- /home/gate/pipdb/pending
- /home/gate/pipdb/stable
- /home/gate/pipdb/defunct
- /HOME
- /ETC
プログラムファイルが /usr/local/bin, /usr/local/sbin, /usr/local/lib/gate にインストールされていることを確認する。
/etc/passwd, /etc/shadow, /etc/group, /etc/sudoers が /ETC にも存在することを確認する。
[4.4] アンインストール (余談)
ここまでにインストールの方法を述べてきたが, 一応アンインストールの方法も 説明する. 興味が無い場合は次の 5. テスト運用に進んでもらいたい.
まず, 2. パッケージの取得と展開 をおこない、 /home/gate/gate-toroku-system ディレクトリに移動する。
そしてスーパーユーザにて以下のコマンドを実行することで、 gate-toroku-system のプログラム群のほとんどをシステムから 削除できる。 残るのは /etc/gate.conf とユーザ/DNS/プライベートIPデータベース (/home/gate/userdb, /home/gate/ipdb, /home/gate/pipdb)のみである。
# make uninstall
/etc/gate.conf とユーザ/DNS/プライベートIPデータベース も完全に削除する場合には以下のコマンドを実行する。
※ 削除した設定ファイルやデータベースは 2 度と戻らないので注意すること!!# make uninstall.all
[5.1] データベースの転送
ユーザデータベースファイルは登録サーバが gate-daily を 起動する毎に/home/gate/userdb 以下に転送される。 (DNS データベースは /home/gate/ipdb 以下に転送される)
登録サーバ管理者に登録サーバの gate-daily を起動してもらい、各ホストの /home/gate/userdb , /home/gate/ipdb 以下にファイルが転送されていることを確認する。
[5.2] アカウント生成
/home/gate/userdb の中にあるデータベースファイルをシステムに反映させるには ルートで /usr/local/lib/gate/gate-daily を起動する。
# perl /usr/local/lib/gate/gate-daily/ETC 内に存在する passwd, group, shadow, sudoers ファイルが更新され、それぞれ .bk を付加した名前の バックアップファイルが生成されるはずである。 これらの変更点を確認せよ。たとえば /ETC/passwd.bk から /ETC/passwd への変更点は
$ diff -c /ETC/passwd.bk /ETC/passwdコマンドによって確認できる。
また /HOME には /home/gate/userdb 以下に存在するユーザのディレクトリが出来ているはずである。
ユーザ、ホストのデータベースをシステムに反映させる方法として デーモンモードとクロンモードがある。
- デーモンモード
gate-toroku-system 用にポートを一つ開放し、 このポートへのアクセスがある度にデータベースをシステムに反映、 及び登録サーバから他サーバへのデータベースの転送をおこなう。 データベースへの変更が即座にシステムに反映されて便利な半面、 設定を間違えるとセキュリティホールともなるので注意が必要。
- クロンモード
debian パッケージの cron を利用するモード。 一日に(または数時間に)一回、データベースをシステムに反映させる とともに登録サーバから他サーバへデータベースを転送する。 設定が簡単な半面、 データベースがシステムに反映されるまでに時間がかかる。
[6.1] デーモンモードでの運用
デーモンモードを使用する場合は以下のように設定する。
[ep local] 現在 ( 2002年度 ) はデーモンモードを使用して運用している。
[6.1.1] gate.conf の設定
/etc/gate.conf 中の $USE_DAEMON 変数が 1 というのを確かめる。
$USE_DAEMON = 1;
[6.1.2] gate-toroku-system 用のポートの作成
gate-toroku-system 用のポートを作成する。 具体的には、このポートへのアクセスに対して、 gate-daily (データベースをシステムに反映させるプログラム) が起動するようにする。
/etc/inetd.conf に以下の一行(長いけど)を付け足す。 ただし, もしも gate.conf の $BASEDIRや$LIBDIR を変更して gate-daily の置き場を変えた場合には下記の /usr/local/lib/gate/gate-daily もそのように変更すること。
gate stream tcp nowait root /usr/sbin/tcpd /usr/local/lib/gate/gate-daily -N
一部だけ説明すると、1つ目のgateはプロトコル名, 5つ目のrootは起動するユーザ, 7つ目の/usr/local/lib/gate/gate-dailyは起動されるプログラム である。
[6.1.3] ポート番号の設定
上記で作成した gate ポートにポート番号を割り当てる。
/etc/services に以下の行を付け足す。 ただし、gate.conf の $GATEPORT を変更した場合は 下記の 8888 もそのように変更すること。
gate 8888/tcp[6.1.4] inetd の再起動
inetd を再起動する。
# kill -HUP `cat /var/run/inetd.pid`[6.1.5] TCP wrappers によるセキュリティ強化
gate ポートは、登録サーバにせよその他のサーバにせよ、 登録サーバからのアクセスさえ受け付けられればその役目を果たすので 登録サーバからのみアクセスを受けるのが理想的である。
TCP wrappersを使用して、アクセスを登録サーバからのものに限定する。 /etc/inetd.conf に書き込んだものの中に /usr/sbin/tcpd というものがあったが、これが TCP wrappers のプログラム名である。
/etc/hosts.deny の編集 /etc/hosts.deny に以下の一行を追加し、 まずは全てのホストからの gate ポートへのアクセスを拒否する。 (この一行の後で改行をしないとエラーになるので注意。)
gate-daily: ALL/etc/hosts.allow の編集 /etc/hosts.allow に以下の一行を追加し、 登録サーバからのアクセスのみは受け付けるようにする。 (この一行の後で改行をしないとエラーになるので注意。)
gate-daily: <登録サーバのホスト名>[ep local] EP サーバ群での登録サーバは orange.ep.sci.hokudai.ac.jp なので、 以下のように書き込めば良い。
gate-daily: orange.ep.sci.hokudai.ac.jp確認 アクセス制限が正常におこなわれているか tcpdmatch コマンドで確認する。
# tcpdmatch gate-daily <登録サーバ以外のホスト>結果、access: denied と表示されればアクセスが正常に拒否されている。 次に、登録サーバからのアクセスは受け付けられているか確認する。
# tcpdmatch gate-daily <登録サーバ>結果、access: granted と表示されればアクセスが正常に受け付けられている。
[6.1.6] デーモンモード使用時の注意
登録サーバをデーモンモードにするときは、 その他のサーバもデーモンモードにすること。 さもないと、登録サーバからその他のサーバの gate-daily を 起動する事が出来ない。
[6.2] クロンモードでの運用
クロンモードを使用する場合は以下のように設定する。
[ep local] 現在 ( 2002年度 ) はデーモンモードを使用して運用している。
[6.2.1] cron パッケージのインストール
cron パッケージがインストールされていない場合はインストールする。
[6.2.2] gate.conf の設定
/etc/gate.conf 中の $USE_DAEMON 変数が 0 というのを確かめる。
$USE_DAEMON = 0;
[6.2.3] crontab の設定
/etc/crontab に以下の一行を付け足す. ただし, もしも gate.conf の $BASEDIRや$LIBDIR を変更して gate-daily の置き場を変えた場合には下記の /usr/local/lib/gate/gate-daily もそのように変更すること。
52 4 * * * root /usr/local/lib/gate/gate-daily
以上のように記述すると、毎日 04:52 に gate-daily が起動され、 データベースがシステムに反映される。 もっと頻繁に反映させたい場合は crontab(5) を参照して適当に書き換えてほしい。
[6.2.4] クロンモード使用時の注意
gate-daily の機能は (1) データベースをシステムに反映, (2) 登録サーバから他のサーバへのデータベースの転送(登録サーバのみ) である。 このため、登録サーバの gate-daily 起動時間を他のサーバの gate-daily 起動時間より 10分 〜 1時間 ほど早めておくと 比較的速やかなシステムへの反映ができるだろう。
[7.1] 本格運用開始
本格運用に入ると今まで /ETC 以下を対象としていた動作が /etc 以下にある 本当のシステムファイルに対してなされる。 万が一のことを考え次の編集を行なう前に ルートになった端末を残しておくこと! また /etc/passwd、shadow、group、sudoers ファイルをホームディレクトリ内等に バックアップを保存しておくとよい。
/etc/gate.conf ファイルの $DEBUG_CONFIG を 0 に変えることによって本格運用が開始される。 /etc/gate.conf ファイルに以下のような行を発見し、
$DEBUG_CONFIG = 1; # 0 にすると本気モード
以下のように書き換えよ。
$DEBUG_CONFIG = 0; # 0 にすると本気モード
[7.2] 後始末
本格運用の安全性が確認されたら /ETC および /HOME を削除してもよい。
また作業用ユーザのアカウントおよびホームディレクトリも削除すること。
[ep local] mondo たちのことである。