PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ldap: Authentifizierung der Linux Clients schlägt fehl



prodigalson
07.02.05, 22:45
Hallo Zusammen,
Ich versuche gerade einen Ldap- Server (Suse 9.2) einzurichten. Als Grundlage verwende ich das Buch "Der Linux Server" von Stefan Schäfer.

Im Prinzip bin ich so vorgegangen:
Suse 9.2 Server:
1. Ladp per Yast installiert
2. Slapd.conf editiert
3. Ldif- Datein erstellt und importiert
Suse-Client:
4. /etc/security/pam_unix2.conf "use_ladp" für auth, account und password eingetragen
5. /etc/nsswitches.conf: "files ldap" für passwd, shadow und group eingtragen.
6. /etc/openldap/ldap.conf
Host, uri, base und ldap version 3 eingetragen.
Ich habe mich an die "Matrix" des Buches gehalten.
Die Datenbank ist vom Client per gq erreichbar.

Aber...
Leider schlägt nun die Anmeldung am Ldap- Server mit folgender Meldung fehl:


Feb 7 22:51:08 server slapd[7243]: conn=6406 op=14 SEARCH RESULT tag=101 err=0 nentries=0 text=
Feb 7 22:51:11 server slapd[7243]: conn=6406 op=15 SRCH base="dc=das-portal,dc=de" scope=2 deref=0 filter="(&(objectClass=posixAccount)(uid=rolf@localhost.das-portal.de))"
Feb 7 22:51:11 server slapd[7243]: conn=6406 op=15 SRCH attr=uid userPassword uidNumber gidNumber cn homeDirectory loginShell gecos description objectClass
Feb 7 22:51:11 server slapd[7243]: <= bdb_equality_candidates: (uid) index_param failed (18)
Feb 7 22:51:11 server slapd[7243]: conn=6406 op=15 SEARCH RESULT tag=101 err=0 nentries=0 text=

"<= bdb_equality_candidates: (uid) index_param failed (18)"
Sorry, da muss ich jetzt passen.
Liegt der Fehler in der Ldap - Datenbank? Oder in der Authentifizierung?
Oder an dem Linux- Nix - Blicker, der davor sitzt? :mad: :mad:

Hat mir einer einen Tipp, wo ich suchen kann?
Danke

Anbei slapd.conf:



server:/etc/openldap # cat slapd.conf

include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
#include /etc/openldap/schema/rfc2307bis.schema
#include /etc/openldap/schema/yast.schema
include /etc/openldap/schema/nis.schema
include /etc/openldap/schema/samba3.schema
# Define global ACLs to disable default read access.
pidfile /var/run/slapd/slapd.pid
argsfile /var/run/slapd/slapd.args

# Load dynamic backend modules:
modulepath /usr/lib/openldap/modules
# Directives needed to implement policy:
access to dn.base=""
by * read

by self write
by user read
by anonymos auth

################################################## #####################
# BDB database definitions
################################################## #####################

database bdb
checkpoint 1024 5
cachesize 10000
suffix "dc=das-portal,dc=de"
rootdn "cn=Manager,dc=das-portal,dc=de"
# Cleartext passwords, especially for the rootdn, should
# be avoid. See slappasswd(8) and slapd.conf(5) for details.
# Use of strong authentication encouraged.
rootpw {SSHA}4Yyiazqk/LeLiD9WbJpM6aDCp8kGr1Lf
# The database directory MUST exist prior to running slapd AND
# should only be accessible by the slapd and slap tools.
# Mode 700 recommended.
directory /var/lib/ldap
# Indices to maintain
index objectClass eq

noch ein Search auf die Datenbank:




# LDAPv3
# base <> with scope sub
# filter: (objectclass=*)
# requesting: ALL
#

# das-portal.de
dn: dc=das-portal,dc=de
objectClass: dcObject
objectClass: organization
o: das-portal
dc: das-portal

# admin, das-portal.de
dn: uid=admin,dc=das-portal,dc=de
objectClass: person
objectClass: posixAccount
cn: admin
uid: admin
userPassword:: dGVzdA==
userPassword:: c2VjcmV0
uidNumber: 2000
gidNumber: 100
homeDirectory: /var/tmp
loginShell: /bin/bash
sn: Samba
description: "Ldap/Samba Manager"

