LDAP - DSA umbenennen

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
fuh
Beiträge: 8
Registriert: 24.08.2010 13:44:48

LDAP - DSA umbenennen

Beitrag von fuh » 18.11.2010 19:07:16

Hi Leute,

arbeite mich gerade in LDAP ein. Dazu habe ich eine slapd über apt installiert.
Nun hat er meine DSA allerdings localhost genannt. Die einzige Idee, woher das kommen könnte wäre, dass er die /etc/hostname ausglesen hat:

Code: Alles auswählen

root@vserver-squeeze:/etc/ldap# cat /etc/hostname
vserver-squeeze.localhost
Meine Struktur sieht so aus:

Code: Alles auswählen

# -*- coding: utf-8 -*- vim:encoding=utf-8:
# http://www.lichteblau.com/ldapvi/manual#syntax

0 dc=localhost
objectClass: top
objectClass: dcObject
objectClass: organization
o: localhost
dc: localhost

1 cn=admin,dc=localhost
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword: ---rausgenommen---
Nun soll meine DSA allerdings anders heißen. Kann man diesen Namen gar nicth frei vergeben?

Danke für eure Hilfe

alexander_ro
Beiträge: 298
Registriert: 16.01.2006 17:44:21
Lizenz eigener Beiträge: GNU General Public License

Re: LDAP - DSA umbenennen

Beitrag von alexander_ro » 19.11.2010 12:43:16

Hi fuh,

was Du jetzt mit DSA (Directory Server Agents) wirklich meinst ist mir nicht ganz klar.

Aber vielleicht meinst Du den Basis DN (Distinguished Name). Der lautet in Deinen Beispieldaten dc=localhost.
Es gibt zwei möglichkeiten einen OpenLDAP-Server zu konfigurieren.

Die alte Version: über die slapd.conf dort kannst Du den Basis DN für Deinen Server einstellen. Ich nehme mal an apt wird einfach mal als Startwert localhost rein schreiben. Die Variable in der konfig heisst glaube ich rootdn.

Die neue Version: es gibt ein so genanntes Konfigurationsverzeichnis in diesem finden sich LDIF Dateien die zur konfiguration unter dem Basis DN dc=config in den LDAP geladen werden. Es wird also die konfiguration im Verzeichnis selbst verwaltet. Wie das hier genau funktioniert weiss ich leider auch nicht. Es müsste aber mit den üblichen verdächtigen wie ldapmodify gehen den Basis DN zu ändern. Es gibt auch ein Tool dessen Name mir grad nicht einfällt das eine slapd.conf in so ein Konfigurationsverzeichnis konvertieren kann. Ich glaube auch man kann den slapd in Squeeze auch noch auf die alte Konfigurationsmethode umstellen. Das würde ich aber nicht empfehlen weil die vermutlich einmal wegfallen wird. Also wenn schon einarbeiten dann gleich auf die neue Variante. Musst Du aber letztlich selber wissen.

Grüße
Alexander

gxyz
Beiträge: 202
Registriert: 26.07.2010 13:54:21
Lizenz eigener Beiträge: MIT Lizenz

Re: LDAP - DSA umbenennen

Beitrag von gxyz » 19.11.2010 13:39:00

... zu jeder Datenbank eines openldap-Servers gehört ein Attribut namens "suffix", das festlegt wo die entsprechenden Daten auftauchen sollen, z.B. über slapd.conf in Deinem Fall vermutlich etwas wie:

Code: Alles auswählen

database        bdb
directory       /pfad/zu/den/daten
suffix          "dc=localhost"

alexander_ro
Beiträge: 298
Registriert: 16.01.2006 17:44:21
Lizenz eigener Beiträge: GNU General Public License

Re: LDAP - DSA umbenennen

Beitrag von alexander_ro » 19.11.2010 14:36:54

Ja stimmt suffix hies der, der rootdn legt den Admin fest. Sorry hab ich vorhin verwechselt.

Trotzdem wird er in einer Squeeze installation keine slapd.conf mehr finden.

Alexander

fuh
Beiträge: 8
Registriert: 24.08.2010 13:44:48

Re: LDAP - DSA umbenennen

Beitrag von fuh » 20.11.2010 14:11:25

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

Antworten