2007年12月10日月曜日

自業自得

いつからか、USBメモリが自動マウントされなくなったと感じて居ったのですが、「ConsoleKit」というデーモンを止めていた所為でしたOrz このデーモンの名前より、てっきりコンソール作業のためのデーモンで、Xでログインしたら関係ないだろうと思って止めてたんですね。そしたらこいつがHALと結構深く絡んでて、両方のデーモンを動かしていないとUSBやCDのオートランは有効にならないようです。
さらにさらに、なぜか権限が与えられていなかったサウンドデバイス(最近気づきましたがビデオキャプチャデバイスも)もConsoleKitを有効にすることで権限が与えられました。なんという自業自得Orz
とはいえ、今までのLinuxの管理方法からすればデバイスのアクセス権限はrootユーザにしか与えられていません。実際、/dev/video0のアクセス権限を確認すると

crw-rw----+ 1 root root 81, 0 2007-12-09 18:20 /dev/video0


となり、rootにしか権限が与えられていません。ところが、最近のFedoraではACLが導入されておりまして、ファイルやフォルダごとにアクセス権限を設定することが出きるようになっています。アクセス権限を示す部分の最後についている「+」が肝です。これがついているファイルやフォルダにはACLによる個別アクセス権限が設定してあります。それの確認コマンドとして「getfacl」コマンドがあります。これによりアクセス権限を確認すると、

getfacl: Removing leading '/' from absolute path names
# file: dev/video0
# owner: root
# group: root
user::rw-
user:code_air_edge:rw-
group::rw-
mask::rw-
other::---

とまぁこんな感じで、このファイルに対してのrw権限がユーザ「code_air_edge」に与えられていることが分かります。
Sawa氏 thanks !!!)
デバイスファイルは起動時にudevにより自動的に作成されるため、その度にACLを指定しているわけですが、それを行うデーモンがHALとConsoleKitだったようです。私の場合、HALは動かしていましたがConsoleKitは止めていたため、ACLが有効になって居らず、USBメモリなどの自動マウントに失敗していたようです。なんという自業自得Orz
とりあえず、ConsoleKitも動かすようにしてちゃんとUSBメモリが自動マウントされることを確認しました。
が!
なぜか書き込みやファイルの削除に失敗するOrz 全デバイスというわけではなく、USBメモリオーディオは失敗するようです。miniSDカードは何の問題もなく書き込みできました。謎だ・・・。
どうもI/Oエラーが出ているようなのでデバイス側に問題があるとは思うのですが・・・、けどWinでは特に問題なく書き込みができているんですよね。尚のこと謎だ・・・。
今回の教訓。特に問題がある分けでもなければデーモンは止めるな。止める場合ははっきりと「必要ない!」と言い切れるものだけ止めよ。よく分からないデーモンは触るな!
以上。つまらんことで随分悩んでしまったぜ・・・w