IT pass HikiWiki - [Memo2008][EPA]tako作業メモ(中本)(080731) Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

{{toc}}

[((<EPAサーバ構築ドキュメント>)) へ戻る]

= gate-toroku-system のインストールと設定

== 必要なパッケージのインストール

まず, gate-toroku-system に必要なパッケージをインストールする
ため, /etc/apt/sources.list に以下の 2 行を加える.

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-suid, rsync, htroff, cvs, libjcode-perl, libjcode-pm-perl,
libcrypt-passwdmd5-perl, libdatetime-perl, libdatetime-format-strptime-perl

まずはパッケージリストを更新し,

root@tako:~# apt-get update

順次インストールする.

== 作業アカウントの作成

gate-toroku-system の管理用アカウント gate を作成する.
ここで, gate のユーザ ID は 1 〜 999 の間 (システム用ユーザ ID) とする.
また, パスワードは空にする.

# adduser --uid 500 --disabled-passward gate

このとき問われるフルネームは, Administrator of gate-toroku-system とする.

次に, gate グループに gate 開発メンバーを追加する.
開発メンバーは, morikawa, murashin, uwabami, noda とする.
以下は書き方の例である.

# vigr
gate:x:500:morikawa,murashin,uwabami,noda

# vigr -s
gate:!::500:morikawa,murashin,uwabami,noda

== .qmail の設定

/home/gate/.qmail に gate 管理者用メールの転送先を設定する.
まずは gate ユーザになる.

chikuwa2 から gate になるには

$ sudo -u gate -s      (gate になる)

とする. または, root から gate になる. その方法は

$ sudo -s                  (root になる)
# su gate                  (gate になる)
$ cd                       (gate のホームディレクトリに移動)

である.

/home/gate/.qmail を作成し, メールの転送先は EPA 管理者のメールアドレスとする.

$ vi /home/gate/.qmail

ここで, 転送したいメールアドレスが hogehoge@example.jp だとすると,
/home/gate/.qmail の中身は

&hogehoge@example.jp

である.

== gate-toroku-system のインストール

まず, 2007 年度の EPA サーバである ika の /home/gate/ にある
gate-toroku-system.tar.gz を tako にコピーする.

$ scp ユーザ名@ika.epa.scitec.kobe-u.ac.jp:/home/gate/gate-toroku-system.tar.gz .

今, chikuwa2 のホームディレクトリにコピーしたので, /home/gate/ にコピーする.

chikuwa2@tako:~$ cp gate-toroku-system.tar.gz /home/gate/

すると

