Portál AbcLinuxu, 10. května 2025 02:31

Dotaz: nss_ldap lookup problem

15.3.2007 20:15 timeos | skóre: 32
nss_ldap lookup problem
Přečteno: 487×
Odpovědět | Admin
Zdravim vospolok

mam zaujimavy problem s resolvovanim loginov na id na linuxe v konzole. Jedna sa o jeden linuxovy system vo firme, ktory taha adresar so zoznamom uzivatelov, identifikatorov, atp z ldap servera, ktory je na inom stroji. Ked napr chcem resolvnut napr login mclainj cez utilitku id, pricom taky zaznam v ldape existuje, tak vysledok je id: mclainj: No such user

Zaujimave je na tom to, ze pokial vytvorim zaznam pre daneho hladaneho uzivatela do lokalneho suboru /etc/passwd, tak okamzite ho id najde aj s tym, ze zobrazi zoznam skupin v ktorych sa uzivatel nachadza. Ale tieto skupiny maju od lokalnych daleko :). Vsetky vypisane su totiz tahane uz z LDAP-u.

A teraz trocha faktov:

system: Trustix Secure Linux release 3.0.5 (Mirch Masala) (nonstop aktualizovany) verzia resolvera: nss_ldap-250-3tr

konfiguracia: /etc/nsswitch.conf
...
passwd:     files ldap
shadow:     files ldap
group:      files ldap
...
/etc/ldap.conf
host 192.168.x.x
base dc=foo,dc=sk
uri ldap://192.168.x.x/
ldap_version 3
binddn cn=nssldap,ou=DSA,dc=foo,dc=sk
bindpw foopass
port 389
timelimit 10
bind_timelimit 10
bind_policy soft
nss_connect_policy persist
pam_login_attribute uid
nss_base_passwd ou=Users,dc=foo,dc=sk?one
nss_base_shadow ou=Users,dc=foo,dc=sk?one
nss_base_group  ou=Groups,dc=foo,dc=sk?one
nss_initgroups_ignoreusers root,ldap,named,dbus,haldaemon,postfix
ak Vas nieco napadne tak budem rad, lebo nejde ani tak o to aby som menil prava nad subormi ale skor o to, ze procmail nedorucuje potom postu lebo sa nedokaze setuidnut na usera (zatial to riesim priamo postfixom ale nieje to najstastnejsie riesenie)

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

15.3.2007 20:42 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: nss_ldap lookup problem
Odpovědět | | Sbalit | Link | Blokovat | Admin
Bez znalosti té LDAP databáze se dá jenom hádat, ale přeci jen – máte dobře přístupová práva? Zkusil jste dotaz na uživatele zadat přímo (přes nějaký nástroj na prohledávání LDAP, třeba konzolové nástroje)? Máte uživatele přímo pod ou=Users,dc=foo,dc=sk, tj. např. uid=mclainj,ou=Users,dc=foo,dc=sk a ne např. uid=mclainj,ou=Oddeleni1,ou=Users,dc=foo,dc=sk? Máte správně nastavené třídy objektů (objectClass) a správně vyplněné potřebné hodnoty (uid, uidNumber, gidNumber, cn, loginShell, homeDirectory, displayName, userPassword)? Nepoužíváte cache nscd a není v ní nakešována informace, že uživatel neexistuje?
15.3.2007 20:55 timeos | skóre: 32
Rozbalit Rozbalit vše Re: nss_ldap lookup problem
uzivatelia su priamo v podstrome ou=Users,dc=foo,dc=sk (preto to ?one)
Zkusil jste dotaz na uživatele zadat přímo (přes nějaký nástroj na prohledávání LDAP, třeba konzolové nástroje)?
pravda, to som este neskusal
Máte správně nastavené třídy objektů (objectClass) a správně vyplněné potřebné hodnoty (uid, uidNumber, gidNumber, cn, loginShell, homeDirectory, displayName, userPassword)?
na stroji s ldapom vsetko funguje ako ma, su pouzivane standartne schemy. ucty boli generovane aj pomocou smbldap-tools

