Hallo, mitlerweile habe ich meinen slapd am Laufen. Nun versuche ich den 2. Schritt zu machen -- Benutzerauthentifizierung mittels ldap.
Folgendes Situation besteht:
ein getent passwd gibt mir alle lokalen Benutzer und die des LDAP aus (allerdings nur unter root, normale Benutzer sehen nur die lokalen Nutzer). Soweit so gut. Jetzt kann ich mit su zu einem ldap Nutzer springen, allerdings wird kein Passwort verlangt, obwohl ich im ldap eins gesetzt habe. Wenn ich der ldap Benutzer bin kann ich auch mit passwd mein Passwort nicht wechseln.
Hier mal meine Konfiguration - ich verwende erstmal nur die slapd.conf und nicht das neue cn=config System.
slapd.conf
Code: Alles auswählen
root@vserver-squeeze:/home/chr# cat /etc/ldap/slapd.conf
# ldap slapd.conf -- christian 2010-11-19 13:31
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/nis.schema
pidfile /var/run/slapd/slapd.pid
#argsfile /var/run/slapd.args
# logging
logfile /var/log/slapd.log
loglevel 1
# dynamically loaded modules are here
modulepath /usr/lib/ldap
moduleload back_hdb
# serverid
ServerID 1
## DEFAULT FOR ALL DBs
# backend to use
backend hdb
sizelimit unlimited
## DB DEFINITION #1
# backend to use
database hdb
# base DN
suffix "dc=port17,dc=de"
checkpoint 512 30
# directory where the db is physically stored
directory "/var/lib/ldap"
index objectClass eq
# admin
rootdn "cn=admin,dc=port17,dc=de"
rootpw {SSHA}9NfAmVdSMT3k4g8K96rDkjmWtQ1JTTnY
# admin and owner can change his password
access to attrs=userPassword
by dn="cn=admin,dc=port17,dc=de" write
by anonymous auth
by self write
by * none
# everyone can read supportedSASLMechanisms
access to dn.base="" by * read
# only admin can write worldwide, others can only read
access to *
by dn="cn=admin,dc=port17,dc=de" write
by * read
# tls
TLSCertificateFile /etc/ssl/certs/server_192-168-1-9.cert
TLSCertificateKeyFile /etc/ssl/certs/server_192-168-1-9.key
TLSCACertificateFile /etc/ssl/certs/cacert.pem
TLSVerifyClient allow
root@vserver-squeeze:/home/chr#
ldap.conf
Code: Alles auswählen
root@vserver-squeeze:/home/chr# cat /etc/ldap/ldap.conf
BASE dc=port17,dc=de
URI ldap://127.0.0.1
#TLS_CACERT /etc/ssl/certs/cacert.pem
#SSL start_tls
root@vserver-squeeze:/home/chr#
pam_ldap.conf
Code: Alles auswählen
root@vserver-squeeze:/home/chr# cat /etc/pam_ldap.conf
###DEBCONF###
base dc=port17,dc=de
host ldap://127.0.0.1
ldap_version 3
bind_policy soft
pam_filter objectclass=posixAccount
pam_login_attribute uid
pam_member_attribute memberuid
#pam_password crypt
pam_password exop
rootbinddn cn=admin,dc=port17,dc=de
root@vserver-squeeze:/home/chr#
libnss_ldap.conf
Code: Alles auswählen
root@vserver-squeeze:/home/chr# cat /etc/libnss-ldap.conf
###DEBCONF###
base dc=port17,dc=de
uri ldap://127.0.0.1
ldap_version 3
bind_policy soft
nss_schema nis
#nss_map_attribute uniqueMember member
nss_base_passwd dc=port17,dc=de
nss_base_shadow dc=port17,dc=de
#nss_base_group dc=port17,dc=de
rootbinddn cn=admin,dc=port17,dc=de
root@vserver-squeeze:/home/chr#
nsswitch.conf
Code: Alles auswählen
root@vserver-squeeze:/home/chr# cat /etc/nsswitch.conf
passwd: compat ldap
group: compat ldap
shadow: compat ldap
hosts: files dns
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
root@vserver-squeeze:/home/chr#
pam.d/common-*
Code: Alles auswählen
root@vserver-squeeze:/home/chr# grep -Ev '^(#|$)' /etc/pam.d/common-*
/etc/pam.d/common-account:account [success=2 new_authtok_reqd=done default=ignore] pam_unix.so
/etc/pam.d/common-account:account [success=1 default=ignore] pam_ldap.so
/etc/pam.d/common-account:account requisite pam_deny.so
/etc/pam.d/common-account:account required pam_permit.so
/etc/pam.d/common-auth:auth [success=2 default=ignore] pam_unix.so nullok_secure
/etc/pam.d/common-auth:auth [success=1 default=ignore] pam_ldap.so use_first_pass
/etc/pam.d/common-auth:auth requisite pam_deny.so
/etc/pam.d/common-auth:auth required pam_permit.so
/etc/pam.d/common-password:password requisite pam_passwdqc.so
/etc/pam.d/common-password:password [success=2 default=ignore] pam_unix.so obscure use_authtok try_first_pass sha512
/etc/pam.d/common-password:password [success=1 user_unknown=ignore default=die] pam_ldap.so use_authtok try_first_pass
/etc/pam.d/common-password:password requisite pam_deny.so
/etc/pam.d/common-password:password required pam_permit.so
/etc/pam.d/common-session:session [default=1] pam_permit.so
/etc/pam.d/common-session:session requisite pam_deny.so
/etc/pam.d/common-session:session required pam_permit.so
/etc/pam.d/common-session:session required pam_unix.so
/etc/pam.d/common-session:session optional pam_ldap.so
/etc/pam.d/common-session:session optional pam_ck_connector.so nox11
/etc/pam.d/common-session-noninteractive:session [default=1] pam_permit.so
/etc/pam.d/common-session-noninteractive:session requisite pam_deny.so
/etc/pam.d/common-session-noninteractive:session required pam_permit.so
/etc/pam.d/common-session-noninteractive:session required pam_unix.so
/etc/pam.d/common-session-noninteractive:session optional pam_ldap.so
root@vserver-squeeze:/home/chr#
pam.d/login
Code: Alles auswählen
root@vserver-squeeze:/home/chr# grep -Ev '^(#|$)' /etc/pam.d/login
auth optional pam_faildelay.so delay=3000000
auth [success=ok new_authtok_reqd=ok ignore=ignore user_unknown=bad default=die] pam_securetty.so
auth requisite pam_nologin.so
session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so close
session required pam_env.so readenv=1
session required pam_env.so readenv=1 envfile=/etc/default/locale
@include common-auth
auth optional pam_group.so
session required pam_limits.so
session optional pam_lastlog.so
session optional pam_motd.so
session optional pam_mail.so standard
@include common-account
@include common-session
@include common-password
session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so open
root@vserver-squeeze:/home/chr#
Und hier meine Datensätze, in der ldap DB
Code: Alles auswählen
0 dc=port17,dc=de
objectClass: dcObject
objectClass: organization
o: family
dc: port17
1 cn=admin,dc=port17,dc=de
objectClass: organizationalRole
cn: admin
2 cn=Vorname Nachname,dc=port17,dc=de
cn: Vorname Nachname
homeDirectory: /home/test
objectClass: posixAccount
objectClass: shadowAccount
objectClass: simpleSecurityObject
objectClass: person
objectClass: top
sn: Nachname
uid: test
gidNumber: 1002
uidNumber: 1002
userPassword: {SHA}qUqP5cyxm6YcTAhz05Hph5gvu9M=
Ich habe absolut keine Ahnung, warum das so ist. Im auth.log steht kein Wort von ldap. pam_ldap Meldungen erscheinen nicht, nur pam_unix Meldungen. Der sagt dann auch oftmals, dass der ldap user test nicht in der shadow Datei steht, was nicht sonderlich überraschend ist.
Bin für Hilfe dankbar.
slapd: @(#) $OpenLDAP: slapd 2.4.23 (Sep 23 2010 08:27:52) $
ansonsten läuft Squezze