Vine Linux バグトラッキングシステム - Vine Linux
課題の詳細を表示
0000093Vine Linux1 バグ公開2006-07-29 23:362006-09-14 23:06
kazutaka 
kazutaka 
不明 
完了不明 
4.0beta 
 
nautilus-cd-burner-2.14.1-0vl1
0000093: 一般ユーザーで nautilus から CD/DVD が焼けない
nautilus を使って CD/DVD を焼こうとして、
CD/DVD 作成フォルダに書き込みたいファイルをD&D して、
"ディスクへの書き込み"ボタンを押すと、

 ディスクの書き込みエラー
 ディスクに書き込む際にエラーが発生しました

と表示されて、焼くことができません。

ターミナルから実行すると、エラーが発生したときに
以下のメッセージが出ます。

** (nautilus-cd-burner:6002): WARNING **: command failed: 子プロセスを起動できません "cdrecord" (許可がありません)

root で実行すると問題なく焼けるので、権限の問題だと思いますが、
今の動作はユーザーに優しくないと思います。(途中まで普通に動作
してしまうので)

以下のような対応を検討してもらえると助かります。
1.nautilus-cd-burner の実行に一定の権限を設定する。
2.(例えば)コンソールユーザーならパスワード等無しに
  利用できるようにし、使い勝手の低下を防ぐ。
設定されていません。
課題の履歴
2006-07-29 23:36kazutaka新規課題
2006-08-14 22:49kazutaka担当者 => kazutaka
2006-08-14 22:49kazutaka状態新規 => 担当者決定
2006-08-14 22:49kazutakaコメント追加: 0003930
2006-08-17 00:37daisukeコメント追加: 0003931
2006-08-18 00:45kazutakaコメント追加: 0003932
2006-08-18 00:48kazutakaコメント追加: 0003933
2006-08-27 11:13kazutakaコメント追加: 0003934
2006-09-13 22:47kazutakaバージョンVineSeed => 4.0beta
2006-09-13 22:47kazutakaパッケージnautilus-cd-burner-2.14.1-0vl1 => nautilus-cd-burner-2.14.1-0vl1, xcdroast
2006-09-13 22:47kazutakaコメント追加: 0003935
2006-09-14 04:55daisukeコメント追加: 0003936
2006-09-14 23:06kazutakaパッケージnautilus-cd-burner-2.14.1-0vl1, xcdroast => nautilus-cd-burner-2.14.1-0vl1
2006-09-14 23:06kazutaka状態担当者決定 => 完了
2006-09-14 23:06kazutakaコメント追加: 0003937

コメント
(0003930)
kazutaka   
2006-08-14 22:49   
> 以下のような対応を検討してもらえると助かります。
> 1.nautilus-cd-burner の実行に一定の権限を設定する。
> 2.(例えば)コンソールユーザーならパスワード等無しに
> 利用できるようにし、使い勝手の低下を防ぐ。

とりあえず consolehelper を使った以下のような設定を
試してみました。


まず、/etc/pam.d/nautilus-cd-burner に以下を記述

auth sufficient /lib/security/pam_rootok.so
auth required /lib/security/pam_console.so
session required /lib/security/pam_permit.so
session optional /lib/security/pam_xauth.so
account required /lib/security/pam_permit.so

それから、/etc/security/console.apps/nautilus-cd-burner に
同じく以下を記述。

USER=root
SESSION=true

次に /usr/bin 配下の nautilus-cd-burner を /usr/sbin に
移動し、consolehelper へのリンクを新たに作成。

# mv /usr/bin/nautilus-cd-burner /usr/sbin/nautilus-cd-burner
# ln -s /usr/bin/consolehelper /usr/bin/nautilus-cd-burner

こうすることで、console user の場合はパスワードの入力無しに
CD/DVD が焼けるようになりました。
セキュリティ的には甘くなってしまいますが、CD/DVD を焼くために
sudo したりパスワードを入力させたりするよりはスマートだと思います。
(0003931)
daisuke   
2006-08-17 00:37   
cd/dvd ドライブは owner が console user になるはずなので、
/usr/bin/cdrecord を 0755 に直せばそのままで書き込めるよう
になるとおもいます。現在4710になっているのは xcdroastが %post
で行っているものだと思いますが、デバイスのownerがconsole user
になる現状では、xcdroastのやりかたはあまりよろしくないと思い
ます。とりあえず xcdroast で chmod しないように変更したうえで
cdrtools の方でパーミションの修復スクリプトを仕込むという風
にするのがいいかとおもいます。

# console user と root 以外で cdwrite グループにはいっている
# ユーザは書き込めなくなりますが、そんな必要はないでしょうし。
(0003932)
kazutaka   
2006-08-18 00:45   
> cd/dvd ドライブは owner が console user になるはずなので、
> /usr/bin/cdrecord を 0755 に直せばそのままで書き込めるよう
> になるとおもいます。

試してみたのですが、以下のエラーが出て CD に書き込めませんでした。