pristupove prava su urcite dobre, ziadna vymena sprav medzi tymto ldap clientom a serverom neprehne.
Nepoužíváte cache nscd a není v ní nakešována informace, že uživatel neexistuje?
nscd nepouzivam
15.3.2007 21:00 timeos | skóre: 32
Rozbalit Rozbalit vše Re: nss_ldap lookup problem
takze
Zkusil jste dotaz na uživatele zadat přímo (přes nějaký nástroj na prohledávání LDAP, třeba konzolové nástroje)?
cez ldapsearch s tym nieje jediny problem
15.3.2007 20:50 timeos | skóre: 32
Rozbalit Rozbalit vše Re: nss_ldap lookup problem
Odpovědět | | Sbalit | Link | Blokovat | Admin
Takze este doplnujuce informacie co ma hned nenapadli: na inom linuxackom serveri (fedora4) s tym niesu ziadne problemy, ide to ako hodinky.

Pri pokuse resolvnut (z toho problemoveho kompa) nieje vyvolane ziadne spojenie medzi ldap clientom a serverom (log nic neukaze). Nieje mozne nejak debugovat proces resolvovania? resp zistit ci nieco nechyba, nejaka kniznica, resp ci nemaju zle umiestnenie a pod.

este dodam, ze povodne bola instalovana beta verzia Trustix linuxu na ten server v tej istej verzii. Ale upgradmi sa aktualizovala az na terajsi stable stav. Reinstalacia by teraz nebola najvhodnejsia, kedze je to teraz kriticky server s dolezitymi sluzbami (ano viem, nemal som instalovat beta verziu na stroj, ktory ma plnit dolezitejsie ulohy ale inak s nim niesu ziadne problemy, staru dvojku som tam nechcel davat)
15.3.2007 21:10 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: nss_ldap lookup problem
Zjišťování údajů probíhá přímo z procesu, který spouštíte (tedy ve vašem případě id), nss se v něm používá jako dynamická knihovna. Ujistěte se, že se nepoužívá nscd cache, pak by spojení taky nejspíš vůbec nenastalo. Taky je potřeba počítat s tím, že změny v konfiguračních souborech se mohou projevit až později (myslím, že až při novém přihlášení do shellu). Zkusil bych taky sledovat přes tcpdump, zda se spojení vůbec nenavazuje, nebo ze strany vašeho PC pokus o spojení je, ale LDAP server je třeba odmítne.
15.3.2007 21:36 timeos | skóre: 32
Rozbalit Rozbalit vše Re: nss_ldap lookup problem
Ujistěte se, že se nepoužívá nscd cache, pak by spojení taky nejspíš vůbec nenastalo.
sluzba nscd nieje ani nainstalovana

Taky je potřeba počítat s tím, že změny v konfiguračních souborech se mohou projevit až později (myslím, že až při novém přihlášení do shellu).
ano napadlo ma to, preto som po nejakych zasahoch do tych konfigurakov po case aj uplne restartoval system :-)

