[Memo2008][EPA]tako作業メモ(中本)(080731)
- gate-toroku-system のインストールと設定
- quota の設定
[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 の設定ファイルを編集 を見よ.
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 サーバ ユーザ 登録システム から, [更新/変更] をクリックして登録情報の更新ができるかどうか確かめる.
無事更新でき, 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 の設定も 元に戻しておくこと!!
Keyword(s):
References:[[EPA2008]2008年度前期サーバ構築ログ]