[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[plamo:25383] Re: LDAPだけのユーザによるlogin



きどです。

名倉さん、加藤さん、ありがとうございます。

From: 名倉昭一 <nagura-s@ck.tnc.ne.jp>
Subject: [plamo:25380] Re: LDAPだけのユーザによる login
Date: Mon, 25 Apr 2005 20:19:36 +0900

>     /etc/nsswitch.conf
>   file ldap              ->  ldap files  
>     にすれば先にldap を 見て正常に認証できればそのままそれがエラーとなったとき
>   /etc/passwordを見にいくと思いましたが。

ldap -> files の順で試してみました。やはり、/etc/passwd に存在するアカ
ウントであれば login できますが、LDAP のみのアカウントでは不可です。
どうやら、いずれの場合も、LDAP 認証に失敗して、結局 /etc/passwd 認証に
なっているようです。ちなみに、/etc/nsswitch.conf で passwd, group, 
shadow を ldap だけにすると、/etc/passwd に存在するアカウントでも 
login できなくなります。

From: KATOH Yasufumi <karma@jazz.email.ne.jp>
Subject: [plamo:25381] Re: LDAPだけのユーザによる login
Date: Tue, 26 Apr 2005 10:29:58 +0900

> openldap のデバッグログを出力すると手がかり得られるかも知れませんよ.
> わかりにくいですが...

`/usr/libexec/slapd -d 1' で起動して出力を眺めてみました。たしかに、
よくわからないですね。

以下は、LDAP には存在して /etc/passwd には無いユーザ「test」で login に
失敗した時の出力です。

connection_get(12): got connid=0
connection_read(12): checking for input on id=0
ber_get_next
    :
    :
>>> dnPrettyNormal: <cn=admin,dc=teru,dc=kido,dc=com>
=> ldap_bv2dn(cn=admin,dc=teru,dc=kido,dc=com,0)
ldap_err2string
    :
    :
entry_decode: "uid=www,ou=People,dc=teru,dc=kido,dc=com"
<= entry_decode(uid=www,ou=People,dc=teru,dc=kido,dc=com)
=> bdb_dn2id( "uid=www,ou=people,dc=teru,dc=kido,dc=com" )
<= bdb_dn2id: got id=0x0000003c
bdb_search: 60 does not match filter
entry_decode: "uid=test,ou=People,dc=teru,dc=kido,dc=com"
<= entry_decode(uid=test,ou=People,dc=teru,dc=kido,dc=com)
=> bdb_dn2id( "uid=test,ou=people,dc=teru,dc=kido,dc=com" )
<= bdb_dn2id: got id=0x0000003d
=> send_search_entry: dn="uid=test,ou=People,dc=teru,dc=kido,dc=com"
ber_flush: 360 bytes to sd 12
<= send_search_entry
send_ldap_result: conn=0 op=1 p=3
send_ldap_response: msgid=2 tag=101 err=0
ber_flush: 14 bytes to sd 12
connection_get(12): got connid=0
connection_read(12): checking for input on id=0
ber_get_next
ber_get_next: tag 0x30 len 92 contents:
ber_get_next
ber_get_next on fd 12 failed errno=11 (Resource temporarily unavailable)
do_bind
ber_scanf fmt ({imt) ber:
ber_scanf fmt (m}) ber:
=> get_ctrls
ber_scanf fmt ({m) ber:
=> get_ctrls: oid="1.3.6.1.4.1.42.2.27.8.5.1" (noncritical)
<= get_ctrls: n=1 rc=0 err=""
>>> dnPrettyNormal: <uid=test,ou=People,dc=teru,dc=kido,dc=com>
=> ldap_bv2dn(uid=test,ou=People,dc=teru,dc=kido,dc=com,0)
ldap_err2string
<= ldap_bv2dn(uid=test,ou=People,dc=teru,dc=kido,dc=com)=0 Success
=> ldap_dn2bv(272)
ldap_err2string
<= ldap_dn2bv(uid=test,ou=People,dc=teru,dc=kido,dc=com)=0 Success
=> ldap_dn2bv(272)
ldap_err2string
<= ldap_dn2bv(uid=test,ou=people,dc=teru,dc=kido,dc=com)=0 Success
<<< dnPrettyNormal: <uid=test,ou=People,dc=teru,dc=kido,dc=com>, <uid=test,ou=people,dc=teru,dc=kido,dc=com>
do_bind: version=3 dn="uid=test,ou=People,dc=teru,dc=kido,dc=com" method=128
bdb_dn2entry("uid=test,ou=people,dc=teru,dc=kido,dc=com")
do_bind: v3 bind: "uid=test,ou=People,dc=teru,dc=kido,dc=com" to "uid=test,ou=People,dc=teru,dc=kido,dc=com"
send_ldap_result: conn=0 op=2 p=3
send_ldap_response: msgid=3 tag=97 err=0
ber_flush: 14 bytes to sd 12
connection_get(12): got connid=0
connection_read(12): checking for input on id=0
ber_get_next
ber_get_next: tag 0x30 len 51 contents:
ber_get_next
ber_get_next on fd 12 failed errno=11 (Resource temporarily unavailable)
do_bind
    :
    :

これを見る限り、LDAP は uid=test を見つけているようではあります。それ
以上はさっぱり意味不明で……。

ちなみに、以下は同じ時の /var/log/debug です。

slapd[1514]: conn=0 fd=12 ACCEPT from IP=127.0.0.1:2566 (IP=0.0.0.0:389) 
slapd[1515]: conn=0 op=0 BIND dn="cn=admin,dc=teru,dc=kido,dc=com" method=128 
slapd[1515]: conn=0 op=0 BIND dn="cn=admin,dc=teru,dc=kido,dc=com" mech=SIMPLE ssf=0 
slapd[1514]: connection_input: conn=0 deferring operation: binding 
slapd[1515]: conn=0 op=0 RESULT tag=97 err=0 text= 
slapd[1516]: conn=0 op=1 SRCH base="ou=People,dc=teru,dc=kido,dc=com" scope=1 deref=0 filter="(&(objectClass=posixAccount)(uid=test))" 
slapd[1516]: <= bdb_equality_candidates: (uid) index_param failed (18) 
slapd[1515]: conn=0 op=2 BIND anonymous mech=implicit ssf=0 
slapd[1515]: conn=0 op=2 BIND dn="uid=test,ou=People,dc=teru,dc=kido,dc=com" method=128 
slapd[1515]: conn=0 op=2 BIND dn="uid=test,ou=People,dc=teru,dc=kido,dc=com" mech=SIMPLE ssf=0 
slapd[1515]: conn=0 op=2 RESULT tag=97 err=0 text= 
slapd[1516]: conn=0 op=1 SEARCH RESULT tag=101 err=0 nentries=1 text= 
slapd[1515]: conn=0 op=3 BIND anonymous mech=implicit ssf=0 
slapd[1515]: conn=0 op=3 BIND dn="cn=admin,dc=teru,dc=kido,dc=com" method=128 
slapd[1515]: conn=0 op=3 BIND dn="cn=admin,dc=teru,dc=kido,dc=com" mech=SIMPLE ssf=0 
slapd[1515]: conn=0 op=3 RESULT tag=97 err=0 text= 
slapd[1514]: conn=0 fd=12 closed 

> > ####################################################################
> > /etc/ldap.conf
> > ####################################################################
> 
>   scope sub
>   ldap_version 3
> 
> でどうでしょう? ldap_version は関係ないと思いますけど,ldap.conf で
> dc=teru,dc=kido,dc=com を base と設定しているのでサブツリーまで検索し
> てもらうように設定しないと

これも試しましたが、とくに変化はありません。

openldap, nss_ldap, pam_ldap の設定の何かがいけないのだろうとは思いま
すが、それが何なのか。わたしの今のスキルではちょっと手詰まり状態です。
Debian では同じことがさしたる苦労もなくできただけに悔しいです。Debian 
との違いと言えば、nscd デーモンの有無くらいですが、これは関係ないよう
に思えますし……。なんとなく nss あたりが怪しいように思うのですが。

--
きど
rp9h-kd@asahi-net.or.jp

Follow-Ups
[plamo:25396] Re: LDAPだけのユーザによるlogin, TANAKA _FORZA_ Toshihisa
References
[plamo:25378] LDAPだけのユーザによるlogin, KIDO Hideyuki
[plamo:25381] Re: LDAPだけのユーザによるlogin, KATOH Yasufumi

[検索ページ] [メール一覧]
Plamo ML 公開システム