[EPA]gate-toroku-systemのインストールと設定

概要

以下は EPA サーバに gate-toroku-system をインストールするための 作業ログである. EPA サーバに固有な記述を含んでいます.

gate-toroku-system そのものに関しては EPA サーバ版 gate-toroku-system を参照のこと.

gate-toroku-system のソースを取得

gate-toroku-system のソースは EPA サーバの以下のパスに置かれています. (公開はしていません). ここからソースを入手し, /home/gate 以下に 置いてください.

/home/gate/gate-toroku-system.tar.gz

必要なソフトウェアのインストール

まず, gate に必要なパッケージをインストールします. 以下の 2 行を /etc/apt/sources.list に加えてください.

deb http://www.gfd-dennou.org/arch/cc-env/Linux/debian-dennou stable/
deb-src http://www.gfd-dennou.org/arch/cc-env/Linux/debian-dennou stable/

その後, 以下のコマンドで, 必要なパッケージをインストールします. なお, 以下の perl 関連のパッケージ名は Debian GNU/Linux 4.0 (コードネーム etch) の場合のものなので, Debian のバージョンによって 変更される可能性が高いので注意してください.

# apt-get update
# apt-get install perl-suid rsync wget htroff cvs
# apt-get install libjcode-pm-perl
# apt-get install libcrypt-passwdmd5-perl
# apt-get install libdatetime-perl
# apt-get install libdatetime-format-strptime-perl

インストール時, cvs のリポジトリの位置を問われるが, 空文字を与える.

作業用アカウントの作成

今回は既に gate-toroku-system ソースの置き場として作成済みだが, 本来はこの段階で, gate-toroku-system 管理アカウント gate を作成する. ユーザ ID は 1 -- 999 の間(システムユーザ領域)に設定する.

# adduser --uid 500 --disabled-password gate

この時, フルネームを入力しなくてはならない. 「Administrator of gate-toroku-system」など, gate の管理用ユーザだとい うことが分かるものがよいだろう.

gate グループに gate 開発メンバーを加える. 開発メンバーに関しては [EPA]gate-toroku-systemの開発とメンテナンス#開発メンバー のユーザ名を並べること. 以下は書き方の例である.

# vigr

gate:x:500:morikawa,murashin,uwabami

# vigr -s

gate:!::500:morikawa,murashin,uwabami

gate ユーザへのメールの転送

/home/gate/.qmail に gate 管理者のメールアドレスを書き込む.

  • 注意
    • 電子メールアドレスの前に & をつける.
    • 空白, 空行をいれない.

gate-toroku-system ソースの展開

gate-toroku-system のソースを取得 で取得した ソースを展開します.

$ cd /home/gate
$ tar xvfz gate-toroku-system.tar.gz

gate-toroku-system の設定ファイルを編集

gate-toroku-system 内の以下のファイルを適宜編集する. 設定後のファイルを閲覧するにはパスワードが必要である.

  • gate-sys.conf [設定後]
  • include/gate.conf [設定後]
  • include/gate-user.conf [設定後]
  • include/gate-ip.conf (IP 管理をする場合のみ)
  • include/gate-local.pl [設定後]

gate-toroku-system の表紙ページを編集

gate-toroku-system/html 内の HTML ファイルについて, 変更があれば編集する.

gate-toroku-system CGI を動作させるための apache2 設定

以下では CGI の動作に関して, apache2 の設定について確認すべき点を挙げ る. 場合によっては gate-sys.conf や gate.conf ファイルを編集せねばなら ない. 今回は apache2 をソースからコンパイルしたので, apache2 の設定ファ イルは /usr/local/apache2/conf/httpd.conf である.

  • apache を動作させるユーザ, グループ

    httpd.conf においては apache がどのユーザ, グループの権限で動作する かは「 User 」 および「 Group 」で指定される.

    User www-data
    Group www-data 

    この「 User 」, 「 Group 」に指定されているユーザ, グループが gate.conf における $CGIUSER に指定されているユーザと 一致しなくてはな らない. 相違している場合はどちらかを変更すること.

    $CGIUSER = "www-data"; 
  • gate システム用 CGI 置き場

    httpd.conf 内の「 ScriptAlias 」において以下のように指定されると, /usr/local/apache2/cgi-bin/ に置かれた CGI が HTTP 的に /cgi-bin/ と することで呼び出されることを示す.

    ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/"

    本来は, この「 ScriptAlias 」の下線部分と gate-sys.conf における $CGIBINDIR にて指定されるディレクトリが一致しなければならない. ただ し, 今回はインストール先は /usr/local/gate/lib/cgi-bin とし, そこに置かれたファイルのシンボリックリンクを /usr/local/apache2/cgi-bin/ に置くこととする.

    $BASEDIR = '/usr/local/gate';           # Debian 化されたら /usr
    $CGIBINDIR = "$BASEDIR/lib/cgi-bin";
  • /usr/local/apache2/cgi-bin/ の CGI が動作するために

    /usr/local/apache2/cgi-bin/ 以下の CGI が動作するために, httpd.conf で以下のように記述する.

    <Directory "/usr/local/apache2/cgi-bin/">
        AllowOverride AuthConfig Limit
        Options ExecCGI FollowSymLinks IncludesNoExec
    </Directory>

    設定後に apache2 を再起動する.

