IT pass HikiWiki - [Memo2012][ITPASS]gate-toroku-systemのインストールと設定 Diff
- Added parts are displayed like this.
- Deleted parts are displayed
like this.
{{toc}}
[((<ITPASSサーバ構築・運用ドキュメント>)) へ戻る]
= 概要
神戸大学 地球惑星科学専攻/学科 ITPASS サーバのユーザ管理には gate-toroku-system (神戸 ITPASS サーバ用) を用いる.
このソフトウェアは元々北大理学の EP計算機ネットワーク 技術支援グループ で開発されたユーザ管理用ソフトウェアで,
ITPASS サーバではこれを ITPASS サーバ用に修正を行って導入している (修正したものを以下では神戸版 gate と呼ぶ).
なお, 現在の gate-toroku-system 最新版は電脳サーバで管理されている.
また神戸版 gate は, old の gate_toroku_system を当該年度の初版として cvs で管理している.
ここでは, 神戸版 gate のインストールおよび設定と, cvs 管理のための準備を行う.
なお, サーバ運用中の gate の開発やメンテナンスについて ((<[ITPASS2011a]gate-toroku-systemの開発とメンテナンス>)) にも目を通しておくこと.
= 作業用アカウントの作成
* gate-toroku-system 管理用アカウント: gate を作成した.
ユーザ ID は 500 にする (1 -- 999 の間 (システムユーザ領域) であれば他の番号でもよい).
# adduser --uid 500 --disabled-password gate
登録の際, フルネームは「Administrator of gate-toroku-system」とした.
* gate グループに gate 管理者を加えた.
gate 管理者は, ((<[ITPASS2011a]gate-toroku-systemの開発とメンテナンス>)) に書かれている開発メンバーと, gate のインストールを行ったメンバーとした.
2012年度の管理者.
# vigr
gate:x:500:murashin,noda,daisuke,nobesaka
# vigr -s
gate:!:::murashin,noda,daisuke,nobesaka
= 必要なソフトウェアのインストール
gate に必要なパッケージをインストールした.
== パッケージの確認
dpkg コマンドを用いて, 必要なパッケージがインストールされていることを確認した ( ((<[ITPASS2011a]debianパッケージの引き継ぎ>)) でインストール済みのはずである).
以下に示す実行例の "hoge" をパッケージ名に読み替えて実行した.
$ dpkg -l | grep hoge
* 必要なパッケージ: perl-suid, rsync, wget, htroff, cvs, libjcode-pm- perl, libcrypt-passwdmd5-perl, libdatetime-perl, libdatetime-format-strptime-perl
全てインストールされていることを確認した.
実行ファイルや man 用ファイル, HTML ファイルは
/usr/local/gate 以下にインストールされる.
== パッケージが不足している場合
例えば,
# apt-get install htroff
と実行してパッケージが存在しないと表示されたなら, ソースパッケージを取得するために, ひとまず /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/
^^^^^^^
に変更する. この状態で
# apt-get update
# apt-get source htroff
を実行すると,
htroff-2.0(ディレクトリ), htroff_2.0.diff.gz, htroff_2.0-3.dsc, htroff_2.0.orig.tar.gz
を得る. これらを用いてバイナリパッケージを作成する.
# cd htroff-2.0
# dpkg-buildpackage -us -uc -b -rfakeroot
を実行. オプションは以下の通り.
* -us -> ソースに署名しない
* -uc -> changelogに署名しない
* -b -> バイナリのみ作成
* -r -> root権限取得コマンド(fakerootは擬似的にroot権限を使えるコマンド)
その結果,
htroff_2.0-3_all.deb, htroff_2.0-3_amd64.changes
が得られる.
何のエラーも出なければ依存関係を満たしている.
後はインストールするだけ,
# dpkg -i htroff_2.0-3_all.deb
これで, htroff がインストールできる.
最後に, /etc/apt/sources.list の中の二行を元に戻し, update しておく.
# deb http://www.gfd-dennou.org/arch/cc-env/Linux/debian-dennou squeeze/
# deb-src http://www.gfd-dennou.org/arch/cc-env/Linux/debian-dennou squeeze/
# apt-get update
= gate ユーザ宛のメールを転送する
/home/gate/.qmail に管理者のメールアドレスを書き込んだ.
# vi /home/gate/.qmail
&itpadmin
= gate-toroku-system のソースの取得と展開
old の /home/gate から gate-toroku-system のソース (gate-toroku-system.tar.gz)
を new の /home/gate にコピーし, 展開した.
展開は以下のコマンドで行える.
$ tar xvfz gate-toroku-system.tar.gz
= 設定ファイルの編集
== gate.conf
old の /etc/gate/ の下から gate.conf をコピーし /etc/gate/ の下においた.
gate.conf 内の $DBSERVER を以下のように編集した.
$DBSERVER = "new-itpass.scitec.kobe-u.ac.jp";
また, %DB_SHARE_HOSTS が以下のようになっていることを確認した.
%DB_SHARE_HOSTS = (
'ika-itpass.scitec.kobe-u.ac.jp','wheel:itpadmin'
# 'dennou-k.kugi.kyoto-u.ac.jp','wheel:dcstaff',
# 'dennou-h.ees.hokudai.ac.jp','wheel:dcstaff',
# 'dennou-q.geo.kyushu-u.ac.jp','wheel:dcstaff'
);
== gate-user.conf
$WHEELUSER が 'itpadmin' になっているか確認した.
$WHEELUSER = 'itpadmin';
= gate-toroku-system CGI を動作させるための apache2 設定
CGI の動作に関して, apache2 の設定を確認する.
* apache を動作させるユーザ, グループ
apache がどのユーザ, グループの権限で動作するかは /usr/local/apache2/conf/httpd.conf 内の「 User 」 と「 Group 」で指定される.
以下はその一例.
User www-data
Group www-data
* 「 User 」,「 Group 」に指定されているユーザやグループが gate.conf の $CGIUSER に指定されているユーザと一致していることを確認した.
$CGIUSER = "www-data";
* /usr/local/apache2/cgi-bin/ の CGI が動作するために /usr/local/apache2/conf/httpd.conf で下記の記述があることを確認した.
<Directory "/usr/local/apache2/cgi-bin/">
AllowOverride AuthConfig Limit
Options ExecCGI FollowSymLinks IncludesNoExec
</Directory>
= make とインストール
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 以下にインストールされる.
(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 の実行ファイル群へパスを通した.
((<[ITPASS2011a]パスの設定>)) の ((* <一般ユーザ用コマンドのパス> *)) に ((*/usr/local/gate/bin*)) を, ((* <システム管理用コマンドのパス> *)) に
((*/usr/local/gate/sbin*)) を追加した.
= マニュアルへのパスの設定
((<[ITPASS2011a]パスの設定#man 関連のパスの設定>)) を参照し, /etc/manpath.config に以下の行を追加した.
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 インターフェースのチェック
* https://new-itpass.scitec.kobe-u.ac.jp/~gate/ にアクセスし, gate 登録システムのインデックスページが見えるか確認した.
* 上記のページからリンクされている個人申請 (https://new-itpass.scitec.kobe-u.ac.jp/cgi-bin/gate-user-apply.cgi) などに移動し,
CGI が動作しているかチェックした.
= ユーザの作成
== root ログインの準備
# 以下の 2 つの理由から, ログインの向きをこれまでと逆にした.
#
# * 作業内容を整理する
# * /home 領域の rsync においては ika -> tako にログインして作業することにしている.
# * 運用中のサーバにおいて root ログインを許可するリスクよりもまだ運用していないサーバで許可するリスクの方が (個人領域のデータ量からみると)
# 小さそう
# * セキュリティの面では基本システムのインストールで同じレベルまでいってるんじゃないかと思うと.
以下の作業では old から new へ root ログインする必要がある.
そのため, root ログイン用の鍵の生成・設置と root ログインの許可を行った.
=== 鍵の生成と設置
マニュアル通りに進めば root ログイン用の鍵はこの段階で作成・設置するはずであるが, 構築作業の何らかの段階で既に鍵を設置している場合は
以下の手順の確認のみ行う.
* old に残った, 再構築前の new の情報を削除
old の /root/.ssh/known_hosts の中の new に該当する行を削除した
(何番目が new に該当するかは old から new へログインを試みたときのエラーメッセージを読めば分かる.)
* ((*old で*)) 鍵を生成した
* 鍵の置き場とファイル名は, デフォルトの /root/.ssh/id_dsa とした
* パスフレーズは空にした
old-itpass# ssh-keygen -t dsa
* 公開鍵の設置
old で作成した公開鍵 old:/root/.ssh/id_dsa.pub を new:/root/.ssh/authorized_keys にコピーした.
=== root ログインの許可
* ((<[ITPASS2011a]sshのインストールと設定#パスワード認証の拒否と root ログインの拒否設定>)) を参考に ((*new への*)) root ログインの許可を設定した
PermitRootLogin yes
== ユーザデータベースのコピー
old の /home/gate/userdb を new の /home/gate/userdb にコピーした
* まず, -n オプションを付けて rsync の動作チェックを行った.
いきなり rsync コマンドを実行すると予期せぬ間違い (転送元と転送先の設定を間違って, 転送先のファイルを全て消してしまう等) が起こりうるため,
まずは rsync コマンドに -n オプションをつけて実行すること.
-n オプションをつけて実行すると, 実際のファイル操作は行わずに, 操作されるはずのファイルのリストが出力された.
old-itpass# rsync -n -av --delete /home/gate/userdb/ new-itpass:/home/gate/userdb/
* 実際にコピーを行った
old-itpass# rsync -av --delete /home/gate/userdb/ new-itpass:/home/gate/userdb/
== root ログインの設定を戻す
new への root ログインを不許可に設定し直した
PermitRootLogin no
== /etc/shadow のコピー
gate-toroku-system では, /etc/shadow に存在しないユーザがデータベース (/home/gate/userd) に居た場合, 初めてユーザを作成したと認識して
保証人にメールを送信するようになっている.
/home 領域を old からコピーする際 (後日に行う) にこの理由によって大量のメールが送信されないよう, 先に old の /etc/shadow の一部を new の
/etc/shadow にコピーしておいた.
* old の /etc/shadow のうち UID 1000 〜 29999 の gate-toroku-system で管理されるユーザーについて, そのアカウント名の行をコピーして new の
/etc/shadow のファイルに((*追加した*)). 各ユーザに対する uid は /etc/passwd に書かれているので参照した.
# lv /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
^ ここが uid
== 最初の保証人ユーザ作成
* 個人申請 (https://new-itpass.scitec.kobe-u.ac.jp/cgi-bin/gate-user-apply.cgi) にアクセスし, ユーザ登録申請を行った (テスト用なので適当なユーザー testuser でよい)
* 保証人は先に作ったユーザ "gate" とした.
* 作業完了後にユーザーは削除するのでパスワードを覚えておくこと
* 登録申請後, /home/gate/userdb/pending の下に申請者の (申請ログイン名がついたファイル) が生成されているか確認した
* 承認を行うために保証人 "gate" の登録システム用パスワードを設定した
* gate ユーザに成り代わり, 登録システム用パスワードを設定した
# su gate
$ cd
$ htpasswd -c ~gate/.gate gate
* ここで設定したパスワードを使い, "gate" ユーザとして登録申請中のテストユーザを承認した
* https://new-itpass.scitec.kobe-u.ac.jp/cgi-bin/gate-user-accept.cgi にアクセスして行った
* その後, 承認したテストユーザのデータベースファイルが /home/gate/userdb/stable へ移動していることを確認した
= アカウント生成
/home/gate/userdb の中にあるデータベースファイルをシステムに反映させるために, root 権限で /usr/local/gate/lib/gate-daily を実行した.
* gate-daily は /etc/gate/gate.conf を参照するため, 起動前に gate.conf 内の 'old-itpass' を 'new-itpass' と書き換えた
* その後以下を実行した
# perl /usr/local/gate/lib/gate-daily
/etc の passwd, group, shadow, sudoers ファイルが更新され, それぞれ .bk を付加した名前のバックアップファイルが生成された.
* /etc/{passwd, group, shadow} に, 登録したユーザの情報が新たに書き込まれていることを確認した.
また /home に /home/gate/userdb 以下に存在するユーザのディレクトリができていることを確認した.
= bind の所有グループの変更
((<[ITPASS2011a]bindのインストールと設定#パーミッションの設定>)) にあるように,
bind 関連のファイルの所有グループを itpadmin に変更した.
= /etc/aliases の変更
/etc/aliases の root に対応するユーザは,
インストール時に作ったユーザになっているはずである.
test という名前のユーザを作った場合は, 以下の行が存在するはずである.
root: test
これを itpadmin に書き換えた.
root: itpadmin
設定を反映するため,
# newaliases
を実行した.
ここで許可がないというメッセージが出るかもしれない.
/usr/bin/newaliases は /usr/sbin/exim4 のシンボリックリンクであり,
exim4 に実行権限が付与されていないためである.
ここでは MTA に exim4 ではなく qmail を使うため,
実行権限を付与する必要はない.
/etc/aliases を書き換えると newaliases コマンドを実行するのは
一般的な操作であるため, ここではあえてマニュアルに残しておく.
= デーモンモードでの運用
ユーザ, ホストのデータベースをシステムに反映させるため, デーモンモードでの運用の設定を行う.
* 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 wrapper によるセキュリティ強化
gate ポートは, 登録サーバからのアクセスさえ受け付けられればその役目を果たす.
そのため, TCP wrapper を使用してアクセスを登録サーバからのものに限定する.
特に ITPASS サーバは 1 台での運用なので, 自身からのアクセスのみ許可する.
* /etc/hosts.deny の編集
まず, 全てのホストからの gate ポートへのアクセスを拒否するよう /etc/hosts.deny に以下の一行を追加した.
gate-daily: ALL
* /etc/hosts.allow の編集
登録サーバ自身 (new) からのアクセスは許可するよう, /etc/hosts.allow に以下の一行を追加した.
gate-daily: 127.0.0.1
* 登録サーバ以外のホストからのアクセスが拒否されるか確認した.
以下は google.com で試した場合.
root@new-itpass:/home/gate# tcpdmatch gate-daily google.com
client: hostname nrt04s01-in-f99.1e100.net
client: address 66.249.89.99
server: process gate-daily
matched: /etc/hosts.deny line 21
access: denied
client: hostname nrt04s01-in-f104.1e100.net
client: address 66.249.89.104
server: process gate-daily
matched: /etc/hosts.deny line 21
access: denied
denied とあれば拒否されている. 拒否されていた.
次に, 登録サーバ自身からのアクセスが許可されているか確認した.
root@new-itpass:/home/gate# tcpdmatch gate-daily localhost
client: hostname localhost
client: address 127.0.0.1
server: process gate-daily
matched: /etc/hosts.allow line 14
access: granted
granted とあれば許可されている. 許可されていた.
* inetd を再起動した
# /etc/init.d/openbsd-inetd restart
Restarting internet superserver: inetd.
* 確認
CGI から適当なユーザの申請および認証を行った. 認証して数分後に /etc 以下のシステムファイル(passwd ファイルと shadow ファイル)が更新されていることを確認した.
= gate-toroku-system ソースの移動
ソースのバックアップを残した.
#* 運用において /home/gate/gate-toroku-system は必要ないが,
* 以下のように名前を変更してコピーしておいた
cp -r gate-toroku-system gate-toroku-system_2011-10-24
^^^^^^^^^^^^^ インストールした日付
= doc ディレクトリのシンボリックリンク作成
/usr/local/gate/ にある doc ディレクトリのシンボリックリンクを/home/gate/public_html/ に作成した.
#cd /home/gate/public_html/
#ln -s /usr/local/gate/doc
# ls -l
root@new-itpass:/home/gate/public_html# ls -l
合計 64
lrwxrwxrwx 1 root root 19 2010-10-15 19:40 doc -> /usr/local/gate/doc
= 日々の開発・メンテナンスのための準備
== 必要なパッケージのインストール
以下のコマンドで, 開発やメンテナンスに必要なパッケージをインストールした.
以下の perl 関連のパッケージ名は Debian GNU/Linux 6.0 (コードネーム squeeze) の場合のものであり, Debian のバージョンによって変更される可能性が高いので
注意すること.
# apt-get install cvs
# apt-get install kcc
# # apt-get install qkc
# qkc ないので nkf に書き換え
# apt-get install nkf
# apt-get install libjcode-pm-perl
# apt-get install libcrypt-passwdmd5-perl
# apt-get install libdatetime-perl
# apt-get install libdatetime-format-strptime-perl
== 余分なファイルの削除, 文字コードの修正
* 新たに cvsroot を作成するために, gate-toroku-system 内の余計なディレクトリやファイルを削除した.
* ls -aR でディレクトリ内のファイルを眺め, 不要なドットファイルなども削除しておいた.
$ cd gate-toroku-system
$ rm -frv `find -name CVS`
* 文字コードを 1 種類に統一したいため, kcc で文字コードのチェックを行った.
* ここでは EUC に統一することを考えているので, 異なるものがある場合には nkf で変更すること. 異なるものはなかった.
$ kcc -c `find -name '*'`
:
./make-smtppasswd/Makefile: ASCII
./make-smtppasswd/gate-make-smtppasswd.PL: 7-bit JIS [ESC$B, ESC(B]
./user-status/gate-user-status.PL: EUC
./user-status/Makefile: ASCII
$ nkf -e -Lu -d ./make-smtppasswd/gate-make-smtppasswd.PL
== CVS リポジトリの作成
# su gate
$ umask 002
$ cd
$ cvs -d /home/gate/cvsroot init
作成した.
== グループ書き込み許可の設定
上記で umask などの設定をおこなったものの, s ビットを立てるなど, パーミッションの設定が必要となる. また cvs init コマンドで作成した
ディレクトリやファイルの中にはグループ書き込み権限が無いものもあるので, 以下で設定した.
: リポジトリ cvsroot パーミッションの設定
cvsroot 以下で作成されるファイル, ディレクトリのグループを gate にするため, cvsroot に s ビットを立て, 書き込み権限を与えた.
念のためにグループも gate に設定した.
$ chmod g+s cvsroot
$ chmod g+w cvsroot
$ chgrp gate cvsroot
: 管理用ディレクトリ CVSROOT 内のパーミッションの設定
cvsroot が作成されれば, そのリポジトリに関する CVS の動作を制御する CVSROOT ディレクトリも作成されているはずである.
このディレクトリ, およびそれ以下の特定のファイルに関してグループの変更と書き込み権限変更をおこなった.
* CVSROOT ディレクトリ本体
グループを gate とし, グループに書き込み権限を与えた.
(これは少しアンセキュアな方針かもしれない. よりセキュアな方法として, 代表的な管理者 1 人にのみ書き込み権限を与えるという方針もあり得るだろう).
$ cd cvsroot
$ chgrp gate CVSROOT
$ chmod g+s CVSROOT
$ chmod g+w CVSROOT
* history, val-tags へグループ書き込み権限を与えた
CVSROOT 以下にある history, val-tags にグループ書き込み権限を与えた. (グループは既に gate であると仮定している).
なお, history とはこのリポジトリ以下のプロジェクトに対して行なわれた checkout, commit, rtag, update, release を記録しているファイルであり, cvs history コマンドで見ることが出来る. (動作の詳細は cvs history -x コマンドを参照のこと).
ここではグループ gate で開発することを念頭に置くため, グループに書き込み権限を与えた.
$ cd CVSROOT
$ chmod g+w history
val-tags は検索を高速化するために, 有効なタグ名をキャッシュしているファイルである.
GATE プロジェクトではタグも使用するので, これにもグループ書き込み権限を与えた.
$ chmod g+w val-tags
== gate-toroku-system プロジェクト開始
* gate-toroku-system ディレクトリ内に移動し, cvs import でプロジェクトを開始した.
# su gate
$ umask 002
$ cd gate-toroku-system
$ export CVSROOT=/home/gate/cvsroot
$ cvs import -m "gate-toroku-system" gate-toroku-system gate Initial
=== プロジェクトのパーミッションの確認
プロジェクトのディレクトリのパーミッションを確認した.
$ ls -l /home/gate/cvsroot
drwxrwsr-x 3 gate gate 4096 2007-08-15 17:18 CVSROOT
drwxrwsr-x 39 gate gate 4096 2007-08-15 17:44 gate-toroku-system
上記のようにグループが gate で権限が rws の場合は問題ない. もしそうでないのなら, 以下のコマンドでグループとパーミッションを変更すること.
$ chgrp gate gate-toroku-system
$ chmod g+s gate-toroku-system
$ chmod g+w gate-toroku-system
なお, もしも gate-toroku-system が上記のようなパーミッションになっていなかった場合, それよりも下層ディレクトリのパーミッションもそれと同様な
可能性がある.
それらに関してもグループとパーミッションを設定すること. 調べるには以下のコマンドが便利であろう.
$ cd /home/gate/cvsroot/gate-toroku-system
$ ls -dl `find -type d`
プロジェクト以下にある「ファイル」に関しては (グループは gate である必要があるが) パーミッションは -r--r--r-- で問題ない.
cvs コマンドを介せば, 正しく commit, add, remove などが可能である.
== CVS リポジトリのカスタマイズ
<URL:http://www.gfd-dennou.org/library/cc-env/cvs/> を参考に, 以下の作業を行う. 作業手順に関しては以下を参照のこと.
* cvs リポジトリのカスタマイズ
* commit をメール通知する設定
* CVSROOT/loginfo に以下の一行を追加した
DEFAULT (echo ""; id; echo %{sVv}; date; cat) | mail -s gate-toroku-system-commit gate
* バイナリファイルを安全に登録するために
* CVSROOT/cvswrappers に以下の行を追加した.
# Treat Image and Archive and Data file as Binary Data
*.gif -k 'b'
*.GIF -k 'b'
*.jpg -k 'b'
*.JPG -k 'b'
*.jpeg -k 'b'
*.JPEG -k 'b'
*.png -k 'b'
*.PNG -k 'b'
*.tif -k 'b'
*.TIF -k 'b'
*.tiff -k 'b'
*.TIFF -k 'b'
*.xpm -k 'b'
*.XPM -k 'b'
*.pbm -k 'b'
*.PBM -k 'b'
*.ico -k 'b'
*.ICO -k 'b'
*.eps -k 'b'
*.EPS -k 'b'
*.o -k 'b'
*.O -k 'b'
*.a -k 'b'
*.A -k 'b'
*.mod -k 'b'
*.MOD -k 'b'
*.nc -k 'b'
*.NC -k 'b'
*.obj -k 'b'
*.OBJ -k 'b'
*.ai -k 'b'
*.AI -k 'b'
*.psd -k 'b'
*.PSD -k 'b'
*.fla -k 'b'
*.FLA -k 'b'
*.swf -k 'b'
*.SWF -k 'b'
*.dvi -k 'b'
*.DVI -k 'b'
*.pdf -k 'b'
*.PDF -k 'b'
*.bz2 -k 'b'
*.BZ2 -k 'b'
*.gz -k 'b'
*.GZ -k 'b'
*.tar -k 'b'
*.TAR -k 'b'
*.tgz -k 'b'
*.TGZ -k 'b'
*.tar.gz -k 'b'
*.TAR.GZ -k 'b'
*.cab -k 'b'
*.CAB -k 'b'
*.lzh -k 'b'
*.LZH -k 'b'
*.zip -k 'b'
*.ZIP -k 'b'
*.sea -k 'b'
*.SEA -k 'b'
*.dat -k 'b'
*.DAT -k 'b'
*.ppt -k 'b'
*.PPT -k 'b'
*.doc -k 'b'
*.DOC -k 'b'
*.xls -k 'b'
*.XLS -k 'b'
* euc のファイルのみ登録するには
* ((<URL:http://www.gfd-dennou.org/library/cc-env/cvs/customize/cvs-eucfile.htm>)) を参考に作業した.
* commit メッセージを euc のみに
* ((<URL:http://www.gfd-dennou.org/library/cc-env/cvs/customize/cvs-eucmsg.htm>)) を参考に作業した.
なお, メール通知の際の宛先は ITPASS サーバの gate-toroku-system 開発グループ とし, ファイルの文字コードは EUC とする.
= gate-db-to-ezmlm の設定
((*この作業は, ezmlm がインストールされているのを確認した上で行う.*))
root になりかわり, /usr/local/gate/bin/gate-db-to-ezmlm の「0. 実行ファイル, ドメインの指定」の項目を以下のように変更した.
変更前
$domainname='gfd-dennou.org';
$ezmlmlist='/usr/bin/ezmlm-list';
$ezmlmsub='/usr/bin/ezmlm-sub';
$ezmlmunsub='/usr/bin/ezmlm-unsub';
変更後
$domainname='itpass.scitec.kobe-u.ac.jp';
$ezmlmlist='/usr/local/ezmlm/bin/ezmlm-list';
$ezmlmsub='/usr/local/ezmlm/bin/ezmlm-sub';
$ezmlmunsub='/usr/local/ezmlm/bin/ezmlm-unsub';
= 動作確認
以下は root のパスワード所有者と共に作業をしなければいけないため, 後日作業を行った.
== 概要
((<ITPASS サーバユーザ登録システム|URL:https://itpass.scitec.kobe-u.ac.jp/~gate/>))
は, 情報の更新時に
設定ファイルである gate.conf, gate-user.conf などをもとに
/etc/sudoers を書き換える.
設定ファイルに間違いがあると
itpadmin グループ所属ユーザでさえ root になれなくなる.
問題の詳細については
((<[Memo2010][ITPASS] gate 設定ファイル修正ログ>))
を参照されたい.
本稼動時にこれが起こるのを防ぐため,
予め動作確認を行い, 設定ファイルの修正を行う.
== 確認作業
((*設定が間違っている場合スーパーユーザーになれなくなるため, root のパスワードを知っている管理者と共に作業すること.*))
まず
((<ITPASS サーバユーザ登録システム|URL:https://itpass.scitec.kobe-u.ac.jp/~gate/>))
のページから登録情報の更新をした.
その後 /var/log/syslog を見て gate が作動したことを確認した.
更新をした時刻に以下のような行があるはずである.
Mar 25 17:20:00 ika-itpass gate-daily[15704]: connect from 127.0.0.1 (127.0.0.1)
また, 同時刻に sudoers ファイルが書き換えられているか確認した.
$ ls -la /etc/sudoers
-r--r----- 1 root root 490 2012-03-25 17:20 /etc/sudoers
sudoers ファイルに以下の行があることを確認する.
$ sudo less /etc/sudoers
(省略)
%itpadmin ALL=(ALL) ALL
(省略)
確認したが,
%itpadmin ALL=(itpadmin) ALL
となっていたため, 修正した.
念のため, itpadmin グループのユーザが
実際に root になれることを確認した.
もし失敗する場合は ((<URL:#設定ファイルの編集>)) の部分の
設定を見直すこと.
== 参考文献
* ((<[Memo2010][ITPASS] gate 設定ファイル修正ログ>))
* ((<man gate-conf(5)|URL:https://itpass.scitec.kobe-u.ac.jp/~gate/doc/gate-conf.htm>))
[((<ITPASSサーバ構築・運用ドキュメント>)) へ戻る]
[((<ITPASSサーバ構築・運用ドキュメント>)) へ戻る]
= 概要
神戸大学 地球惑星科学専攻/学科 ITPASS サーバのユーザ管理には gate-toroku-system (神戸 ITPASS サーバ用) を用いる.
このソフトウェアは元々北大理学の EP計算機ネットワーク 技術支援グループ で開発されたユーザ管理用ソフトウェアで,
ITPASS サーバではこれを ITPASS サーバ用に修正を行って導入している (修正したものを以下では神戸版 gate と呼ぶ).
なお, 現在の gate-toroku-system 最新版は電脳サーバで管理されている.
また神戸版 gate は, old の gate_toroku_system を当該年度の初版として cvs で管理している.
ここでは, 神戸版 gate のインストールおよび設定と, cvs 管理のための準備を行う.
なお, サーバ運用中の gate の開発やメンテナンスについて ((<[ITPASS2011a]gate-toroku-systemの開発とメンテナンス>)) にも目を通しておくこと.
= 作業用アカウントの作成
* gate-toroku-system 管理用アカウント: gate を作成した.
ユーザ ID は 500 にする (1 -- 999 の間 (システムユーザ領域) であれば他の番号でもよい).
# adduser --uid 500 --disabled-password gate
登録の際, フルネームは「Administrator of gate-toroku-system」とした.
* gate グループに gate 管理者を加えた.
gate 管理者は, ((<[ITPASS2011a]gate-toroku-systemの開発とメンテナンス>)) に書かれている開発メンバーと, gate のインストールを行ったメンバーとした.
2012年度の管理者.
# vigr
gate:x:500:murashin,noda,daisuke,nobesaka
# vigr -s
gate:!:::murashin,noda,daisuke,nobesaka
= 必要なソフトウェアのインストール
gate に必要なパッケージをインストールした.
== パッケージの確認
dpkg コマンドを用いて, 必要なパッケージがインストールされていることを確認した ( ((<[ITPASS2011a]debianパッケージの引き継ぎ>)) でインストール済みのはずである).
以下に示す実行例の "hoge" をパッケージ名に読み替えて実行した.
$ dpkg -l | grep hoge
* 必要なパッケージ: perl-suid, rsync, wget, htroff, cvs, libjcode-pm- perl, libcrypt-passwdmd5-perl, libdatetime-perl, libdatetime-format-strptime-perl
全てインストールされていることを確認した.
実行ファイルや man 用ファイル, HTML ファイルは
/usr/local/gate 以下にインストールされる.
== パッケージが不足している場合
例えば,
# apt-get install htroff
と実行してパッケージが存在しないと表示されたなら, ソースパッケージを取得するために, ひとまず /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/
^^^^^^^
に変更する. この状態で
# apt-get update
# apt-get source htroff
を実行すると,
htroff-2.0(ディレクトリ), htroff_2.0.diff.gz, htroff_2.0-3.dsc, htroff_2.0.orig.tar.gz
を得る. これらを用いてバイナリパッケージを作成する.
# cd htroff-2.0
# dpkg-buildpackage -us -uc -b -rfakeroot
を実行. オプションは以下の通り.
* -us -> ソースに署名しない
* -uc -> changelogに署名しない
* -b -> バイナリのみ作成
* -r -> root権限取得コマンド(fakerootは擬似的にroot権限を使えるコマンド)
その結果,
htroff_2.0-3_all.deb, htroff_2.0-3_amd64.changes
が得られる.
何のエラーも出なければ依存関係を満たしている.
後はインストールするだけ,
# dpkg -i htroff_2.0-3_all.deb
これで, htroff がインストールできる.
最後に, /etc/apt/sources.list の中の二行を元に戻し, update しておく.
# deb http://www.gfd-dennou.org/arch/cc-env/Linux/debian-dennou squeeze/
# deb-src http://www.gfd-dennou.org/arch/cc-env/Linux/debian-dennou squeeze/
# apt-get update
= gate ユーザ宛のメールを転送する
/home/gate/.qmail に管理者のメールアドレスを書き込んだ.
# vi /home/gate/.qmail
&itpadmin
= gate-toroku-system のソースの取得と展開
old の /home/gate から gate-toroku-system のソース (gate-toroku-system.tar.gz)
を new の /home/gate にコピーし, 展開した.
展開は以下のコマンドで行える.
$ tar xvfz gate-toroku-system.tar.gz
= 設定ファイルの編集
== gate.conf
old の /etc/gate/ の下から gate.conf をコピーし /etc/gate/ の下においた.
gate.conf 内の $DBSERVER を以下のように編集した.
$DBSERVER = "new-itpass.scitec.kobe-u.ac.jp";
また, %DB_SHARE_HOSTS が以下のようになっていることを確認した.
%DB_SHARE_HOSTS = (
'ika-itpass.scitec.kobe-u.ac.jp','wheel:itpadmin'
# 'dennou-k.kugi.kyoto-u.ac.jp','wheel:dcstaff',
# 'dennou-h.ees.hokudai.ac.jp','wheel:dcstaff',
# 'dennou-q.geo.kyushu-u.ac.jp','wheel:dcstaff'
);
== gate-user.conf
$WHEELUSER が 'itpadmin' になっているか確認した.
$WHEELUSER = 'itpadmin';
= gate-toroku-system CGI を動作させるための apache2 設定
CGI の動作に関して, apache2 の設定を確認する.
* apache を動作させるユーザ, グループ
apache がどのユーザ, グループの権限で動作するかは /usr/local/apache2/conf/httpd.conf 内の「 User 」 と「 Group 」で指定される.
以下はその一例.
User www-data
Group www-data
* 「 User 」,「 Group 」に指定されているユーザやグループが gate.conf の $CGIUSER に指定されているユーザと一致していることを確認した.
$CGIUSER = "www-data";
* /usr/local/apache2/cgi-bin/ の CGI が動作するために /usr/local/apache2/conf/httpd.conf で下記の記述があることを確認した.
<Directory "/usr/local/apache2/cgi-bin/">
AllowOverride AuthConfig Limit
Options ExecCGI FollowSymLinks IncludesNoExec
</Directory>
= make とインストール
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 以下にインストールされる.
(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 の実行ファイル群へパスを通した.
((<[ITPASS2011a]パスの設定>)) の ((* <一般ユーザ用コマンドのパス> *)) に ((*/usr/local/gate/bin*)) を, ((* <システム管理用コマンドのパス> *)) に
((*/usr/local/gate/sbin*)) を追加した.
= マニュアルへのパスの設定
((<[ITPASS2011a]パスの設定#man 関連のパスの設定>)) を参照し, /etc/manpath.config に以下の行を追加した.
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 インターフェースのチェック
* https://new-itpass.scitec.kobe-u.ac.jp/~gate/ にアクセスし, gate 登録システムのインデックスページが見えるか確認した.
* 上記のページからリンクされている個人申請 (https://new-itpass.scitec.kobe-u.ac.jp/cgi-bin/gate-user-apply.cgi) などに移動し,
CGI が動作しているかチェックした.
= ユーザの作成
== root ログインの準備
# 以下の 2 つの理由から, ログインの向きをこれまでと逆にした.
#
# * 作業内容を整理する
# * /home 領域の rsync においては ika -> tako にログインして作業することにしている.
# * 運用中のサーバにおいて root ログインを許可するリスクよりもまだ運用していないサーバで許可するリスクの方が (個人領域のデータ量からみると)
# 小さそう
# * セキュリティの面では基本システムのインストールで同じレベルまでいってるんじゃないかと思うと.
以下の作業では old から new へ root ログインする必要がある.
そのため, root ログイン用の鍵の生成・設置と root ログインの許可を行った.
=== 鍵の生成と設置
マニュアル通りに進めば root ログイン用の鍵はこの段階で作成・設置するはずであるが, 構築作業の何らかの段階で既に鍵を設置している場合は
以下の手順の確認のみ行う.
* old に残った, 再構築前の new の情報を削除
old の /root/.ssh/known_hosts の中の new に該当する行を削除した
(何番目が new に該当するかは old から new へログインを試みたときのエラーメッセージを読めば分かる.)
* ((*old で*)) 鍵を生成した
* 鍵の置き場とファイル名は, デフォルトの /root/.ssh/id_dsa とした
* パスフレーズは空にした
old-itpass# ssh-keygen -t dsa
* 公開鍵の設置
old で作成した公開鍵 old:/root/.ssh/id_dsa.pub を new:/root/.ssh/authorized_keys にコピーした.
=== root ログインの許可
* ((<[ITPASS2011a]sshのインストールと設定#パスワード認証の拒否と root ログインの拒否設定>)) を参考に ((*new への*)) root ログインの許可を設定した
PermitRootLogin yes
== ユーザデータベースのコピー
old の /home/gate/userdb を new の /home/gate/userdb にコピーした
* まず, -n オプションを付けて rsync の動作チェックを行った.
いきなり rsync コマンドを実行すると予期せぬ間違い (転送元と転送先の設定を間違って, 転送先のファイルを全て消してしまう等) が起こりうるため,
まずは rsync コマンドに -n オプションをつけて実行すること.
-n オプションをつけて実行すると, 実際のファイル操作は行わずに, 操作されるはずのファイルのリストが出力された.
old-itpass# rsync -n -av --delete /home/gate/userdb/ new-itpass:/home/gate/userdb/
* 実際にコピーを行った
old-itpass# rsync -av --delete /home/gate/userdb/ new-itpass:/home/gate/userdb/
== root ログインの設定を戻す
new への root ログインを不許可に設定し直した
PermitRootLogin no
== /etc/shadow のコピー
gate-toroku-system では, /etc/shadow に存在しないユーザがデータベース (/home/gate/userd) に居た場合, 初めてユーザを作成したと認識して
保証人にメールを送信するようになっている.
/home 領域を old からコピーする際 (後日に行う) にこの理由によって大量のメールが送信されないよう, 先に old の /etc/shadow の一部を new の
/etc/shadow にコピーしておいた.
* old の /etc/shadow のうち UID 1000 〜 29999 の gate-toroku-system で管理されるユーザーについて, そのアカウント名の行をコピーして new の
/etc/shadow のファイルに((*追加した*)). 各ユーザに対する uid は /etc/passwd に書かれているので参照した.
# lv /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
^ ここが uid
== 最初の保証人ユーザ作成
* 個人申請 (https://new-itpass.scitec.kobe-u.ac.jp/cgi-bin/gate-user-apply.cgi) にアクセスし, ユーザ登録申請を行った (テスト用なので適当なユーザー testuser でよい)
* 保証人は先に作ったユーザ "gate" とした.
* 作業完了後にユーザーは削除するのでパスワードを覚えておくこと
* 登録申請後, /home/gate/userdb/pending の下に申請者の (申請ログイン名がついたファイル) が生成されているか確認した
* 承認を行うために保証人 "gate" の登録システム用パスワードを設定した
* gate ユーザに成り代わり, 登録システム用パスワードを設定した
# su gate
$ cd
$ htpasswd -c ~gate/.gate gate
* ここで設定したパスワードを使い, "gate" ユーザとして登録申請中のテストユーザを承認した
* https://new-itpass.scitec.kobe-u.ac.jp/cgi-bin/gate-user-accept.cgi にアクセスして行った
* その後, 承認したテストユーザのデータベースファイルが /home/gate/userdb/stable へ移動していることを確認した
= アカウント生成
/home/gate/userdb の中にあるデータベースファイルをシステムに反映させるために, root 権限で /usr/local/gate/lib/gate-daily を実行した.
* gate-daily は /etc/gate/gate.conf を参照するため, 起動前に gate.conf 内の 'old-itpass' を 'new-itpass' と書き換えた
* その後以下を実行した
# perl /usr/local/gate/lib/gate-daily
/etc の passwd, group, shadow, sudoers ファイルが更新され, それぞれ .bk を付加した名前のバックアップファイルが生成された.
* /etc/{passwd, group, shadow} に, 登録したユーザの情報が新たに書き込まれていることを確認した.
また /home に /home/gate/userdb 以下に存在するユーザのディレクトリができていることを確認した.
= bind の所有グループの変更
((<[ITPASS2011a]bindのインストールと設定#パーミッションの設定>)) にあるように,
bind 関連のファイルの所有グループを itpadmin に変更した.
= /etc/aliases の変更
/etc/aliases の root に対応するユーザは,
インストール時に作ったユーザになっているはずである.
test という名前のユーザを作った場合は, 以下の行が存在するはずである.
root: test
これを itpadmin に書き換えた.
root: itpadmin
設定を反映するため,
# newaliases
を実行した.
ここで許可がないというメッセージが出るかもしれない.
/usr/bin/newaliases は /usr/sbin/exim4 のシンボリックリンクであり,
exim4 に実行権限が付与されていないためである.
ここでは MTA に exim4 ではなく qmail を使うため,
実行権限を付与する必要はない.
/etc/aliases を書き換えると newaliases コマンドを実行するのは
一般的な操作であるため, ここではあえてマニュアルに残しておく.
= デーモンモードでの運用
ユーザ, ホストのデータベースをシステムに反映させるため, デーモンモードでの運用の設定を行う.
* 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 wrapper によるセキュリティ強化
gate ポートは, 登録サーバからのアクセスさえ受け付けられればその役目を果たす.
そのため, TCP wrapper を使用してアクセスを登録サーバからのものに限定する.
特に ITPASS サーバは 1 台での運用なので, 自身からのアクセスのみ許可する.
* /etc/hosts.deny の編集
まず, 全てのホストからの gate ポートへのアクセスを拒否するよう /etc/hosts.deny に以下の一行を追加した.
gate-daily: ALL
* /etc/hosts.allow の編集
登録サーバ自身 (new) からのアクセスは許可するよう, /etc/hosts.allow に以下の一行を追加した.
gate-daily: 127.0.0.1
* 登録サーバ以外のホストからのアクセスが拒否されるか確認した.
以下は google.com で試した場合.
root@new-itpass:/home/gate# tcpdmatch gate-daily google.com
client: hostname nrt04s01-in-f99.1e100.net
client: address 66.249.89.99
server: process gate-daily
matched: /etc/hosts.deny line 21
access: denied
client: hostname nrt04s01-in-f104.1e100.net
client: address 66.249.89.104
server: process gate-daily
matched: /etc/hosts.deny line 21
access: denied
denied とあれば拒否されている. 拒否されていた.
次に, 登録サーバ自身からのアクセスが許可されているか確認した.
root@new-itpass:/home/gate# tcpdmatch gate-daily localhost
client: hostname localhost
client: address 127.0.0.1
server: process gate-daily
matched: /etc/hosts.allow line 14
access: granted
granted とあれば許可されている. 許可されていた.
* inetd を再起動した
# /etc/init.d/openbsd-inetd restart
Restarting internet superserver: inetd.
* 確認
CGI から適当なユーザの申請および認証を行った. 認証して数分後に /etc 以下のシステムファイル(passwd ファイルと shadow ファイル)が更新されていることを確認した.
= gate-toroku-system ソースの移動
ソースのバックアップを残した.
#* 運用において /home/gate/gate-toroku-system は必要ないが,
* 以下のように名前を変更してコピーしておいた
cp -r gate-toroku-system gate-toroku-system_2011-10-24
^^^^^^^^^^^^^ インストールした日付
= doc ディレクトリのシンボリックリンク作成
/usr/local/gate/ にある doc ディレクトリのシンボリックリンクを/home/gate/public_html/ に作成した.
#cd /home/gate/public_html/
#ln -s /usr/local/gate/doc
# ls -l
root@new-itpass:/home/gate/public_html# ls -l
合計 64
lrwxrwxrwx 1 root root 19 2010-10-15 19:40 doc -> /usr/local/gate/doc
= 日々の開発・メンテナンスのための準備
== 必要なパッケージのインストール
以下のコマンドで, 開発やメンテナンスに必要なパッケージをインストールした.
以下の perl 関連のパッケージ名は Debian GNU/Linux 6.0 (コードネーム squeeze) の場合のものであり, Debian のバージョンによって変更される可能性が高いので
注意すること.
# apt-get install cvs
# apt-get install kcc
# # apt-get install qkc
# qkc ないので nkf に書き換え
# apt-get install nkf
# apt-get install libjcode-pm-perl
# apt-get install libcrypt-passwdmd5-perl
# apt-get install libdatetime-perl
# apt-get install libdatetime-format-strptime-perl
== 余分なファイルの削除, 文字コードの修正
* 新たに cvsroot を作成するために, gate-toroku-system 内の余計なディレクトリやファイルを削除した.
* ls -aR でディレクトリ内のファイルを眺め, 不要なドットファイルなども削除しておいた.
$ cd gate-toroku-system
$ rm -frv `find -name CVS`
* 文字コードを 1 種類に統一したいため, kcc で文字コードのチェックを行った.
* ここでは EUC に統一することを考えているので, 異なるものがある場合には nkf で変更すること. 異なるものはなかった.
$ kcc -c `find -name '*'`
:
./make-smtppasswd/Makefile: ASCII
./make-smtppasswd/gate-make-smtppasswd.PL: 7-bit JIS [ESC$B, ESC(B]
./user-status/gate-user-status.PL: EUC
./user-status/Makefile: ASCII
$ nkf -e -Lu -d ./make-smtppasswd/gate-make-smtppasswd.PL
== CVS リポジトリの作成
# su gate
$ umask 002
$ cd
$ cvs -d /home/gate/cvsroot init
作成した.
== グループ書き込み許可の設定
上記で umask などの設定をおこなったものの, s ビットを立てるなど, パーミッションの設定が必要となる. また cvs init コマンドで作成した
ディレクトリやファイルの中にはグループ書き込み権限が無いものもあるので, 以下で設定した.
: リポジトリ cvsroot パーミッションの設定
cvsroot 以下で作成されるファイル, ディレクトリのグループを gate にするため, cvsroot に s ビットを立て, 書き込み権限を与えた.
念のためにグループも gate に設定した.
$ chmod g+s cvsroot
$ chmod g+w cvsroot
$ chgrp gate cvsroot
: 管理用ディレクトリ CVSROOT 内のパーミッションの設定
cvsroot が作成されれば, そのリポジトリに関する CVS の動作を制御する CVSROOT ディレクトリも作成されているはずである.
このディレクトリ, およびそれ以下の特定のファイルに関してグループの変更と書き込み権限変更をおこなった.
* CVSROOT ディレクトリ本体
グループを gate とし, グループに書き込み権限を与えた.
(これは少しアンセキュアな方針かもしれない. よりセキュアな方法として, 代表的な管理者 1 人にのみ書き込み権限を与えるという方針もあり得るだろう).
$ cd cvsroot
$ chgrp gate CVSROOT
$ chmod g+s CVSROOT
$ chmod g+w CVSROOT
* history, val-tags へグループ書き込み権限を与えた
CVSROOT 以下にある history, val-tags にグループ書き込み権限を与えた. (グループは既に gate であると仮定している).
なお, history とはこのリポジトリ以下のプロジェクトに対して行なわれた checkout, commit, rtag, update, release を記録しているファイルであり, cvs history コマンドで見ることが出来る. (動作の詳細は cvs history -x コマンドを参照のこと).
ここではグループ gate で開発することを念頭に置くため, グループに書き込み権限を与えた.
$ cd CVSROOT
$ chmod g+w history
val-tags は検索を高速化するために, 有効なタグ名をキャッシュしているファイルである.
GATE プロジェクトではタグも使用するので, これにもグループ書き込み権限を与えた.
$ chmod g+w val-tags
== gate-toroku-system プロジェクト開始
* gate-toroku-system ディレクトリ内に移動し, cvs import でプロジェクトを開始した.
# su gate
$ umask 002
$ cd gate-toroku-system
$ export CVSROOT=/home/gate/cvsroot
$ cvs import -m "gate-toroku-system" gate-toroku-system gate Initial
=== プロジェクトのパーミッションの確認
プロジェクトのディレクトリのパーミッションを確認した.
$ ls -l /home/gate/cvsroot
drwxrwsr-x 3 gate gate 4096 2007-08-15 17:18 CVSROOT
drwxrwsr-x 39 gate gate 4096 2007-08-15 17:44 gate-toroku-system
上記のようにグループが gate で権限が rws の場合は問題ない. もしそうでないのなら, 以下のコマンドでグループとパーミッションを変更すること.
$ chgrp gate gate-toroku-system
$ chmod g+s gate-toroku-system
$ chmod g+w gate-toroku-system
なお, もしも gate-toroku-system が上記のようなパーミッションになっていなかった場合, それよりも下層ディレクトリのパーミッションもそれと同様な
可能性がある.
それらに関してもグループとパーミッションを設定すること. 調べるには以下のコマンドが便利であろう.
$ cd /home/gate/cvsroot/gate-toroku-system
$ ls -dl `find -type d`
プロジェクト以下にある「ファイル」に関しては (グループは gate である必要があるが) パーミッションは -r--r--r-- で問題ない.
cvs コマンドを介せば, 正しく commit, add, remove などが可能である.
== CVS リポジトリのカスタマイズ
<URL:http://www.gfd-dennou.org/library/cc-env/cvs/> を参考に, 以下の作業を行う. 作業手順に関しては以下を参照のこと.
* cvs リポジトリのカスタマイズ
* commit をメール通知する設定
* CVSROOT/loginfo に以下の一行を追加した
DEFAULT (echo ""; id; echo %{sVv}; date; cat) | mail -s gate-toroku-system-commit gate
* バイナリファイルを安全に登録するために
* CVSROOT/cvswrappers に以下の行を追加した.
# Treat Image and Archive and Data file as Binary Data
*.gif -k 'b'
*.GIF -k 'b'
*.jpg -k 'b'
*.JPG -k 'b'
*.jpeg -k 'b'
*.JPEG -k 'b'
*.png -k 'b'
*.PNG -k 'b'
*.tif -k 'b'
*.TIF -k 'b'
*.tiff -k 'b'
*.TIFF -k 'b'
*.xpm -k 'b'
*.XPM -k 'b'
*.pbm -k 'b'
*.PBM -k 'b'
*.ico -k 'b'
*.ICO -k 'b'
*.eps -k 'b'
*.EPS -k 'b'
*.o -k 'b'
*.O -k 'b'
*.a -k 'b'
*.A -k 'b'
*.mod -k 'b'
*.MOD -k 'b'
*.nc -k 'b'
*.NC -k 'b'
*.obj -k 'b'
*.OBJ -k 'b'
*.ai -k 'b'
*.AI -k 'b'
*.psd -k 'b'
*.PSD -k 'b'
*.fla -k 'b'
*.FLA -k 'b'
*.swf -k 'b'
*.SWF -k 'b'
*.dvi -k 'b'
*.DVI -k 'b'
*.pdf -k 'b'
*.PDF -k 'b'
*.bz2 -k 'b'
*.BZ2 -k 'b'
*.gz -k 'b'
*.GZ -k 'b'
*.tar -k 'b'
*.TAR -k 'b'
*.tgz -k 'b'
*.TGZ -k 'b'
*.tar.gz -k 'b'
*.TAR.GZ -k 'b'
*.cab -k 'b'
*.CAB -k 'b'
*.lzh -k 'b'
*.LZH -k 'b'
*.zip -k 'b'
*.ZIP -k 'b'
*.sea -k 'b'
*.SEA -k 'b'
*.dat -k 'b'
*.DAT -k 'b'
*.ppt -k 'b'
*.PPT -k 'b'
*.doc -k 'b'
*.DOC -k 'b'
*.xls -k 'b'
*.XLS -k 'b'
* euc のファイルのみ登録するには
* ((<URL:http://www.gfd-dennou.org/library/cc-env/cvs/customize/cvs-eucfile.htm>)) を参考に作業した.
* commit メッセージを euc のみに
* ((<URL:http://www.gfd-dennou.org/library/cc-env/cvs/customize/cvs-eucmsg.htm>)) を参考に作業した.
なお, メール通知の際の宛先は ITPASS サーバの gate-toroku-system 開発グループ とし, ファイルの文字コードは EUC とする.
= gate-db-to-ezmlm の設定
((*この作業は, ezmlm がインストールされているのを確認した上で行う.*))
root になりかわり, /usr/local/gate/bin/gate-db-to-ezmlm の「0. 実行ファイル, ドメインの指定」の項目を以下のように変更した.
変更前
$domainname='gfd-dennou.org';
$ezmlmlist='/usr/bin/ezmlm-list';
$ezmlmsub='/usr/bin/ezmlm-sub';
$ezmlmunsub='/usr/bin/ezmlm-unsub';
変更後
$domainname='itpass.scitec.kobe-u.ac.jp';
$ezmlmlist='/usr/local/ezmlm/bin/ezmlm-list';
$ezmlmsub='/usr/local/ezmlm/bin/ezmlm-sub';
$ezmlmunsub='/usr/local/ezmlm/bin/ezmlm-unsub';
= 動作確認
以下は root のパスワード所有者と共に作業をしなければいけないため, 後日作業を行った.
== 概要
((<ITPASS サーバユーザ登録システム|URL:https://itpass.scitec.kobe-u.ac.jp/~gate/>))
は, 情報の更新時に
設定ファイルである gate.conf, gate-user.conf などをもとに
/etc/sudoers を書き換える.
設定ファイルに間違いがあると
itpadmin グループ所属ユーザでさえ root になれなくなる.
問題の詳細については
((<[Memo2010][ITPASS] gate 設定ファイル修正ログ>))
を参照されたい.
本稼動時にこれが起こるのを防ぐため,
予め動作確認を行い, 設定ファイルの修正を行う.
== 確認作業
((*設定が間違っている場合スーパーユーザーになれなくなるため, root のパスワードを知っている管理者と共に作業すること.*))
まず
((<ITPASS サーバユーザ登録システム|URL:https://itpass.scitec.kobe-u.ac.jp/~gate/>))
のページから登録情報の更新をした.
その後 /var/log/syslog を見て gate が作動したことを確認した.
更新をした時刻に以下のような行があるはずである.
Mar 25 17:20:00 ika-itpass gate-daily[15704]: connect from 127.0.0.1 (127.0.0.1)
また, 同時刻に sudoers ファイルが書き換えられているか確認した.
$ ls -la /etc/sudoers
-r--r----- 1 root root 490 2012-03-25 17:20 /etc/sudoers
sudoers ファイルに以下の行があることを確認する.
$ sudo less /etc/sudoers
(省略)
%itpadmin ALL=(ALL) ALL
(省略)
確認したが,
%itpadmin ALL=(itpadmin) ALL
となっていたため, 修正した.
念のため, itpadmin グループのユーザが
実際に root になれることを確認した.
もし失敗する場合は ((<URL:#設定ファイルの編集>)) の部分の
設定を見直すこと.
== 参考文献
* ((<[Memo2010][ITPASS] gate 設定ファイル修正ログ>))
* ((<man gate-conf(5)|URL:https://itpass.scitec.kobe-u.ac.jp/~gate/doc/gate-conf.htm>))
[((<ITPASSサーバ構築・運用ドキュメント>)) へ戻る]