フリー・エンジニア
高橋隆雄 フリー・エンジニア
高橋隆雄

前回はAsteriskの動作確認と音声(トーキー)の日本語化や発信テストを行った。今回はAsteriskの稼働環境を整えてみよう。

・Asterisk関連のニュース

 まず最初は既報の通りAsteriskの開発元である米ディジウムがベンチャ・キャピタルから1380万ドルの資金を調達したとのこと。日本ではまだ、このような大きな動きはないようだが、米国では既にこのような規模のマーケットが成長しつつあるということだろう。

 もうひとつの最新情報はAsteriskのバージョン1.2.11がリリースされた。これは主に新ハードウエアへの対応を盛り込んだこととバグフィックスのようだ。それほど緊急性が高いとは思われない内容で、1.2系列のリリースが続くということは1.4の正式リリースまでまだ時間がかかるということかもしれない。

・「root」で動作させるのはやめよう

 前回までのAsteriskの起動はroot権限で行っている。このため、万が一Asteriskが何らかの方法で乗っ取られたり、セキュリティ上の脆弱性によってAsteriskから何かを起動できるようになっていたりすると、root権限でプログラムの実行を許してしまうことになる。昨今のLinuxのデーモン類は、極力rootで動作させないのが作法となっている。これはシステムそのものに対する被害を最小限に食い止める良策である。そこで、今回はまずAsteriskをroot権限ではない権限で動作させる設定を解説することにしよう。

 なお本稿の手順を行う場合には、まずAsteriskを一回停止させてから行ってほしい。

・ユーザー/グループを作成する

 まず最初にAsteriskが所属/動作するユーザー名とグループを作成する。CentOSでは以下のようにコマンドで簡単に作ることができる。

# groupadd asterisk
# useradd -d /var/lib/asterisk -s /sbin/nologin -g asterisk asterisk

 この場合、UIDやGIDは自動的に適切なものが使われる。useraddで-sオプションで指定しているのはnologinプログラムで、telnetなどでのログインを行わせないためである。ユーザー名「asterisk」はAsterisk自体が動作するためのUIDであって、ログイン・ユーザーである必要はないためだ。

・zaptelを設定する

 ちょっとややこしいのがzaptel。Asteriskはzaptelデバイスを使用するため、zaptelもユーザー「asterisk」からアクセス可能なように権限を変更しなくてはならない。以前のバージョン(カーネル2.4系)のLinuxであればデバイス・ファイルは単なる特殊ファイルであったため、/dev/zapの下のオーナーやグループを単純に変更するだけでよかったのだが、最近のLinux(カーネル2.6系)ではudevと呼ばれるデバイス・ファイル用のしかけが使われ、ドライバ起動時にデバイス・ファイルが動的に生成されれる。このためudevを適切に設定しないと、起動時に正しいユーザー権限でデバイスの生成が行われず、Asteriskから使用できなくなるという問題が発生する。

 本連載で想定しているCentOSはもともとRedHat系なのでRedHatの作法にのっとって設定を行う。

 まず最初に一回、zaptelを停止させる。事前にAsteriskは停止させておくこと。

# /etc/init.d/zaptel stop

 先ほど"asterisk"というユーザーとグループを登録したので、うまくいけば再起動するだけでオーナー/グループが変わるはずである。

# /etc/ini.d/zaptel start

 この状態で/dev/zapの下を確認する。

# ls -l /dev/zap
total 0
crw-rw---- 1 asterisk asterisk 196, 254 Aug 24 00:34 channel
crw-rw---- 1 asterisk asterisk 196, 0 Aug 24 00:34 ctl
crw-rw---- 1 asterisk asterisk 196, 255 Aug 24 00:34 pseudo
crw-rw---- 1 asterisk asterisk 196, 253 Aug 24 00:34 timer

 上の例のようにユーザー、グループともに「asterisk」になっていれば問題はない(左がユーザー、右がグループ)。もしも「root」など「asterisk」以外になっている場合にはudev生成時にうまくいっていないということになる。ユーザーとグループを登録してあるにもかかわらず、そうなった場合にはudev関連の設定ファイルに調整が必要だ。