Zaptel udev

2008年11月15日 (土) 02:17時点における61.194.4.4 (トーク)による版 (CentOS 5)

現在のLinuxディストリビューションでは、その多くでデバイスの新しい管理方法としてudevが使用されています。udevの挙動に注意しないとAsteriskをroot以外のユーザで動作させることができません。

目次

ディストリに依存しない一番簡単な方法

init.dのzaptelのstartに以下を入れてしまいます。

elif [ $system = redhat ]; then
    action "Running ztcfg: " /sbin/ztcfg
fi
    RETVAL=$?
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/zaptel
chown -R asterisk:asterisk /dev/zap    <--これ

こうすればデバイスが生成された後、chownされてしまいます。

Fedora Core 4

どうもzaptelがインストールする設定ファイル類に間違いがある気がします。普通に/etc/init.d/zaptel startを実行するとオーナがrootでデバイスが出来上がってしまいます。/etc/udev/rules.dにzaptel.rulesというファイルがあるのですが、この内容が反映されないようです。そこで以下の方法で解決しました。 50-udev.rulesファイルに以下のようなzaptelのエントリがあります。

# Section for zaptel device
KERNEL=="zapctl",               NAME="zap/ctl"
KERNEL=="zaptimer",             NAME="zap/timer"
KERNEL=="zapchannel",           NAME="zap/channel"
KERNEL=="zappseudo",            NAME="zap/pseudo"
KERNEL=="zap[0-9]*",            NAME="zap/%n"

どうもこの設定が最終的には生きるようなので、これらを以下のように修正します。

# Section for zaptel device
KERNEL=="zapctl",               NAME="zap/ctl",MODE="0600",OWNER="asterisk",GROUP="asterisk"
KERNEL=="zaptimer",             NAME="zap/timer",MODE="0600",OWNER="asterisk",GROUP="asterisk"
KERNEL=="zapchannel",           NAME="zap/channel",MODE="0600",OWNER="asterisk",GROUP="asterisk"
KERNEL=="zappseudo",            NAME="zap/pseudo",MODE="0600",OWNER="asterisk",GROUP="asterisk"
KERNEL=="zap[0-9]*",            NAME="zap/%n",MODE="0600",OWNER="asterisk",GROUP="asterisk"

これでasterisk:asteriskでデバイスが生成されるようになります。

CentOS 4.4

基本的に正しいudevのrulesファイルがインストールされるようです。ユーザ名asteriskとグループasteriskを追加した後、Zaptelを再起動すると各デバイスのオーナ/グループがasteriskに設定されます。

CentOS 5

/etc/udev/rules.dの40-udev.rulesファイルにzaptelエントリがあるため、zaptelを起動するとデバイスのオーナがrootになってしまいます。zaptelを正しくインストールし、make configを行ったのであれば50-udev.rulesファイルを編集し、以下のようにzaptelのエントリをコメントアウトすれば正しいオーナで設定されます。

# Section for zaptel device
#KERNEL=="zapctl",              NAME="zap/ctl"
#KERNEL=="zaptimer",            NAME="zap/timer"
#KERNEL=="zapchannel",          NAME="zap/channel"
#KERNEL=="zappseudo",           NAME="zap/pseudo"
#KERNEL=="zap[0-9]*",           NAME="zap/%n"

permissons.dがある場合

この場合にはrules.dの下にzaptel.rulesファイルを置くだけでは正しくパーミッションが設定されません。permissions.d/50-udev.permissionsファイルの最後に以下を追加します。

# zaptel device
zap/ctl:asterisk:asterisk:0600
zap/timer:asterisk:asterisk:0600
zap/channel:asterisk:asterisk:0600
zap/pseudo:asterisk:asterisk:0600
zap/zap[0-9]*:asterisk:asterisk:0600