・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 を起動するやりとりを 見る限りでは特に問題はなさそうなのだがなぁ..
ちなみに、うまくいった時の 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 から何が変わったのだろう?