[[diary/Kojima]]

・gnome-screensaver 2

gnome-cdplayer とかが動くようになったので gnome-screensaver の認証問題を再調査.

ソースコードレベルで追いかけてみたけど,結論的には gs-auth-pam.c の中の
gs_auth_thread_fund で

 status = pam_authenticate (pam_handle, flags);

して,libpam の中の pam_authenticate で認証を行なっているだけだから,test-passwd で

 kojima@gnome[~/gnome-screensaver/build/src]% ./test-passwd 
 ** Message: pam_start ("gnome-screensaver", "kojima", ...) ==> 0 (Success)
 ** Message: Handling message style 1: 'Password: '
 ** Message: Waiting for respose to message style 1: 'Password: '
 ** Message: Waiting for lock
 ** Message: Waiting for response
 ** Message: Got message style 1: 'Password: '
 Password: ** Message: Got response
 ** Message: Got respose to message style 1: interrupt:0
 ** Message: Msg handler returned 1
 ** Message:    pam_authenticate (...) ==> 7 (Authentication failure)
 ** Message:  pam_end (...) ==> 0 (Success)
 ERROR: Incorrect password.
 Incorrect
 ** Message: pam_start ("gnome-screensaver", "kojima", ...) ==> 0 (Success)
 ** Message: Handling message style 1: 'Password: '
 ** Message: Waiting for respose to message style 1: 'Password: '
 ** Message: Waiting for lock
 ** Message: Waiting for response
 ** Message: Got message style 1: 'Password: '
 Password: 

このエラーを返しているのは libpam の中の pam_authenticate ということになるのだけど,
PAM を使っている他の認証系では問題なく通っている設定が,なぜ gnome-screensaver 
だけエラーになるのか不明.

gnome-screensaver の PAM の認証の設定は /etc/pam.d/gnome-screensaver になるので,
動いている login とか su とか cups とかの設定ファイルを gnome-screensaver 
にコピーして試してみたのだけど,ことごとくダメになるところを見ると gnome-screensaver 
側から libpam を呼び出す時の問題のような気はするのだけど,PAM を起動するやりとりを
見る限りでは特に問題はなさそうなのだがなぁ..
-もうしばらくジタバタしたところ、Linux-PAM を 0.77 から 1.0.1 に更新してやれば gnome-screensaver でも正しく認証できる模様。PAM まわりは結構影響が大きいのであまりいじりたくはないのだけど、さすがに 0.77 というのは古いから更新した方がいい気はするな。ただ、0.99 あたりから pam_stack.so がなくなって、include で別のサービスを呼ぶようになっているので、pam_stack.so を使っている設定ファイルは修正しないといけないなぁ。まぁ、GNOMEのビルドの時にも気にはなってたけど、最近のソフトウェアは PAM を使う場合、include system-auth を使うのが一般的なので、それに合わせるようにしておく方がいい気はするな。 -- [[kojima]] &new{2008-07-30 (水) 23:46:41};

ちなみに、うまくいった時の test-passwd はこんな感じだった。

 kojima@gnome[~/gnome-screensaver/build/src]% ./test-passwd
 ** Message: pam_start ("gnome-screensaver", "kojima", ...) ==> 0 (Success)
 ** Message: Handling message style 1: 'Password: '
 ** Message: Waiting for respose to message style 1: 'Password: '
 ** Message: Waiting for lock
 ** Message: Waiting for response
 ** Message: Got message style 1: 'Password: '
 Password: ** Message: Got response
 ** Message: Got respose to message style 1: interrupt:0
 ** Message: Msg handler returned 1
 ** Message:    pam_authenticate (...) ==> 0 (Success)
 ** Message: pam_acct_mgmt (...) ==> 0 (Success) 
 ** Message:    pam_setcred (...) ==> 0 (Success)
 ** Message:  pam_end (...) ==> 0 (Success)
 Correct!

これを見るかぎりでは、pam_authenticate のレベルの問題のように見えるが、
0.77 から何が変わったのだろう?

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS