PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : LDAP Frage



oafish
29.12.04, 12:03
Hallo,
ich bin dabei einen OpenLDAP-Server mit einem Windows PDC aufzubauen. Openldap und Samba befinden sich dabei auf zwei verschiedenen Maschinen. Das Einloggen mit Posix-Accounts funktioniert inzwischen. Leider happert es an der Integration in Samba. Was mich etwas stutzig macht, wenn ich mittels pdbedit -a -u administrator diesen hinzufügen möchte, bekomme ich folgende Fehlermeldung:

The LDAP server is succesfully connected
pdb backend ldapsam:ldap://ldap-server.lan.de has a valid init
Attempting to find an passdb backend to match guest (guest)
Found pdb backend guest
pdb backend guest has a valid init
smbldap_search: base => [dc=io,dc=de], filter => [(&(uid=administrator)(objectclass=sambaSamAccount))], scope => [2]
ldapsam_getsampwnam: Unable to locate user [administrator] count=0
Username not found!


Ganz schlau werde ich daraus nicht. Lege ich diesen Account mittels den smbldap-tools an, funktioniert zumindest das anlegen. Was auch merkwürdig ist, ist das match guest (guest) und Unable to locate user.
Was hat das zu bedeuten???

Das zweite ist, wenn ich mittels den smbldap-useradd root anlege, kann ich unter Windows in die Domäne eintreten. Ist es möglich, das Samba den Kontakt mit dem LDAP-Server nicht aufnimmt?

Ich hänge noch meine LDIF dran. Vielleicht kann sich das jemand ankucken und sieht vielleicht einen Fehler.

Vielen Dank und Grüßle
Mike

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

# io.de
dn: dc=,dc=de
objectClass: top
objectClass: dcObject
objectClass: organization
dc: io

# Manager, io.de
dn: cn=Manager,dc=io,dc=de
objectClass: top
objectClass: person
objectClass: inetOrgPerson
cn:: TWFuYWdlciA=
sn:: TWFuYWdlciA=
mail:: aHViZXJ0LnNjaG1pZEBpb21lZGljby5kZSA=
description: LDAP Administrator

# Groups, io.de
dn: ou=Groups,dc=io,dc=de
ou: Groups
objectClass: organizationalUnit

# computers, io.de
dn: ou=computers,dc=io,dc=de
description: Computer
ou: computers
objectClass: organizationalUnit

# Idmap, io.de
dn: ou=Idmap,dc=io,dc=de
businessCategory: tester
ou: Idmap
objectClass: organizationalUnit

# Users, io.de
dn: ou=Users,dc=io,dc=de
description: Users
ou: Users
objectClass: organizationalUnit
objectClass: top

# Domain Admins, Groups, io.de
dn: cn=Domain Admins,ou=Groups,dc=io,dc=de
description: Domain Admins
cn: Domain Admins
gidNumber: 200
uid: Domain Admins
sambaSID: S-1-5-21-2016285899-1184126504-2810336713
sambaGroupType: 2
objectClass: posixGroup
objectClass: uidObject
objectClass: sambaGroupMapping
memberUid: Administrator
memberUid: root
memberUid: administrator

# NETZWERK, io.de
dn: sambaDomainName=NETZWERK,dc=io,dc=de
sambaDomainName: NETZWERK
sambaSID: S-1-5-21-303174518-3359981747-4154349974
sambaAlgorithmicRidBase: 1000
objectClass: sambaDomain

# bonsai$, computers, io.de
dn: uid=bonsai$,ou=computers,dc=io,dc=de
objectClass: top
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: sambaSamAccount
cn: bonsai$
sn: bonsai$
uid: bonsai$
uidNumber: 511
gidNumber: 515
homeDirectory: /dev/null
loginShell: /bin/false
description: Computer
gecos: Computer
sambaSID: S-1-5-21-303174518-3359981747-4154349974-2022
sambaPrimaryGroupSID: S-1-5-21-303174518-3359981747-4154349974-2031
displayName: BONSAI$
sambaPwdMustChange: 2147483647
sambaAcctFlags: [W ]
sambaPwdCanChange: 1104316100
sambaNTPassword: 5283C1A61827BC6A6A9C936AC6F5ECAD
sambaPwdLastSet: 1104316100