デバッグ用ディレクトリの作成

gate-toroku-system でデバッグを行うためのディレクトリとして ~gate/gate_test_dir を作成しておく.

# su gate
$ mkdir ~gate/gate_test_dir

make とインストール

# su gate
$ cd ~gate/gate-toroku-system/
$ perl ./config.pl
$ make

$ exit

$ sudo -s
# cd ~gate/gate-toroku-system
# make install

実行ファイルや man 用ファイル, HTML ファイルは /usr/local/gate 以下にインストールされる. 一方, デバッグモードのため, 設定ファイル群は /home/gate/gate_test_dir/etc/gate/ にインストールされる.

(今回は使用しないが IP 管理用の設定ファイルも同様の場所に gate-ip.conf としてインストールされる).

cgi のシンボリックリンク作成

/usr/local/gate/lib/cgi-bin 以下にインストールされた cgi の シンボリックリンクを /usr/local/apache2/cgi-bin 以下に作成する.

# cd /usr/local/apache2/cgi-bin
# ln -s ../../gate/lib/cgi-bin/gate-*.cgi .

インストールした実行ファイルへのパスの設定

インストールした gate-toroku-system の実行ファイル群へパスを通す.

[EPA]パスの設定 <一般ユーザ用コマンドのパス> /usr/local/gate/bin を, <システム管理用コマンドのパス> /usr/local/gate/sbin を追加する.

インストールしたマニュアルへのパスの設定

/etc/manpath.config に以下の行を追加する. 詳しくは [EPA]パスの設定#man 関連のパスの設定 を参照のこと.

MANDATORY_MANPATH                             /usr/local/gate/man/ja
MANPATH_MAP        /usr/local/gate/bin        /usr/local/gate/man/ja
MANPATH_MAP        /usr/local/gate/sbin       /usr/local/gate/man/ja
MANDB_MAP          /usr/local/gate/man/ja     /usr/local/gate/man/ja

Web インターフェースのチェック

<URL:https://epa.scitec.kobe-u.ac.jp/~gate/> にアクセスし, gate 登録システムのインデックスページが見えるかチェックする. また, そのページからリンクされている [個人申請] などに移動し, CGI が動作していることをチェックする.

最初の保証人ユーザ作成

[個人申請] を参照し, 管理グループの代表者のユーザ登録申請を行なう. 保証人は先につくったユーザ"gate"として登録すること.

/home/gate/userdb/pending の下に登録者のデータベースファイル (申請ログ イン名がついたファイル) が生成されているか確認せよ.

申請が受け付けられた後, 承認を経てはじめてアカウントが生成される. そこ で今回行った申請にも承認を行おう. そのために保証人"gate"の登録システム 用パスワードを設定する. gate ユーザの権限で以下のコマンドを実行せよ.

# su gate
$ cd 
$ htpasswd -c ~gate/.gate gate 

ここで投入したパスワードを用いてユーザ "gate" として保証人の ( [ユーザ登録承認] を用いる ) を行なう. /home/gate/userdb/stable に承認されたユーザのデータベースファ イルが移動しているか確認せよ.

ただし, gate-sys.conf の $USE_DAEMON が以下のように設定されている場合,

$USE_DAEMON = 1;                # 1 がデーモンモード, 0 がクロン

承認時に以下のような警告メッセージが表示される. これは下記の デーモンモードでの運用 で解消されるはずなのでとりあえず ほおっておく.

/usr/local/gate/bin/gate-user-accept: To localhost, connect failed:
   Connection refused at /usr/local/gate/lib/gate-common.pl line ....