$ nautilus-cd-burner
(nautilus-cd-burner:2889): GLib-CRITICAL **: g_error_free: assertion `error != NULL' failed

画面は以下のように遷移しました。

(コマンド実行) -> ファイル選択を促される -> CD/DVDクリエイタを開くボタンを押す
-> nautilus CD/DVDの作成ウィンドウが開く -> 書き込むイメージを D&D で指定
-> ディスクへの書き込みボタンを押す -> 書き込み先等を指定するウィンドウが開く
-> 書き込むボタンを押す -> (CD/RWなので)ディスクの消去の確認画面が出る
-> ディスクの消去ボタンを押す -> ディスクの書き込みエラーウィンドウが出る
-> ディスクに書き込む際にエラーが発生しました、と表示され OK ボタンを押す
-> ターミナルに上記のエラーが出力される


念のため、cdrtools-cdrecord と nautilus-cd-burner を
再インストールして試してみたのですが同様にエラーでした。

環境は以下の通りです。

$ rpm -q nautilus-cd-burner cdrtools-cdrecord
nautilus-cd-burner-2.14.3-0vl1
cdrtools-cdrecord-2.01-0.a31vl2

$ ls -l /usr/bin/cdrecord /usr/bin/nautilus-cd-burner
-rwxr-xr-x 1 root root 357810 6月19日 2004 /usr/bin/cdrecord*
-rwxr-xr-x 1 root root 71227 8月 2日 22:23 /usr/bin/nautilus-cd-burner*

$ ls -l /dev/cdrom /dev/scd0
lrwxrwxrwx 1 root root 4 8月18日 00:25 /dev/cdrom -> scd0
brw------- 1 kazu disk 11, 0 8月18日 00:25 /dev/scd0

$ id
uid=501(hoge) gid=503(hoge) 所属グループ=6(disk),503(hoge)

もちろん、前のリプライに書いた consolehelper を使うための設定は
全て消した状態でテストしています。


> # console user と root 以外で cdwrite グループにはいっている
> # ユーザは書き込めなくなりますが、そんな必要はないでしょうし。

まず大丈夫だと思います。
(0003933)
kazutaka   
2006-08-18 00:48   
> $ ls -l /dev/cdrom /dev/scd0
> lrwxrwxrwx 1 root root 4 8月18日 00:25 /dev/cdrom -> scd0
> brw------- 1 kazu disk 11, 0 8月18日 00:25 /dev/scd0
>
> $ id
> uid=501(hoge) gid=503(hoge) 所属グループ=6(disk),503(hoge)

中途半端にユーザ名を修正しようとして変な記述になってました。
実際には hoge と kazu は同じになっています。
(0003934)
kazutaka   
2006-08-27 11:13   
原因が分かりました。

nautilus-cd-burner が cdrecord を実行する時に、
デバイスを、cdrecord dev=1,0,0 のように SCSI ID
で指定する為、/dev/sg* の permission が無くて
エラーになっていました。
(CF-W4 の内蔵 CD ドライブは USB 接続の為)

手動で /dev/sg0 の owner を変更したところ、
nautilus-cd-burner で一般ユーザでも問題無く
CD 焼けることを確認しました。

またコマンドラインから直接 cdrecord dev=/dev/cdrom
としても、問題無く動作することも確認しました。

本来なら nautilus-cd-burner 側を、sym link を
参照するように変更すべきなのかも知れませんが、
ちょっと大変そうなので、console.perms で対応
する方が妥当かなと思います。
(0003935)
kazutaka   
2006-09-13 22:47   
> > 手動で /dev/sg0 の owner を変更したところ、
> > nautilus-cd-burner で一般ユーザでも問題無く
> > CD 焼けることを確認しました。
>
> xcdroastでも同じ問題が出ています。CDドライブはP-ATA接続でhddと
> なっています。
> Calling: /usr/lib/xcdroast-0.98/bin/xcdrwrap CDRECORD dev=
> "ATA:1,1,0" gracetime=2 fs=16384k driveropts=burnfree -v -
> useinfo speed=16 -dao -eject -pad -data "/var/tmp/track-01.iso"
> ...

/etc/security/console.perms.d/50-default.perms に
以下の記述を加えて、/dev/sg* の owner が
コンソールユーザーになるようにすれば、
一応対応できることは確認しました。

   <scsigeneric>=/dev/sg*
   <console> 0600 <scsigeneric> 0600 root

ちょっと安直な対応ですが、これでどんなもんでしょうか?
(0003936)
daisuke   
2006-09-14 04:55   
> /etc/security/console.perms.d/50-default.perms に
> 以下の記述を加えて、/dev/sg* の owner が
> コンソールユーザーになるようにすれば、
> 一応対応できることは確認しました。
>
> <scsigeneric>=/dev/sg*
> <console> 0600 <scsigeneric> 0600 root
>
> ちょっと安直な対応ですが、これでどんなもんでしょうか?

他のデバイスと同等なのでそれで問題ないと思います。
pamパッケージを修正しておいてもらえますか?
(0003937)
kazutaka   
2006-09-14 23:06   
> 他のデバイスと同等なのでそれで問題ないと思います。
> pamパッケージを修正しておいてもらえますか?

修正したパッケージ 0.99.3.0-0vl4 を upload しました。

状態を完了に変更します。

尚、xcdroast の類似する現象は別バグとして分割しました。