Zkusil bych taky sledovat přes tcpdump, zda se spojení vůbec nenavazuje, nebo ze strany vašeho PC pokus o spojení je, ale LDAP server je třeba odmítne.
no ten tcpdump mozem este skusit. neriesil som to doteraz aj koly tomu, ze zvyseny verbose log z ldap servera (loglevel 1441) neobsahoval ziadnu query na resolvovaneho usera.
15.3.2007 22:10 timeos | skóre: 32
Rozbalit Rozbalit vše Re: nss_ldap lookup problem
Zkusil bych taky sledovat přes tcpdump, zda se spojení vůbec nenavazuje, nebo ze strany vašeho PC pokus o spojení je, ale LDAP server je třeba odmítne.
pri id query, bez jedineho presunuteho packetu
16.3.2007 08:17 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: nss_ldap lookup problem
Zkuste se podívat, zda máte v systému všechny knihovny, které nssldap potřebuje
ldd /lib/libnss_ldap.so.3
A máte opravdu v systému knihovny pro verzi LDAP 3?
16.3.2007 10:39 timeos | skóre: 32
Rozbalit Rozbalit vše Re: nss_ldap lookup problem
A máte opravdu v systému knihovny pro verzi LDAP 3?
tak to je dobra otazka :-)
mam tam tuto:
ls /lib/libnss_ldap* /lib/libnss_ldap-2.3.5.so /lib/libnss_ldap.so.2 -> libnss_ldap-2.3.5.so takze otazka: je to kniznica pre LDAPv3 ? (lebo Vy tam mate *.so.3)
Zkuste se podívat, zda máte v systému všechny knihovny, které nssldap potřebuje
Zda sa ze hej:
ldd /lib/libnss_ldap.so.2     
        linux-gate.so.1 =>  (0xffffe000)
        libldap-2.2.so.7 => /usr/lib/libldap-2.2.so.7 (0xb7f3f000)
        liblber-2.2.so.7 => /usr/lib/liblber-2.2.so.7 (0xb7f33000)
        libgssapi_krb5.so.2 => /usr/lib/libgssapi_krb5.so.2 (0xb7f1c000)
        libdl.so.2 => /lib/libdl.so.2 (0xb7f19000)
        libnsl.so.1 => /lib/libnsl.so.1 (0xb7f00000)
        libresolv.so.2 => /lib/libresolv.so.2 (0xb7eea000)
        libc.so.6 => /lib/tls/libc.so.6 (0xb7db2000)
        libpthread.so.0 => /lib/tls/libpthread.so.0 (0xb7da1000)
        libgnutls.so.12 => /usr/lib/libgnutls.so.12 (0xb7d31000)
        libgnutls-extra.so.12 => /usr/lib/libgnutls-extra.so.12 (0xb7d0b000)
        libgcrypt.so.11 => /usr/lib/libgcrypt.so.11 (0xb7cbd000)
        libsasl2.so.2 => /usr/lib/libsasl2.so.2 (0xb7ca7000)
        libssl.so.0.9.7 => /usr/lib/libssl.so.0.9.7 (0xb7c78000)
        libcrypto.so.0.9.7 => /usr/lib/libcrypto.so.0.9.7 (0xb7b7d000)
        libkrb5.so.3 => /usr/lib/libkrb5.so.3 (0xb7b11000)
        libk5crypto.so.3 => /usr/lib/libk5crypto.so.3 (0xb7aeb000)
        libcom_err.so.2 => /lib/libcom_err.so.2 (0xb7ae8000)
        libkrb5support.so.0 => /usr/lib/libkrb5support.so.0 (0xb7ae5000)
        /lib/ld-linux.so.2 (0x80000000)
        libgpg-error.so.0 => /usr/lib/libgpg-error.so.0 (0xb7ae1000)
        libz.so.1 => /usr/lib/libz.so.1 (0xb7ace000)
        libcrypt.so.1 => /lib/libcrypt.so.1 (0xb7aa0000)