アカウント生成 (テスト)

/home/gate/userdb の中にあるデータベースファイルをシステムに反映させる には ルートで /usr/local/gate/lib/gate-daily を起動する.

# perl /usr/local/gate/lib/gate-daily

/home/gate/gate_test_dir/etc 内に存在する passwd, group, shadow, sudoers ファイルが更新され, それぞれ .bk を付加した名前の バックアップ ファイルが生成されるはずである. これらの変更点を確認せよ. たとえば /home/gate/gate_test_dir/etc/passwd.bk から /home/gate/gate_test_dir/etc/passwd への変更点は

$ diff -u /home/gate/gate_test_dir/etc/passwd.bk /home/gate/gate_test_dir/etc/passwd 

コマンドによって確認できる.

また /home/gate/gate_test_dir/home には /home/gate/userdb 以下に存在す るユーザのディレクトリができているはずなので確認する.

デーモンモードでの運用

ユーザ, ホストのデータベースをシステムに反映させる方法として デーモン モードとクロンモードがある. 以下ではデーモンモードで運用する方法を考え る.

  • gate-sys.conf の設定

    /etc/gate/gate-sys.conf 中の $USE_DAEMON 変数が 1 というのを確かめる.

    $USE_DAEMON = 1; 
  • gate-toroku-system 用のポートの作成

    /etc/inetd.conf に以下の一行 (長いけど) を付け足す.

    gate stream tcp nowait root /usr/sbin/tcpd /usr/local/gate/lib/gate-daily -N
  • ポート番号の設定

    /etc/services に以下の行を付け足す.

    gate              8888/tcp          # gate-toroku-system
  • TCP wrappers によるセキュリティ強化

    gate ポートは, 登録サーバにせよその他のサーバにせよ, 登録サーバから のアクセスさえ受け付けられればその役目を果たすので 登録サーバからの みアクセスを受けるのが理想的である. TCP wrappers を使用して, アクセ スを登録サーバからのものに限定する.

    特に EPA サーバは 1 台での運用なので, 自身からのアクセスのみ許容する.

    • /etc/hosts.deny の編集

      /etc/hosts.deny に以下の一行を追加し, まずは全てのホストからの gate ポートへのアクセスを拒否する.

      ALL: PARANOID
      gate-daily: ALL
    • /etc/hosts.allow の編集

      /etc/hosts.allow に以下の一行を追加し, 登録サーバ自身からの アクセスのみは受け付けるようにする.

      gate-daily: 127.0.0.1

    /etc/hosts.deny と /etc/hosts.allow の設定に間違いがないことを確認す る.

    # tcpdmatch gate-daily <登録サーバ以外のホスト> 

    結果, access: denied と表示されればアクセスが正常に拒否されている. 次に, 登録サーバ自身からのアクセスは受け付けられているか確認する.

    # tcpdmatch gate-daily localhost

    結果, access: granted と表示されれば OK.

  • inetd を再起動

    # /etc/init.d/openbsd-inetd restart
  • 確認

    CGI からユーザの申請および認証を行う. 認証して数分後に /home/gate/gate_test_dir/ 以下のシステムファイルが更新されておれば OK.

本気モードで動かす

本気モードで動かす際には, 一度ソースで make しなおす必要がある.

$ cd ~gate/gate-toroku-system
$ make clean

$ vi gate-sys.conf

   $DEBUG_CONFIG = 1;

          を

   $DEBUG_CONFIG = 0;

$ perl ./config.pl
$ make

$ sudo -s
# cd ~gate/gate-toroku-system
# make install

gate-toroku-system の動作確認

ika にて以下のコマンドを実行する

# perl /usr/local/gate/lib/gate-daily

以下のファイルが生成されているか確認

  • /etc/passwd
  • /etc/shadow
  • /etc/group
  • /etc/sudoers

gate-toroku-system ソースの移動

インストールが完了したら, ソースを移動しておいてください. (本来なら不要なので削除してよいですが, 一応バックアップとして).

$ cd /home/gate
$ mv gate-toroku-system gate-toroku-system_2008-04-25
                                           ^^^^^^^^^^
                                           インストールした日付

EPAサーバ構築ドキュメントへ戻る

Last modified:2008/08/01 14:59:57
Keyword(s):
References:[[EPA2007]2007年度サーバ構築ログ] [消えたページ一覧]