# administrator, Users, io.de
dn: uid=administrator,ou=Users,dc=io,dc=de
objectClass: top
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
objectClass: sambaSAMAccount
cn: administrator
sn: administrator
uid: administrator
uidNumber: 606
gidNumber: 200
homeDirectory: /home/administrator
loginShell: /bin/bash
gecos: System User
description: System User
userPassword:: e2NyeXB0fXg=
sambaLogonTime: 0
sambaLogoffTime: 2147483647
sambaKickoffTime: 2147483647
sambaPwdMustChange: 2147483647
displayName: System User
sambaSID: S-1-5-21-303174518-3359981747-4154349974-3000-2212
sambaPrimaryGroupSID: S-1-5-21-2016285899-1184126504-2810336713
sambaLogonScript: administrator.cmd
sambaProfilePath: \\ttest\profiles\administrator
sambaHomePath: \\test\home\administrator
sambaHomeDrive: logondrive:
sambaPwdCanChange: 1104316053
sambaLMPassword: 1CE86065A8E03CCE0D06C4560D0493BE
sambaNTPassword: 2E44F27252A61526E4AF163A44174AEB
sambaPasswordHistory: 00000000000000000000000000000000000000000000000000 000000
00000000
sambaPwdLastSet: 1104316053
sambaAcctFlags: [U ]

mamue
29.12.04, 12:25
Hast Du mit "smbpasswd -w" den LDAP-Manager samba bekannt gegeben? Das ist nicht der root-account, sondern der, den Du in der slapd.conf als Manager eingetragen hast. Das muß ansonsten auch kein echter Account sein.

mamue

oafish
29.12.04, 13:07
Hi mamue,
habe ich gemacht. Zumindest erhielt ich die Meldung das er das Password aufgenommen hat.

Grüßle
oafish

mamue
29.12.04, 20:56
Weißt Du zufällig, ob scope=2 "sub" ist? Oder ist es "one"?
Hast Du in der smb.conf das "ldap user suffix" gesetzt?

HTH
mamue

oafish
31.12.04, 11:58
Hi,
inzwischen bin ich etwas weiter. Das eintreten in die Domäne funktioniert nun. Dauert zwar beinahe 2 Minuten aber was solls :).
Ich habe zum ersten einrichten der Account die smbldap tools verwendet. Mittels populate wird einem die Ordnerstruktur vorgegeben. Wenn ich nun einen Rechner hinzufüge, erscheint dieser richtig in ou=computers. Steht der Rechner dort, kann man der Domäne nicht beitreten. Erstelle ich diesen unter ou=Users, gibt es keine Probleme beim beitritt.

Eigentlich wäre dies nicht weiter dramatisch, kann man manuell in smbldap-useradd verändern. Leider funktioniert das einloggen in die Domäne nicht. Hier mal ein auszug aus meiner smb.conf

ldap suffix = dc=io,dc=de
ldap machine suffix = ou=computers
ldap user suffix = ou=Users
ldap group suffix = ou=Groups
ldap idmap suffix = ou=Idmap
idmap uid = 10000-20000
idmap gid = 10000-20000
ldap admin dn = cn=Manager,dc=io,dc=de
ldap ssl = no
ldap delete dn = yes
passdb backend = ldapsam:ldap://goblin.lan.io.de

add user script = /usr/local/sbin/smbldap-useradd -m "%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"
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"