# auth_user, das-portal.de
dn: o=auth_user,dc=das-portal,dc=de
o: auth_user
objectClass: organization

# auth_group, das-portal.de
dn: o=auth_group,dc=das-portal,dc=de
o: auth_group
objectClass: organization

# users, auth_group, das-portal.de
dn: cn=users,o=auth_group,dc=das-portal,dc=de
objectClass: posixGroup
objectClass: top
cn: users
userPassword:: e0NyeXB0fVg=
gidNumber: 100

# machines, auth_group, das-portal.de
dn: cn=machines,o=auth_group,dc=das-portal,dc=de
objectClass: posixGroup
objectClass: top
cn: machines
userPassword:: e0NyeXB0fVg=
gidNumber: 200

# test, auth_user, das-portal.de
dn: uid=test,o=auth_user,dc=das-portal,dc=de
objectClass: posixAccount
objectClass: shadowAccount
objectClass: inetOrgPerson
uid: test
uidNumber: 502
gidNumber: 100
homeDirectory: /tmp
loginShell: /bin/bash
cn: Test
userPassword: e1NTSEF9N0hidDNlcldkdHoxREdGVlE1bWpuKzZMK050YWc5UX o=
gecos: Test
mail: test@das-portal.de
sn: Test
displayName: test
description: test
shadowLastChange: 11985
shadowMax: 99999

# search result
search: 2
result: 0 Success

# numResponses: 9
# numEntries: 8
server:/etc/openldap/Ldiff #

CYP
09.02.05, 08:23
entweder du hast in der /etc/ldap.conf
den suchfilter mit uid=rolf@localhost.das-portal.de eingetragen oder du
gibts den falschen benutzernamen ein :)

prodigalson
10.02.05, 18:00
Hallo Cyp, und all die Anderen.
Das Problem mit der Anmeldung der Suse- Clients hat sich gelöst.
Das Problem lag bei NIS. Ich hatte zuvor die Kisten per NIS vereint.
Der Server und der Client wollten sich trotz LDAP Konfiguration per NIS verheiraten.
Leider konnte ich die NIS- Domain nicht per Yast deaktivieren.
Keine Ahnung warum?
D.h. Neu installiert... Ldap aktiviert und den Client wie oben beschrieben angemeldet.
Soweit so gut........ Juhuuu.

