LDAP, PAM und NSS: Login klappt, passwd nicht

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
melle
Beiträge: 3
Registriert: 05.02.2009 22:40:13

LDAP, PAM und NSS: Login klappt, passwd nicht

Beitrag von melle » 05.02.2009 23:11:57

Hallo,

ich versuche auf meinem Server LDAP zur Benutzerauthentifizierung zu verwenden. Soweit klappt es auch ganz gut: die Testusers können sich einloggen, doch leider können sie das Passwort mit passwd nicht ändern. Es gibt immer diese Fehlermeldung:

Code: Alles auswählen

melle@iggy:/etc/pam.d$ passwd
passwd: Fehler beim Ändern des Authentifizierungstoken
passwd: password unchanged
Ich habe jetzt schon zwei Abende sämtliche Configs angesehen und diverse Suchmaschinen befragt, jedoch ohne einen Hinweis zu finden, was bei mir schief läuft.
Im auth.log findet sich zum gescheiterten passwd-Aufruf folgendes:

Code: Alles auswählen

pam_ldap: ldap_search_s No such object
pam_unix(passwd:chauthtok): username [melle] obtained
pam_unix(passwd:chauthtok): user "melle" does not exist in /etc/passwd
Es sieht also so aus, als ob der User im LDAP nicht gefunden wird. Er existiert natürlich und ldapsearch liefert auch das korrekte Userobjekt zurück. Im slapd-Log gibt es pro passwd-Aufruf drei Suchanfragen. Zwei gelingen und die dritte schlägt immer fehl. Einziges Merkmal der dritten Suchanfrage ist der Suchfilter:

Code: Alles auswählen

filter="(&(objectClass=posixAccount)(objectClass=posixAccount)(uid=melle))" 
die anderen Suchanfragen verwenden nur

Code: Alles auswählen

filter="(&(objectClass=posixAccount)(uid=melle))" 
beide Filter sind natürlich gleichwertig. ldapsearch findet auch mit beiden Filtern den korrekten User. Aber warum der letzte Filter anders formuliert wird und warum er bei passwd fehlschlägt (err=32) verstehe ich nicht. Hier ist der slapd.log-Auszug:

Code: Alles auswählen

conn=40 fd=23 ACCEPT from IP=127.0.0.1:42489 (IP=127.0.0.1:389) 
conn=40 op=0 BIND dn="cn=admin,dc=freifunk-potsdam,dc=de" method=128 
conn=40 op=0 BIND dn="cn=admin,dc=freifunk-potsdam,dc=de" mech=SIMPLE ssf=0 
conn=40 op=0 RESULT tag=97 err=0 text= 
conn=40 op=1 SRCH base="ou=kommune,ou=people,dc=freifunk-potsdam,dc=de" scope=1 deref=0 filter="(&(objectClass=posixAccount)(uid=melle))" 
conn=40 op=1 SRCH attr=uid userPassword uidNumber gidNumber cn homeDirectory loginShell gecos description objectClass 
<= bdb_equality_candidates: (uid) not indexed 
conn=40 op=1 SEARCH RESULT tag=101 err=0 nentries=1 text= 
conn=40 op=2 SRCH base="ou=kommune,ou=people,dc=freifunk-potsdam,dc=de" scope=1 deref=0 filter="(&(objectClass=posixAccount)(uid=melle))" 
conn=40 op=2 SRCH attr=uid userPassword uidNumber gidNumber cn homeDirectory loginShell gecos description objectClass 
<= bdb_equality_candidates: (uid) not indexed 
conn=40 op=2 SEARCH RESULT tag=101 err=0 nentries=1 text= 
conn=41 fd=24 ACCEPT from IP=127.0.0.1:42490 (IP=127.0.0.1:389) 
conn=41 op=0 BIND dn="cn=admin,dc=freifunk-potsdam,dc=de" method=128 
conn=41 op=0 BIND dn="cn=admin,dc=freifunk-potsdam,dc=de" mech=SIMPLE ssf=0 
conn=41 op=0 RESULT tag=97 err=0 text= 
conn=41 op=1 SRCH base="dc=freifunk-potdam,dc=de" scope=1 deref=0 filter="(&(objectClass=posixAccount)(objectClass=posixAccount)(uid=melle))" 
conn=41 op=1 SEARCH RESULT tag=101 err=32 nentries=0 text= 
conn=41 op=2 UNBIND 
conn=41 fd=24 closed 
conn=40 fd=23 closed (connection lost) 
Die /etc/nsswicht.conf sieht so aus:

Code: Alles auswählen

passwd:         files ldap
group:          files ldap
shadow:         files ldap
hosts:          files dns
networks:       files
protocols:      db files
services:       db files
ethers:         db files
rpc:            db files
netgroup:       nis
und in /etc/pam.d/ findet sich folgendes:

Code: Alles auswählen

melle@iggy:/etc/pam.d$ grep -v "^#" common-*
common-account:account     sufficient    pam_ldap.so debug
common-account:account     required      pam_unix.so try_first_pass
common-auth:auth           sufficient    pam_ldap.so debug
common-auth:auth           required      pam_unix.so nullok_secure try_first_pass
common-password:password   sufficient    pam_ldap.so debug
common-password:password   sufficient    pam_unix.so nullok obscure min=4 max=8 md5 try_first_pass debug
common-password:password   required      pam_deny.so
common-session:session     required      pam_limits.so
common-session:session     required      pam_unix.so
common-session:session     optional      pam_ldap.so debug
common-session:session     required      pam_mkhomedir.so skel=/etc/skel umask=0022
Für sachdienliche Hinweise, was hier schief läuft, bin ich wirklich sehr dankbar :-)