und ein Samba-Log auszug:
[2004/12/31 11:53:04, 3] smbd/process.c:switch_message(886)
switch message SMBclose (pid 2630) conn 0x82f5770
[2004/12/31 11:53:04, 3] smbd/sec_ctx.c:set_sec_ctx(288)
setting sec ctx (99, 99) - sec_ctx_stack_ndx = 0
[2004/12/31 11:53:04, 5] auth/auth_util.c:debug_nt_user_token(491)
NT user token of user S-1-5-21-303174518-3359981747-4154349974-501
contains 7 SIDs
SID[ 0]: S-1-5-21-303174518-3359981747-4154349974-501
SID[ 1]: S-1-5-21-303174518-3359981747-4154349974-514
SID[ 2]: S-1-1-0
SID[ 3]: S-1-5-2
SID[ 4]: S-1-5-32-546
SID[ 5]: S-1-5-21-303174518-3359981747-4154349974-1197
SID[ 6]: S-1-5-21-303174518-3359981747-4154349974-1199
[2004/12/31 11:53:04, 5] auth/auth_util.c:debug_unix_user_token(505)
UNIX token of user 99
Primary group is 99 and contains 2 supplementary groups
Group[ 0]: 98
Group[ 1]: 99
[2004/12/31 11:53:04, 5] smbd/uid.c:change_to_user(281)
change_to_user uid=(99,99) gid=(0,99)
[2004/12/31 11:53:04, 4] rpc_server/srv_pipe_hnd.c:get_rpc_pipe(1168)
search for pipe pnum=743f
[2004/12/31 11:53:04, 5] rpc_server/srv_pipe_hnd.c:get_rpc_pipe(1172)
pipe name NETLOGON pnum=743f (pipes_open=1)
[2004/12/31 11:53:04, 5] smbd/pipes.c:reply_pipe_close(258)
reply_pipe_close: pnum:743f
[2004/12/31 11:53:04, 10] rpc_server/srv_lsa_hnd.c:close_policy_by_pipe(235)
close_policy_by_pipe: deleted handle list for pipe NETLOGON
[2004/12/31 11:53:04, 4] rpc_server/srv_pipe_hnd.c:close_rpc_pipe_hnd(1081)
closed pipe name NETLOGON pnum=743f (pipes_open=0)
[2004/12/31 11:53:04, 5] lib/util.c:show_msg(464)
[2004/12/31 11:53:04, 5] lib/util.c:show_msg(474)
size=35
smb_com=0x4
smb_rcls=0
smb_reh=0
smb_err=0
smb_flg=136
smb_flg2=51201
smb_tid=1
smb_pid=65279
smb_uid=100
smb_mid=2240
smt_wct=0
smb_bcc=0
[2004/12/31 11:53:04, 6] lib/util_sock.c:write_socket(449)
write_socket(22,39)
[2004/12/31 11:53:04, 6] lib/util_sock.c:write_socket(452)
write_socket(22,39) wrote 39


und smbd.log:

[2004/12/31 11:54:25, 2] lib/smbldap.c:smbldap_search_domain_info(1373)
Searching for:[(&(objectClass=sambaDomain)(sambaDomainName=NETZWERK ))]
[2004/12/31 11:54:25, 5] lib/smbldap.c:smbldap_search(1017)
smbldap_search: base => [dc=io,dc=de], filter => [(&(objectClass=sambaDomain)(sambaDomainName=NETZWERK ))], scope => [2]
[2004/12/31 11:54:25, 10] lib/smbldap.c:smbldap_open_connection(596)
smbldap_open_connection: ldap://goblin.lan.io.de
[2004/12/31 11:54:25, 2] lib/smbldap.c:smbldap_open_connection(692)
smbldap_open_connection: connection opened
[2004/12/31 11:54:25, 10] lib/smbldap.c:smbldap_connect_system(823)
ldap_connect_system: Binding to ldap server ldap://goblin.lan.io.de as "cn=Manager,dc=io,dc=de"
[2004/12/31 11:54:25, 3] lib/smbldap.c:smbldap_connect_system(858)
ldap_connect_system: succesful connection to the LDAP server
[2004/12/31 11:54:25, 4] lib/smbldap.c:smbldap_open(909)
The LDAP server is succesfully connected
[2004/12/31 11:54:25, 5] passdb/pdb_interface.c:make_pdb_methods_name(672)
pdb backend ldapsam:ldap://goblin.lan.io.de has a valid init
[2004/12/31 11:54:25, 5] passdb/pdb_interface.c:make_pdb_methods_name(648)
Attempting to find an passdb backend to match guest (guest)
[2004/12/31 11:54:25, 5] passdb/pdb_interface.c:make_pdb_methods_name(669)
Found pdb backend guest
[2004/12/31 11:54:25, 5] passdb/pdb_interface.c:make_pdb_methods_name(672)
pdb backend guest has a valid init


