2007年11月18日日曜日

サウンドデバイスの権限問題解決法

先日ポストしたPulseAudioはなかなかよいかも知れないの記事に、/dev/snd/*等のデバイスの権限を強引に0777に置き換える方法を紹介しました。
するとjacopassさんがコメントにて解決法を紹介してくださいましたのでそちらを紹介します。この記事にてお礼とさせていただきます。
まず、/etc/security/console.perms.d/51-audio.permsというファイルを作成します。jacopassさんは50-default.permsファイルを編集する方法を紹介くださいましたが、こちらのファイルは手動で編集すべきファイルではないということで新規にファイルを作成することとします。ファイル名は先頭の数字が50より大きければ以降は任意です。ただし、拡張子は.permsにしてください。
編集する内容はコメントにいただいた通りです。以下の内容を保存してください。

<sound>=/dev/dsp* /dev/snd/* /dev/mixer
# permission definitions
<console> 0666 <sound> root


以上で完了です。先日の私の記事で書き換えた箇所を元に戻し、再起動すればOK。
記述の意味ですが、まず1行めはデバイスをグループ化しています。右側に書かれたデバイスはきちんと存在していなければなりません。
次の行は単なるコメントです。
最後の行がパーミッションに関わる内容で、<console>はコンソールからのログイン、ようはローカルからのログインを示します。
次のセクションでパーミッションを指定します。ログイン後、各ユーザにここで指定した権限が付与されます。
次のセクションがデバイスグループの指定です。先ほど作成したグループの<sound>を指定しています。
そして最後のセクションは、ユーザがログインした後にどのユーザに権限を戻すかを示しています。ここではrootユーザに戻しています。
一般にサウンドやビデオデバイスはこの方法かあるいは先日紹介した方法でパーミッションの設定を行わないといけません。その場でデバイスのパーミッションを変更しても、再起動すると元に戻ってしまいます。
そういえばKVMデバイスも元に戻っちゃってたな・・・。アレも同じように設定したらいいのか。
先日の方法と違い、今回の手法ではデバイスごとに個別に設定を行えるのでパッケージ更新などでファイルが書き換えられてしまう心配がほぼありません。逆に言えばその設定が不要になったときはちゃんと自分で消さないといけないということですが^^;
何はともあれ解決法が見つかってなにより。これでおおよそはうまく動いてくれるかな〜?