Aber, das Nervenaufreibenste kommt ja erst:
Jetzt möchte man ja die Windowskiste noch am Server anmelden:
Hierzu habe ich dann...
1. Samba (3.0.7) per Yast inkl. Ldap Unterstützung installiert.
2. Die smbldap-tools ("IDEALX") nach /usr/local/sbin kopiert und nach/usr/lib/perl5/5.8.5/* gelinkt
3. Die smbldap.conf und die smbldapblind.conf nach /etc/smbldap-tools verschoben und editiert.
4. Den Ldap- Baum mit smbldap-populate erstellt.
5. Die Mapping der Ldap- Gruppen nach Linux sehen so aus:

5. Domain Admins (S-1-5-21-2752382757-2908115955-1856883240-512) -> domainadmins
Domain Users (S-1-5-21-2752382757-2908115955-1856883240-513) -> domainusers
Domain Guests (S-1-5-21-2752382757-2908115955-1856883240-514) -> domainguests
Print Operators (S-1-5-21-2752382757-2908115955-1856883240-550) -> domainadminprinter
Backup Operators (S-1-5-21-2752382757-2908115955-1856883240-551) -> domainadminbackup
Replicator (S-1-5-21-2752382757-2908115955-1856883240-552) -> domainadminreplicator
Domain Computers (S-1-5-21-2752382757-2908115955-1856883240-553) -> domainmachines
Wie habt ihr das mit den Domain- Usern gemacht? Sollten die nicht auf users (100) gemappt werden? Das hat bei mir nicht geklappt... Aus diesem Grund habe ich einige Unix- Gruppen erstellt.
Ob das so gut war?

O.k. aber weiter:
6. Den Chef per smbpasswd -w Samba bekannt gemacht
7. Posix und Samba- User per smbldap-useradd erstellt.
8.1 Jetzt kommts:
Ich konnte keinen Maschienenaccount mit: pdbedit -a -u=katia -f maschine -m erstellen.
Fehler:

smbldap_add: dn => [uid=katia$,ou=machines,dc=das-portal,dc=de]
ldapsam_modify_entry: Failed to add user dn= uid=katia$,ou=machines,dc=das-portal,dc=de with: Obje
ct class violation
object class 'sambaSamAccount' requires attribute 'sambaSID'
ldapsam_add_sam_account: failed to modify/add user with uid = katia$ (dn = uid=katia$,ou=machines,d
c=das-portal,dc=de)
Gibt es eine Möglichkeit die SID mit zu übergeben?
Wenn ja, wie sieht dann der Befehl aus?

8.2 Dann habe ich es mit einer ldif- datei probiert. Leider habe ich keine Ahnung was zu einem Maschienaccount alles dazugehört.
Ich habe zum test eine ldif zusammen- gemurkst.... :ugly:

Das führte beim Anmelden an der Windowskiste zu folgendem Fehler:
"Der Computer konnte Domain nicht hinzugefügt werden..... Zuordungen und Kontonamen und Sicherheitskennungen wurden nicht durchgeführt".

Die /var/log/messages spricht:

Feb 10 16:14:05 server slapd[5799]: conn=51 op=5 SRCH base="dc=das-portal,dc=de" scope=2 deref=0 filter="(&(uid=katia$)(objectClass=sambaSamAccount))"
Feb 10 16:14:05 server slapd[5799]: conn=51 op=5 SRCH attr=uid uidNumber gidNumber homeDirectory sambaPwdLastSet sambaPwdCanChange sambaPwdMustChange sambaLogonTime sambaLogoffTime sambaKickoffTime cn displayName sambaHomeDrive sambaHomePath sambaLogonScript sambaProfilePath description sambaUserWorkstations sambaSID sambaPrimaryGroupSID sambaLMPassword sambaNTPassword sambaDomainName objectClass sambaAcctFlags sambaMungedDial sambaBadPasswordCount sambaBadPasswordTime sambaPasswordHistory modifyTimestamp sambaLogonHours modifyTimestamp
Feb 10 16:14:05 server slapd[5799]: conn=51 op=5 SEARCH RESULT tag=101 err=0 nentries=1 text=
Feb 10 16:14:05 server slapd[5799]: conn=51 fd=21 closed

Die Rechner log:

[2005/02/10 16:14:05, 5] smbd/uid.c:change_to_root_user(296)
change_to_root_user: now uid=(0,0) gid=(0,0)
[2005/02/10 16:14:05, 2] smbd/server.c:exit_server(571)
Closing connections
[2005/02/10 16:14:05, 3] smbd/connection.c:yield_connection(69)
Yielding connection to
[2005/02/10 16:14:05, 5] smbd/oplock.c:receive_local_message(107)
receive_local_message: doing select with timeout of 1 ms
[2005/02/10 16:14:05, 3] smbd/server.c:exit_server(614)
Server exit (normal exit)

Da sieht doch danach aus, als ob die Maschine nicht stimmt, oder?
Was muss den nun genau in einer Maschinen-Ldif stehen? Ich habe ehrlich gesagt keine Ahnung. Die Maschinen - ldifs bei Google und im Forum sehen alle anders aus.......... :confused:
Bzw. warum klappt das nicht mit pdbedit?

Falls ich komplett falsch liege, hier noch die samba.conf:
Natürlich auch mal wieder keine Ahnug, ob die so i.o ist.
Ich habs ja nur abschrieben.... :o

[global]
large readwrite = Yes
socket options = TCP_NODELAY SO_KEEPALIVE SO_SNDBUF=8192 SO_RCVBUF=8192
workgroup = PORTAL
netbios name = portal
server string = FSP Samba/ldap Server
# choose your passdb backend
passdb backend = ldapsam:ldap://localhost
admin users= @"Domain Admins"
encrypt passwords = Yes
auth methods =
time server = Yes
interfaces = 127.0.0.1 192.168.0.1
bind interfaces only = true
printing = cups
printcap name = cups
printer admin = @printadmin root, administrator
wins support = Yes
unix charset = LOCALE
local master = Yes
domain master = Yes
domain logons = Yes
security = user
os level = 65
csc policy = disable
# mit idealx scripten
add user script = /usr/local/sbin/smbldap-useradd -m -a "%u"
#delete user script = /usr/local/sbin/smbldap-userdel "%u"
add machine script = /usr/local/sbin/smbldap-useradd -w "%u"
add group script = /usr/local/sbin/smbldap-groupadd -p "%g"
#delete group script = /usr/local/sbin/smbldap-groupdel "%g"
add user to group script = /usr/local/sbin/smbldap-groupmod -m "%u" "%g"
delete user from group script = /usr/local/sbin/smbldap-groupmod -x "%u" "%g"
set primary group script = /usr/local/sbin/smbldap-usermod -g "%g" "%u"
# --- ldapsam ---
# add rootpw to secrets.tdb with "smbpasswd -w secret"
ldap admin dn = cn=Manager,dc=das-portal,dc=de
ldap suffix = dc=das-portal,dc=de
ldap machine suffix = ou=machines
ldap group suffix = ou=groups
#ldap idmap suffix = ou=Idmap
ldap user suffix = ou=users
#ldap tls/ssl (yes, no (default), start_tls)
#ldap ssl = Yes
ldap passwd sync = Yes
# logs
log level = 10
syslog = 1
log file = /var/log/samba/log.%m
max log size = 100000

[homes]
comment = Home Directories
valid users = %S
browseable = No
read only = No

[users]
comment = All users
path = /home
read only = No

[pdf]
comment = PDF creator
path = /var/tmp
printable = Yes
print command = /usr/bin/smbprngenpdf -J '%J' -c %c -s %s -u '%u' -z %z
create mask = 0600

[printers]
comment = All Printers
path = /var/tmp

[print$]
comment = Printer Drivers
path = /var/lib/samba/drivers
guest ok = Yes
write list = @ntadmin root
force group = ntadmin
create mask = 0664
directory mask = 0775

[public]
comment = Repertoire public
path = /home/public
guest ok = Yes
read only = No
directory mask = 0775
Schon mal "Danke- Schön" für die Mühe, die ich euch hier Mache.
Bis denn.

terpator
10.02.05, 20:35
Hallo!

Der Maschinenaccount wird doch bei der Aufnahme in die Domäne automatisch erstellt.

add machine script = /usr/local/sbin/smbldap-useradd -w "%u"
Da mußt Du den doch gar nicht von Hand anlegen, oder? So läufts bei mir jedenfalls und ich habs auch à la idealx gemacht ;)

Viele Grüße, Tobias

prodigalson
12.02.05, 23:08
Hallo Tobi und der Rest der Welt,
uhhh - wer lesen kann, ist eindeutig im Vorteil.
Danke schön.
Das Anlegen der Accounts hat sich als Kinderspiel herausgestellt.
Man muß ja gar nichts mehr tun. Und vor allem: "das Teil" läuft jetzt...
Gracie.

Für alle, die auch vorhaben einen PDC inkl. LDAP einzurichten kann ich nur die Idealx und deren How to empfehlen.
http://www.idealx.org/prj/samba/smbldap-howto.en.html
Das How to hat mir sehr geholfen.
Bis auf die Geschichte, pam per ldap, einfach das tun, was auf deren Seite steht. Die Pam - Sache ist auf der 9.2 ja schon dabei.
Einfach nur noch die Confs anpassen.
That's it.

Ein letzte Frage noch:
Ich habe noch ein altes Laptop. Dieses möchte ich gerne an den PDC anmelden. Desweiteren sollte die Kiste aber auch auf Reise gehen können.
Gibt es eine Möglichkeit auf dem Laptop "Suse" zu installieren, das Teil am Ldap- Server anzumelden, dessen /home Daten verwenden, und trotzdem das Laptop aber auch "lokal" (unterwegs) mit dem selben User zu arbeiten.
Sozusagen: Anmelden am Server bzw. Anmelden am Computer. So, wie man das von bluescreen Hersteller kennt.
:rolleyes: :rolleyes:
Geht das?

Wünsch euch was.
Gruß Rolf