04/11/22 02:10:45
>>467
遅くなって申し訳ありません。レスありがとうございます。
fingerとgetpwentのソースを追いました。
途中で以下のような関数を呼び、
__nss_compat_getpwent_r(void *retval, void *mdata, va_list ap)
そいつがldapの関数を呼んで(関数ポインタにまかれて何の関数かわかりませんでした)
struct passwd構造体にアカウント情報を入れるようです。
大学ので行うときちんと格納される以下のように格納
__nss_compat_getpwent_r:USER=Axxyyz1
__nss_compat_getpwent_r:PASS=x
__nss_compat_getpwent_r:UID=16011
__nss_compat_getpwent_r:GID=10000
__nss_compat_getpwent_r:CHANG=(null)
__nss_compat_getpwent_r:CLASS=
__nss_compat_getpwent_r:GECOS=nana shi
__nss_compat_getpwent_r:HOMEDIR=/home/students/Axxyyz1
__nss_compat_getpwent_r:SHELL=/bin/csh
__nss_compat_getpwent_r:EXPIRE=(null)
__nss_compat_getpwent_r:FIELDS=(null)
で、成功を返します。
家から大学、家から自前のLDAPの場合は以下です。(値が入ってないところは略しました)
__nss_compat_getpwent_r:USER=Axxyyzz (データベースに格納されている最後のユーザー)
__nss_compat_getpwent_r:PASS=x
で、失敗を返します。