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

Re: login, pam, ldap und anderes



On Wed, Nov 30, 2005 at 04:13:56PM +0100, Michelle Konzack wrote:

> einsetzen kann.  Nun ist es so, das ich nicht so recht mit der
> funktionsweise von LDAP vertaut bin, aber das Problem ist folgendes:

Mach Dich doch mal vertraut, fliegen doch genug Howtos rum im Netz,
ganz abgesehen von diversen Büchern.

> Wenn das System per pam_ldap configuriert ist und sich jemand einlogt,
> woher kommen solche Sachen wie $HOME und $SHELL, bzw UID/GID?

PAM ist nur die eine Seite der Medaille, die andere ist NSS, welche mit
dem benötigten Modul (libnss_ldap, libnss_pgsql1, libnss_mysql...) und
den entsprechenden Einträgen in /etc/nsswitch.conf aufgesetzt wird.

Es geht also um 2 Dinge: die reine Authentifizierung (->PAM) und den
Namensdienst, welcher über die libc und NSS geregelt wird (->NSS).

> Wenn ich das richtig verstehe, guckt "login" bei einem login per
> pam_* nach, ob der $USER einloggen darf und authentifiziert.

Ja.

> Das funktioniert bis hierhin mit allen, also
> 
> 1)      pam_unix        =>      /etc/passwd, /etc/shadow
> 2)      pam_ldap        =>      LDAP Server
> 3)      pam_pgsql       =>      PostgreSQL Server
> 
> Desweiteren gibt es ja auch noch Radius und NIS.

Ja, wobei aber Radius und NIS jeweils mehr bieten als nur die reine
Authentifizierung, NIS ist zum Beispiel _auch_ Namensdienst,
vergleichbar mit einem LDAP-Setup.

> Nun geht 'login' her und guckt unter 1) nach, welche Umgebung es
> setzen muß.  Ich gehe davon aus, das es bei 2) genauso ist und
> die Infos in der LADP Datenbank gespeichert sind.

Ja, hier wirkt libnss_ldap...

> Die Frage ist, warum geht das nicht mit pam_pgsql?

Dir fehlt der Namensdienst: libnss_pgsql1, s.o.

> Kann es sein, das 'login' das im Sourcecode verankert hat, das es in
> der LDAP Datenbank nach den Infos sieht ?

Login nicht, sondern die libc weiss durch die Konfiguration in
/etc/nsswitch.conf, wo sie die Infos herbekommt.

> Ich verwende zur authentifizierung pam_pgsql und alle infos habe ich
> bereits in meiner PostgreSQL in den Tabellen "auth", "userinfo".
> 
> Also es geht mit jetzt nur noch, wie ich das Problem mit der UID, 
> GID, GECOS, $HOME und $SHELL sowie der Gruppen lösen kann.

$ apt-cache show libnss-pgsql1

Allerdings weiss ich nicht, wie gut das funktioniert. Gerade diese
Anfragen (uid, gid, ...) sind sehr häufig und damit "teuer". Ich kann
mir vorstellen, dass eine Lösung mit PostgreSQL nicht so toll
skaliert. LDAP hingegen ist für solche Anwendungen (sehr viele
Lesezugriffe, wenig Schreibzugriffe) konzipiert und skaliert auch bei
grossen Userzahlen noch sehr gut. Ausserdem kriegt man noch 2 Bonbons
mit LDAP dazu: die Daten lassen sich sehr einfach replizieren
(Ausfallsicherheit, Lastverteilung) und noch wichtiger: die Integration
von Samba. Dadurch erhält man im heterogenen Netz die "single source of
sign on", kann auch mit Samba BDCs realisieren usw...

Gruss,
Uwe



Reply to: