[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[linux-users:89998] Re: pam_mkhomedir が正常に動作しない


こんにちは、倉谷です。

原田さんお返事ありがとうございました。

教えていただいたようにソースを修正し、
再び実験してみましたところ、
ログには以下のように出力されました。
/home/foo ディレクトリを作成できる権限がないというメッセージですかね。
-----------------------------------------------------------
日時 ホスト PAM-mkhomedir[5640]: unable to create home diretory /home/foo: error Permission denied
日時 ホスト su(pam_unix)[5640]: session opened for user foo by hoge(uid=0)
-----------------------------------------------------------

/home ディレクトリのアクセス権設定は次のようになっております。
drwxr-xr-x  root  root  home/

ユーザー foo に /home への書き込み権限がないからだめなのでしょうか。
そこで、/home を chmod 777 にして、もう一度実験してみましたところ、
以前と同様に以下のメッセージが出ましたが、
-----------------------------------------------------------
su: warning: cannot change directory to /home/foo: No such file or directory
Creating home directory '/home/foo'.
could not open session
-----------------------------------------------------------

しかし、/home/foo は作成されました。
drwxr-xr-x  foo  root  foo/


とりあえず原因は突き止めることができました。
原田さんありがとうございました。
ですが、以前として次の問題があります。
(1) /home をアクセス権 777 に設定したくない。
(2) ホームディレクトリが存在しない場合、一回目の su でホームディレクトリを
    作成してくれるが、su 自体は失敗する。したがって2回目の su で初めて成功する。

(1) の問題を回避するには PAM モジュールの中で root 権限を取得しないと
いけないのでしょうね。PAM モジュールの書き方を知らないのですが、
一度勉強してみようと思います。

(2) については、"su: warning: cannot change directory to..." という警告を
出しているモジュールによって失敗させられているように思いますので、
そのモジュールが何であるかをまず突き止めてみないといけませんね。

以上の事柄について、調べてみることにします。

このようなバグが解決されていないのは、
pam_mkhomedir を使う人があんまりいないからでしょうかね。
もし完全なソースが作成できたら、有益なフィードバックになりそうなので、
ご報告したいと思います。



> 原田です。
>
(中略) 
>
> うーん…検索してみましたが、同じ現象に遭遇した方が何人かいるのに、解決策はどこ
> にもないみたいですね。
> とりあえず、下のパッチをmodules/pam_mkhomedir/pam_mkhomedir.cに当てて再コンパ
> イルすれば、何かわかる…かもしれません。
> あと、実際のユーザ名は何なんでしょうか?
> 
> **************************切り取り線**************************
> --- pam_mkhomedir.c_ORIG        Wed Dec 12 03:10:06 2001
> +++ pam_mkhomedir.c     Wed Dec 12 03:11:09 2001
> @@ -39,6 +39,8 @@
>  #include <stdio.h>
>  #include <string.h>
>  #include <dirent.h>
> +#include <errno.h>
> +
>  
>  /*
>   * here, we make a definition for the externally accessible function
> @@ -198,8 +200,8 @@
>     /* Crete the home directory */
>     if (mkdir(pwd->pw_dir,0700) != 0)
>     {
> +      _log_err(LOG_DEBUG, "unable to create home directory %s: error %s",pwd->pw_dir,strerror(errno));
>        free(remark);
> -      _log_err(LOG_DEBUG, "unable to create home directory %s",pwd->pw_dir);
>        return PAM_PERM_DENIED;
>     }   
>     if (chmod(pwd->pw_dir,0777 & (~UMask)) != 0 ||
> **************************切り取り線**************************
> 
> 

この情報があなたの探していたものかどうか選択してください。
yes/まさにこれだ!   no/違うなぁ   part/一部見つかった   try/これで試してみる

あなたが探していた情報はどのようなことか、ご自由に記入下さい。特に「まさにこれだ!」と言う場合は記入をお願いします。
例:「複数のマシンからCATV経由でipmasqueradeを利用してWebを参照したい場合の設定について」