16.3.2007 11:18 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: nss_ldap lookup problem
Já tam mám *.so.3, protože se domnívám, že to by byla knihovna pro verzi 3. Jinak na svém systému mám taky pouze *.so.2 a v konfiguračním souboru je ldap_version zakomentované
# The LDAP version to use (defaults to 3
# if supported by client library)
#ldap_version 3
A podle komentáře bych hádal, že se pokusí použít verzi 3, a když jí knihovna nepodporuje, zkusí nižší verzi. Ale momentálně to mám v konfiguračních souborech spíš jen na ozdobu, protože LDAP teď zrovna nepoužívám.
16.3.2007 13:50 timeos | skóre: 32
Rozbalit Rozbalit vše Re: nss_ldap lookup problem
Takze este doplnim. V otazke som spomenul, ze sa to resolvovanie chova cudne v tom, ze ked je login uzivatela v lokalnom subore passwd, tak id ho rozpozna dobre s tym, ze vypise aj jeho LDAP-ove skupiny, ktore nie su v lokalnych suboroch a ktorych je on clenom. Skusal som ten isty resolv s tym, ze som zapol tcpdump. Pri resolvovani daneho usera, ktory je clenom skupin uvedenych len v LDAP-e, bol zaznamenany traffic. V logoch LDAP-u bolo vidiet dotazy IP clienta, ale query sa tykali iba skupin (pri vsetkych dotazoch bola sucastou filtra tato formula: objectClass=posixGroup ), nie priamo na uzivatela, a search base bola pri operaciach hladania stanovena na SRCH base="dc=foo,dc=sk", z coho mi vychadza, ze direktiva nss_base_group ou=Groups,dc=foo,dc=sk?one v /etc/ldap.conf bola spokojne zignorovana :-(.
16.3.2007 14:39 iwik
Rozbalit Rozbalit vše Re: nss_ldap lookup problem
Odpovědět | | Sbalit | Link | Blokovat | Admin
ahoj, pozeram ako to mam u seba a ja u seba mam okrem /etc/nsswitch.conf este aj subor

/etc/nsswitch.ldap
#ident $Id: nsswitch.ldap,v 2.4 2003/10/02 02:36:25 lukeh Exp $
#
# An example file that could be copied over to /etc/nsswitch.conf; it
# uses LDAP conjunction with files.
#
# "hosts:" and "services:" in this file are used only if the
# /etc/netconfig file has a "-" for nametoaddr_libs of "inet" transports.

# the following two lines obviate the "+" entry in /etc/passwd and /etc/group.
passwd:         files ldap
group:          files ldap

# consult DNS first, we will need it to resolve the LDAP host. (If we
# can't resolve it, we're in infinite recursion, because libldap calls
# gethostbyname(). Careful!)
hosts:          dns ldap

# LDAP is nominally authoritative for the following maps.
services:   ldap [NOTFOUND=return] files
networks:   ldap [NOTFOUND=return] files
protocols:  ldap [NOTFOUND=return] files
rpc:        ldap [NOTFOUND=return] files
ethers:     ldap [NOTFOUND=return] files

# no support for netmasks, bootparams, publickey yet.
netmasks:   files
bootparams: files
publickey:  files
automount:  files

# I'm pretty sure nsswitch.conf is consulted directly by sendmail,
# here, so we can't do much here. Instead, use bbense's LDAP
# rules ofr sendmail.
aliases:    files
sendmailvars:   files

# Note: there is no support for netgroups on Solaris (yet)
netgroup:   ldap [NOTFOUND=return] files

16.3.2007 17:39 timeos | skóre: 32
Rozbalit Rozbalit vše Re: nss_ldap lookup problem
No podla vsetkeho je tento subor len ukazkou, ako vyuzit ldap ako backend pre Nameservice Switch.
Z komentara so suboru aj vyplyva:
# An example file that could be copied over to /etc/nsswitch.conf; it
# uses LDAP conjunction with files.
Aj ma napadlo, ze moze mat nejaky konfiguracny subor iny nazov, ako je bezny (napr libnss-ldap.conf v debiane miesto bezneho ldap.conf). Skusil som ale odobrat zdroj ldap z riadku group: files ldap zo suboru nsswitch.conf. Po odobrati uz nedokaze asociovat LDAP skupiny pre dotazovaneho uzivatela. Takze vyzera, ze tento subor ma spravny nazov.
5.6.2007 16:43 timeos | skóre: 32
Rozbalit Rozbalit vše Re: nss_ldap lookup problem
Odpovědět | | Sbalit | Link | Blokovat | Admin
Vyriesene!

Cas: 14:35, 5.6.2007 SEC :) Prisiel som na to po skompilovani kniznice nss_ldap s --enable-debugging kde pri pouziti som videl co sa vlastne deje... Pri volani utility id s parametrom mena uzivatela ma kniznica obdarila tymto logom:
nss_ldap: ==> _nss_ldap_enter
nss_ldap: <== _nss_ldap_enter
nss_ldap: ==> _nss_ldap_getbyname
nss_ldap: ==> _nss_ldap_search_s
nss_ldap: ==> do_init
nss_ldap: ==> do_close
nss_ldap: <== do_close
nss_ldap: ==> do_close
nss_ldap: <== do_close
nss_ldap: ==> do_atfork_setup
nss_ldap: <== do_atfork_setup
nss_ldap: ==> _nss_ldap_add_uri
nss_ldap: <== _nss_ldap_add_uri: added URI ldap://ldap.foo.sk/
nss_ldap: <== do_init (failed to read config)
nss_ldap: <== _nss_ldap_search_s
nss_ldap: ==> _nss_ldap_leave
nss_ldap: <== _nss_ldap_leave
...
no a uz sa to zacalo krystalizovat. Sice som nechapal v com moze byt ten konfigurak ldap.conf na figu, tak som si vytvoril novy, do ktoreho som pregrepol vsetky odkomentovane prikazy z prveho suboru a ... voila!! ono sa to rozbehlo :)

Takze asi musi byt v povodnom subore nejaky zakerny znak ktory sposoboval, ze subor neparsol cely a resolving bol v podstate nefunkcny. Stary subor som si este nechal a niekedy niecim prebehnem aby som zistil co ma oberalo o volne vecere a nedalo mi spat :)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.