Sarem_Avuton
Beiträge: 546
Registriert: 16.12.2004 09:58:27
Wohnort: Leipzig

Re: LDAP, PAM und NSS: Login klappt, passwd nicht

Beitrag von Sarem_Avuton » 06.02.2009 10:59:30

Hallo,

was gibt denn

Code: Alles auswählen

getent passwd
?
Wie sieht denn pam_ladp.conf aus ?
Hier mal meine pam.d 's

Code: Alles auswählen

common-account:account sufficient	pam_ldap.so
common-account:account	required	pam_unix.so

common-auth:auth	sufficient 	pam_ldap.so
common-auth:auth	required	pam_unix.so nullok_secure use_first_pass

common-password:password   sufficient	pam_ldap.so
common-password:password   required   pam_unix.so nullok obscure min=4 max=8 md5

common-session:session	required	pam_unix.so
common-session:session required pam_mkhomedir.so skel=/etc/skel umask=0022
vg Jörg

melle
Beiträge: 3
Registriert: 05.02.2009 22:40:13

Re: LDAP, PAM und NSS: Login klappt, passwd nicht

Beitrag von melle » 06.02.2009 11:56:21

getent liefert korrekte Werte (der User und die Gruppe liegt im ldap):

Code: Alles auswählen

melle@iggy:~$ getent passwd | grep melle
melle:x:1000:100:Testuser:/home/melle:/bin/bash
melle@iggy:/etc/pam.d$ getent shadow | grep melle
melle:*:::::::0
melle@iggy:/etc/pam.d$ getent group | grep melle
users:x:100:melle,...,...
melle:*:1000:1000
die pam_ldap.conf sieht so aus:

Code: Alles auswählen

base dc=freifunk-potdam,dc=de
bind_policy soft
ldap_version 3
pam_filter objectclass=posixAccount
pam_login_attribute uid
pam_member_attribute memberuid
pam_password crypt
pam_password exop
rootbinddn cn=admin,dc=freifunk-potsdam,dc=de
scope one
uri ldap://localhost/
Ich habe mal Deine pam.d config getestet, aber das macht keinen Unterschied. Ich vermute den Fehler irgendwo in /etc/*nss* :?

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: LDAP, PAM und NSS: Login klappt, passwd nicht

Beitrag von rendegast » 06.02.2009 23:49:55

base dc=freifunk-potdam,dc=de
...
rootbinddn cn=admin,dc=freifunk-potsdam,dc=de
conn=40 op=2 SRCH base="ou=kommune,ou=people,dc=freifunk-potsdam,dc=de" scope=1 deref=0 filter="(&(objectClass=posixAccount)(uid=melle))"
conn=40 op=2 SRCH attr=uid userPassword uidNumber gidNumber cn homeDirectory loginShell gecos description objectClass
<= bdb_equality_candidates: (uid) not indexed
conn=40 op=2 SEARCH RESULT tag=101 err=0 nentries=1 text=
conn=41 fd=24 ACCEPT from IP=127.0.0.1:42490 (IP=127.0.0.1:389)
conn=41 op=0 BIND dn="cn=admin,dc=freifunk-potsdam,dc=de" method=128
conn=41 op=0 BIND dn="cn=admin,dc=freifunk-potsdam,dc=de" mech=SIMPLE ssf=0
conn=41 op=0 RESULT tag=97 err=0 text=
conn=41 op=1 SRCH base="dc=freifunk-potdam,dc=de" scope=1 deref=0 filter="(&(objectClass=posixAccount)(objectClass=posixAccount)(uid=melle))"
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

melle
Beiträge: 3
Registriert: 05.02.2009 22:40:13

Re: LDAP, PAM und NSS: Login klappt, passwd nicht

Beitrag von melle » 07.02.2009 15:56:28

base dc=freifunk-potdam,dc=de
...
rootbinddn cn=admin,dc=freifunk-potsdam,dc=de
gnaaa :oops:

da habe ich den Wald vor lauter Bäumen nicht gesehen... das grundsätzliche Problem ist damit aber leider noch nicht gelöst, d.h. passwd schlägt weiterhin fehl.

Die Meldung

Code: Alles auswählen

pam_ldap: ldap_search_s No such object
ist mit der korrekten search base verschwunden, aber

Code: Alles auswählen

pam_unix(passwd:chauthtok): user "melle" does not exist in /etc/passwd
taucht immer noch auf. Ich habe im Netz eine Erklärung gefunden, die sagt, dass es korrekt ist, weil der User ja von pam_ldap gefunden wird. Trotzdem ist das natürlich mehr als unbefriedigend, wenn die User auf der Shell das Passwort nicht ändern können :-(

Irgendetwas stimmt mit diesem Auth-Token nicht, aber ich habe keine Idee, was...

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Re: LDAP, PAM und NSS: Login klappt, passwd nicht

Beitrag von Duff » 06.01.2010 10:00:37

Die Fehlermeldung kommt, weil der User nicht auf dem System in der Datei /etc/passwd existiert. Aber im LDAP gefunden wird und daraus genommen wird.

Willst du nun dein Passwort über passwd ändern, so dass das Passwort im LDAP geändert wird, muss du noch folgendes in die Datei /etc/pam.d/common-password eintragen:

Code: Alles auswählen

password required pam_passwdqc.so min=disabled,16,12,8,6 max=256
password sufficient pam_unix.so use_authtok
password sufficient pam_ldap.so Use_first_pass use_authtok
password required pam_deny.so
Oh, yeah!

Antworten