前記事で OpenSIMサーバを24時間運用する方法について書きました。
パピー(Puppy Linux)は通常、特権ユーザである root で動作します。24時間運用だと、異常があっても気づきにくく、何が起こるか不安があるかもしれません。パピーもLinuxなので、特権ユーザである root ではなく、非特権ユーザで動かすこともできます。PPLOGを動かすウェブサーバ hiawatha は、非特権ユーザ webuser で動作します。同じように OpenSiMサーバを非特権ユーザで動かすことができます。
OpenSiMサーバを非特権ユーザで動かすことの意味は、OpenSiMサーバになにか異常があったときに、その影響範囲がOpenSIM関連のファイルだけに止まるということです。しかし、もともとパピーのシステムの根幹は書き込み不可のメインSFS上にあり、不具合が起こったとしても、差分ファイルである pupsaveを新調すればよいだけなので、深刻な問題とはなりません。OpenSIM関連のファイルはどちらにしても破壊、書き換えされる恐れはあります。これはSIMデータなどをバックアップしておく以外に保護の方法はありません。
以上を考えると、OpenSIMサーバーを専用機で動かすならば、非特権ユーザで動かすことに意味はありません。私の場合はメールの自動受信とNAS、OpenSIMを1台のPCで運用するので (Vine からパピーへのお引越し
viewtopic.php?f=23&t=2321 )、 この方法を採りました。メールはユーザー tako、NASはユーザー ftp、OpenSIMサーバはユーザー opensim というように、それぞれ別ユーザーで、互いの干渉を防ぎます。
通常は root で動作するパピーであっても、特定のサーバを非特権ユーザで動かすこともできるのだということを示すためにも、この記事を書きます。
1. グループ opensim を作る。
次のコマンドを実行します。
#
addgroup -S opensim
2. ユーザ opensim を作る
#
adduser -D -H -G opensim opensim
以上でユーザ opensim とグループ opensim が作られたはずです。確認します。
# id opensim
uid=100(opensim) gid=111(opensim) groups=111(opensim)
(uid, gid の番号は既存のユーザー数などの状況による)
3. OpenSIM関連のファイル所有者を opensim とする。
例として OpenSIMサーバのインストール先を /mnt/home/OpenSIM/opensim-0.8.1 とします。/mnt/home(パピーがインストールされている、あるいjはpupsaveのあるパーティション)は ext3 などのLinux用パーティションでなくてはなりません。
次のコマンドを実行します。
#
chown opensim.opensim -R /mnt/home/OpenSIM/opensim-0.8.1
OpenSimサーバーを別のパピーで実行する場合、opensimの uid、gidは異なる可能性があります。そのときは、新しいパピーで上記の chown コマンドを再度実行してください。
追記: この操作(chown)は、次の起動スクリプトに書き込んでおくことで、別途実行する必要ははなくなります。
4, 起動スクリプトを作る。
次のスクリプトを作り、
/mnt/home/OpenSim/opensim とします。
コード: 全て選択
#!/bin/sh
APP=$(readlink -e $0)
[ "$APP" ] || APP=$0
APPDIR=$(dirname "$APP")
[ "$APPDIR" = "." ] && APPDIR=$(pwd)
GUEST_PREFIX=$APPDIR/opensim-0.8.1
GUEST_BINDIR=$GUEST_PREFIX/bin
chown opensim.opensim -R $GUEST_BINDIR
cd "$GUEST_BINDIR"
sudo -u opensim mono OpenSim.exe
パスを通すため、/mnt/home/OpenSim/opensim へのリンク
/root/my-applications/bin/opensim を作ります。
端末を起動し、
opensim と入力して OpenSIMサーバが正常に起動することを確認します。
OpenSIMサーバを自動起動できるようにします。次のスクリプトを作り、
/root/Startup/opensim とします。
コード: 全て選択
#!/bin/sh
urxvt -e opensim
5. 自動起動の確認
Xサーバをリスタートします。端末が現れ、OpenSIMサーバが自動起動すればOKです。
psコマンドでプロセスのユーザ名を確認します。端末から ps コマンドを打つと
21064 root 0:00 sudo -u opensim mono Opensim.exe
21064 opensim 91.40 mono OpenSim.exe
などと、monoがユーザopensimで動いているkとが確認できます。