cp: cannot create regular file `/home/gate/gate-toroku-system.tar.gz': Permission denied

と怒られるので, gate ユーザになってからコピーする.

chikuwa2@tako:~$ sudo -u gate -s
gate@tako:~$ cp gate-toroku-system.tar.gz /home/gate/

ここで, $ sudu -u gate -s で gate ユーザになったのでホームディレクトリは
/home/chikuwa2/ のままである. 以下のようにいったん exit してもう
一度 gate ユーザになる.

gate@tako:~$ exit
chikuwa2@tako:~$ sudo -s
root@tako:~# su gate
gate@tako:/home/chikuwa2$ cd

次に, gate-toroku-system.tar.gz を展開する.

$ tar -xvf gate-toroku-system.tar.gz

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

これは, すでに編集済みのものが得られているのでほとんど編集の必要はない.
しかし "ika" を "tako" に編集する必要はある. ちなみにここで編集された設定
ファイルは

* gate-sys.conf
* include/gate.conf
* include/gate-user.conf
* include/gate-ip.conf (IP 管理をする場合のみ)
* include/gate-local.pl

である. 各ファイルの中身は ((<[EPA2008]gate-toroku-systemのインストールと設定#gate-toroku-system の設定ファイルを編集|[EPA2008]gate-toroku-systemのインストールと設定#gate-toroku-system の設定ファイルを編集>)) を見よ.

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

gate-toroku-system/html 内には以下のファイルがある.

CVS               group-sudo.sr            index-passwd.sr  ip-get.sr    rule.sr
Makefile          index-ip.sr              index-user.sr    ip-info.sr   user-authkey.sr
group-koumoku.sr  index-passwd-authkey.sr  index.sr         replacer.pl  user-koumoku.sr

とりあえずのところこれらは編集する必要はない.

== 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 を再起動する.
  
   # /etc/init.d/apache2 restart
  
  ここで, apache を
  
   #/usr/local/apache2/bin/apachectl -k start
  
  と直接起動させていたときは, プロセスを終了させておく必要がある.

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

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

# 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 .

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

=== sh, bash

以下の /etc/bash.bashrc の<一般ユーザ用コマンドのパス>に /usr/local/gate/bin を追加する.

# add PATH for local installed softwares
PATH="${PATH}:<一般ユーザ用コマンドのパス>"

以下の /etc/bash.bashrc の<システム管理用コマンドのパス>に /usr/local/gate/sbin を追加する.

# add PATH for local installed softwares (for root)
if [ "`id -u`" -eq 0 ]; then
   PATH="${PATH}:<システム管理用コマンドのパス>"
fi

export PATH

=== csh, tcsh

以下の /etc/csh.cshrc の<一般ユーザ用コマンドのパス>に
/usr/local/gate/bin を追加する.

# add PATH for local installed softwares
set path = ($path /usr/local/bin /usr/bin /bin <一般ユーザ用コマンドのパス>)

以下の /etc/csh.cshrc の<システム管理用コマンドのパス>に
/usr/local/gate/sbin を追加する.

# add PATH for local installed softwares (for root)
if ( "`id -u`" == 0 ) then
         set path = ($path /usr/local/sbin /usr/sbin /sbin <システム管理用コマンドのパス>)
endif

=== zsh

以下の /etc/zsh/zshenv の<一般ユーザ用コマンドのパス>に
/usr/local/gate/bin を追加する.

# add PATH for local installed softwares
export PATH=<一般ユーザ用コマンドのパス>:$PATH

以下の /etc/zsh/zshenv の<システム管理用コマンドのパス>に
/usr/local/gate/bin を追加する.

# add PATH for local installed softwares (for root)
if [ "`id -u`" -eq 0 ]; then
         export PATH=<システム管理用コマンドのパス>:$PATH
fi

# delete duplicated path setting
typeset -U path


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

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

== ika から tako へユーザ情報をコピーする

=== /etc/shadow のコピー

ika の /etc/shadow 内のユーザ情報を tako の /etc/shadow にコピーする.

== gate-toroku-system の動作確認

試しに nakamoto の登録情報を更新してみる.

=== パスワードの設定

$ htpasswd ~nakamoto/.gate nakamoto

とすると新しいパスワードをきかれるので入力する.

Updating password for user nakamoto

と表示されれば成功.

=== 登録情報の更新

((<EPA サーバ ユーザ 登録システム|URL:https://tako.epa.scitec.kobe-u.ac.jp/~gate/index.html>)) から, [更新/変更] をクリックして登録情報の更新ができるかどうか確かめる.

無事更新でき, nakamoto と gate にメールが送信されれば OK.


= quota の設定

== 目的

各ユーザのディスク使用量を

* ソフトリミット 10 GB
* ハードリミット 12 GB

に制限するため, quota を導入する.

== kernel が quota に対応しているか確認

以下のコマンドを入力する.

$ grep CONFIG_QUOTA /boot/config-2.6.18-5-686

CONFIG_QUOTA=y と表示され, 対応していることが確認された.

== quota コマンドが入っているか確認

* 方法1: $ which quota
  
  /usr/bin/quota のように quota コマンドのパスが表示されれば入っている.
  
  メッセージが返ってこなければ入っていない.

* 方法2: $ dpkg -l | grep quota
  
  dpkg -l でパッケージの一覧を表示し, "quota" を含む行を表示する.
  
  表示されなければ入っていない.

quota が入っていないことが確認された.

== quota のインストール

root 権限を得る (epaadmin グループに入っているユーザのみ可能).

$ sudo -s

quota パッケージをインストールする.

# apt-get install quota

== /etc/fstab の編集

# vi /etc/fstab

で, 以下のように home を含むファイルシステム (ここでは /dev/sda6) の
<options> 項目に usrquota を追加する.

# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
/dev/sda1       /               ext3    defaults,errors=remount-ro 0       1
/dev/sda6       /home           ext3    defaults,usrquota        0       2
/dev/sda5       none            swap    sw              0       0
/dev/hda        /media/cdrom0   udf,iso9660 user,noauto     0       0
/dev/fd0        /media/floppy0  auto    rw,user,noauto  0       0

== quota の記録ファイル (aquota.user) の作成

/home ディレクトリに移動して aquota.user ファイルを作成する.

# cd /home
# touch aquota.user

aquota.user ファイルのパーミッションを以下のように設定する.

# chmod 600 aquota.user

== システムの再起動

/etc/fstab の情報を反映させるためにシステムを再起動する.

# reboot

== gate ユーザの quota 設定

gate-toroku-system は, 新規ユーザの home ディレクトリを
作成した際に gate ユーザに設定された quota を新規ユーザに
適用してくれるので, gate ユーザに quota を設定する.

gate ユーザにソフトリミット 10 GB, ハードリミット 12 GB の
quota をかける.

# edquota gate

vi が立ち上がるので, 以下のように編集する. 容量のリミットは,
soft 項目 10000000 (単位は KB), hard 項目 12000000 (単位は KB).
ファイル数のリミットは, soft 項目も hard 項目も 0 (単位はファイル数).

Disk quotas for user gate (uid 500):
Filesystem                   blocks       soft       hard     inodes     soft     hard
/dev/sda6                      2628   10000000   12000000        493        0        0

== 既存ユーザの quota 設定

gate ユーザの quota をすでに /home に存在するすべてのユーザに適用する.

# cd /home
# edquota -p gate `gate-user-list stable`

ちなみに,

# repquota /home

とすると, 各ユーザの quota 情報が表示される.

== ディスクの使用状態を見る

各ユーザがディスクの使用状態を見るには, 以下のコマンドを打つ.

$ quota

ちなみに, root 権限を持つユーザが

# quota [ユーザ名]

と打つと, [ユーザ名] のディスクの使用状態が見れる.

== ソフトリミット超過の猶予期間

デフォルトでは 7 日間である. 変更する場合は edquota コマンドの
-t, -T オプションを使って変更できる. 詳しくは man を参照.

== 動作確認

試験のために一時的に適当なユーザの quota の設定を ソフトリミット 200 MB,
ハードリミット 250 MB にする.

以下のように dd コマンドを用いて 200 MB のソフトリミットを越えるサイズの
ファイルを作成し, 警告されるかどうか確認する.

$ dd if=/dev/zero of=tmp bs=1000k count=200

/dev/zero を入力ファイルとして, tmp を出力ファイルとして読み書きする.
bs は一度に行う読み出し書き込みのサイズ, count は読み出し書き込みの回
数である. (このようにすると, 1000 kbytes × 200 のサイズのファイル tmp
が作成される.)

警告されると以下のように表示される.

sda6: warning, user block quota exceeded.
200+0 records in
200+0 records out
204800000 bytes (205 MB) copied, 0.452723 seconds, 452 MB/s

tmp を削除し, 同様にハードリミットを越えるサイズのファイルを作成し,
警告されるかどうか確認する.

$ dd if=/dev/zero of=tmp bs=1000k count=300

警告されると以下のように表示される.

sda6: warning, user block quota exceeded.
sda6: write failed, user block limit reached.
dd: writing `tmp': ディスク使用量制限を超過しました
250+0 records in
249+0 records out
255713280 bytes (256 MB) copied, 0.634665 seconds, 403 MB/s

試験が終われば忘れずにファイルを削除し, quota の設定も
元に戻しておくこと!!