meine ldap.conf:
[b]
host goblin.lan.io.de
base dc=io,dc=de
nss_base_passwd ou=Users,dc=io,dc=de?one
nss_base_shadow ou=Users,dc=io,dc=de?one
nss_base_group ou=Groups,dc=io,dc=de?one

scope one
pam_password md5
ssl no


Inzwischen bin ich wirklich verzweifelt. Hat jemand eine Ahnung warum das bei mir nicht funktioniert???

Danke & viele Grüße
oafish

oafish
31.12.04, 15:19
Was mich interessieren würde... wird eigentlich PAM benötigt? PAM ist doch nur notwendig, wenn sich die User auch auf Linuxmaschinen einloggen sollen?

oafish

mamue
31.12.04, 16:06
Was mich interessieren würde... wird eigentlich PAM benötigt? PAM ist doch nur notwendig, wenn sich die User auch auf Linuxmaschinen einloggen sollen?

oafish
Ja, PAM wird benötigt. Sowohl die user als auch die Machinen-accounts müssen bei getent passwd auftauchen (Die Maschinen-accounts wirklich? Ich glaube schon)
Das Problem mit dem Anlegen der Machinen-accounts unter einem anderen Zweig hatten schon viele.

mamue

oafish
31.12.04, 16:25
Hi,
das mit den Maschinenakkounts hab ich gelöst. Einfach ab der root suchen.
Ich habe zwar kein PAM installiert (verwende Slackware) aber die Benutzer und Gruppen sehe ich mit getent passwd group.
Naja, mal sehen, vielleicht setzte ich nochmals alles von vorne neu auf....

Grüßle
oafish

mamue
01.01.05, 11:43
Hi,
Ich habe zwar kein PAM installiert (verwende Slackware) aber die Benutzer und Gruppen sehe ich mit getent passwd group.

Wenn Du sie mit getent passwd maschineXY$ bzw getent passwd userXY siehst, ist der erste Schritt schon mal getan. Abhängig von der Distribution mußt Du dann womöglich noch einige Dateien in /etc/pam.d/ anpassen oder - wie bei SuSE - einach nur die /etc/security/pam_unix.conf. Ohne pam _kann_ das eigentlich nicht funktionieren, das geht eigentlich nicht.

mamue

emba
02.01.05, 19:32
Ja, PAM wird benötigt. Sowohl die user als auch die Machinen-accounts müssen bei getent passwd auftauchen (Die Maschinen-accounts wirklich? Ich glaube schon)

dafür ist nich PAM zuständig, sondern NSSWITCH, welches anfragen dann an winbind, ldap, passwd, ... weiterleitet

die maschinenaccounts müssen auch auftauchen, da sie intern wie normale posix accounts gehandelt werden

greez

oafish
03.01.05, 12:14
Also die ganzen User,Maschine und Gruppen Akkounts sehe ich mittel getent!
Mein Problem ist nun, meine Benutzer sollen sich sich nicht unter Linux einloggen dürfen. Brauche ich für den reinen Samba <-> OpenLDAP betrieb PAM? Das Problem ist, Slackware verwendet kein PAM und ich müsste eigentlich mehr oder weniger alles neu kompilieren. Dachte eigentlich dass PAM rein für die Linux Authentifizierung verwendet wird.

oafish

emba
03.01.05, 13:29
Brauche ich für den reinen Samba <-> OpenLDAP betrieb PAM?
nein


Das Problem ist, Slackware verwendet kein PAM und ich müsste eigentlich mehr oder weniger alles neu kompilieren
komisch, keine ports?


Dachte eigentlich dass PAM rein für die Linux Authentifizierung verwendet wird.und mehr

greez

oafish
06.01.05, 13:34
Hi,
verwende nun Debian und das funktioniert eigentlich sehr gut. Einloggen auf Linuxebene funktioniert prächtig. Auch der Eintritt in die Win-Domäne mittels Samba geht. Möchte ich mich nun in die Domäne einloggen, erhalte ich folgende Fehlermeldung:

Sie konnten aus folgendem Grund nicht eingeloggt werden:

Ein an das System angeschlossenes System funktioniert nicht.

Bitte wenden Sie sich an Ihren Systemadministrator!


Kennt jemand dieses Problem?

oafish

oafish
06.01.05, 15:29
ok, ich hab den Fehler gefunden. Es lag an meinen ACLs!

Allerdings funktioniert das einloggen in Windows immernoch nicht.
Kann jemand nachkucken, ob ich einen Fehler in den ACLs habe?

access to attrs=userPassword,sambaNTPassword,sambaLMPassword ,sambaPwdLastSet,sambaPwdMustChange
by dn="cn=Administrator,ou=Users,dc=io,dc=de" write
by self write
by anonymous auth
by * none

access to attrs=cn,sambaLMPassword,sambaNTPassword,sambaPwdL astSet,sambaLogonTime,sambaLogoffTime,sambaKickoff Time,sambaPwdCanChange,sambaPwdMustChange,sambaAcc tFlags,displayName,sambaHomePath,sambaHomeDrive,sa mbaLogonScript,sambaProfilePath,description,sambaU serWorkstations,sambaPrimaryGroupSID,sambaDomainNa me,sambaSID,sambaGroupType,sambaNextRid,sambaNextG roupRid,sambaNextUserRid,sambaAlgorithmicRidBase
by dn="cn=Administrator,ou=Users,dc=io,dc=de" write
by self read
by * none


Hier noch ein Auszug aus OpenLDAP:

conn=13 op=13 SRCH base="dc=iomedico,dc=de" scope=2 filter="(&(uid=tester1)(objectClass=sambaSamAccount))"
conn=13 op=13 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
conn=13 op=13 SEARCH RESULT tag=101 err=0 nentries=1 text=
conn=16 op=3 UNBIND
conn=16 fd=9 closed
conn=17 fd=9 ACCEPT from IP=192.168.100.200:32873 (IP=0.0.0.0:389)
conn=17 op=0 BIND dn="" method=128
conn=17 op=0 RESULT tag=97 err=0 text=
conn=17 op=1 SRCH base="dc=io,dc=de" scope=2 filter="(&(objectClass=posixAccount)(uid=tester1))"
conn=17 op=1 SRCH attr=uid userPassword uidNumber gidNumber cn homeDirectory loginShell gecos description objectClass
conn=17 op=1 SEARCH RESULT tag=101 err=0 nentries=1 text=
conn=17 op=2 UNBIND
conn=17 fd=9 closed
conn=18 fd=9 ACCEPT from IP=192.168.100.200:32874 (IP=0.0.0.0:389)
conn=18 op=0 BIND dn="" method=128
conn=18 op=0 RESULT tag=97 err=0 text=
conn=18 op=1 SRCH base="dc=io,dc=de" scope=2 filter="(&(objectClass=posixAccount)(uid=tester1))"
conn=18 op=1 SEARCH RESULT tag=101 err=0 nentries=1 text=
conn=18 op=2 SRCH base="dc=io,dc=de" scope=2 filter="(&(objectClass=posixGroup)(|(memberUid=tester1)(uniq ueMember=uid=tester1,ou=users,dc=io,dc=de)))"
conn=18 op=2 SRCH attr=gidNumber
conn=18 op=2 SEARCH RESULT tag=101 err=0 nentries=1 text=


Hoffe jemand kann mir einen Tipp geben :)

Danke & ganz viele Grüße
oafish

emba
07.01.05, 10:46
bzgl. acls


ldap admin dn = cn=Manager,dc=io,dc=de

steht im widerspruch zu


by dn="cn=Administrator,ou=Users,dc=io,dc=de" write

google spuckt eine menge zu den ACLs aus
außerdem ist dein posting der ACLs aus der slapd.conf ein bisschen mager
vorhergehende ACLs heben die nachkommenden auf

greez