PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Samba als PDC mit Useren aus LDAP



pixel
17.05.04, 17:58
Hi@all,

ich richte gerade ein Testsystem mit SuSE-9.1 ein welches als SambaPDC diesen soll. Samba wiederum soll die Benutzerdaten aus dem LDAP-Server beziehen. Hier ergeben sich für mich ein paar Unklarheiten.

Ich habe den LDAP-Server soweit eingerichtet und dieser läuft auch. Die Grundkonfiguration des LDAP-Server habe ich per Hand gemacht. Meine slapd.conf sieht folgendermaßen aus:

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/yast2userconfig.schema
include /etc/openldap/schema/samba3.schema
include /etc/openldap/schema/openldap.schema

pidfile /var/run/slapd/run/slapd.pid
argsfile /var/run/slapd/run/slapd.args

schemacheck on

modulepath /usr/lib/openldap/modules

access to dn.base="" by * read
access to dn.base="cn=Subschema" by * read
access to *
by self write
by users read
by anonymous auth

database bdb
checkpoint 1024 5
cachesize 10000
suffix "dc=kundennetz"
rootdn "cn=root,dc=kundennetz"

rootpw {MD5}K2yw4b8r4T4Hsba9HbdhGw==

directory /var/lib/ldap

index objectClass eq

lastmod on

Ich denke mal das ich hier in Bezug auf Samba schon die ersten Versäumnisse habe. Sind die Schema-Includes welche ich hier angegeben habe für den von mir geplanten Verwendungszweck ausreichend?

In meinem Samba3-Buch finde ich zum Thema LDAP einen Hinweis das ich bei den Indexen neben der Standard-Zeile noch folgende Zeilen hinzufügen soll:

index uid,cn,sn,displayname pres,eq,sub
index rid,uidNumber
index mail,surname,givenname eq,subinitial
index sambaSID,sambaPrimaryGroupSID,sambaDomainName eq
index default sub
anfügen soll. Wenn ich das tue startet mein LDAP-Server nicht mehr und ich erhalte die Fehlermeldung:

Starting ldap-server/etc/openldap/slapd.conf: line 89:
no indexes selectedGegenüber den Anderen Zeilen fehlt tatsächlich die Angabe wie indiziert werden soll. Also habe ich die entsprechende Zeile geändert:

index rid,uidNumber eqWenn ich danach versuche den LDAP-Server zu starten erhalte ich die Fehlermeldung:

Starting ldap-server/etc/openldap/slapd.conf: line 89:
index attribute "rid" undefined ...
Zum testen habe ich die komplette Zeile auskommentiert. Dann erhalte ich die Fehlermeldung:

Starting ldap-server/etc/openldap/slapd.conf: line 90:
duplicate index definition for attr "surname" (ignored) und der LDAP-Server startet wieder nicht. Kommentiere ich auch diese Zeile aus startet der LDAP-Server ohne Probleme. Warum akzeptiert der LDAP-Server diese beiden Optionen nicht?

Wie an der slapd.conf zu erkennen ist habe ich den User root als LDAP-Admin eingerichtet. Nachdem der LDAP-Server gestartet war habe ich folgende LDIF-Datei in das Verzeichnis geschrieben:

dn: dc=kundennetz
objectClass: top
objectClass: organization
objectClass: dcObject
dc: kundennetz
o: kundennetz

dn: cn=root,dc=kundennetz
objectClass: top
objectClass: organizationRole
cn: root
Die beiden Objekte ließen sich ohne Probleme ins Verzeichnis schreiben. Ich denke jedoch das ich hier für den von mir geplanten Einsatzzweck auch einen Fehler gemacht habe. Der LDAP-Admin (hier root) soll ebenfalls der Samba-Admin sein also nachher der Samba-User sein der z.B. User in die Domäne einfügen darf. Welche Attribute muß ich diesem Objekt geben damit das funktioniert?

Die restliche Konfiguration habe ich mit Yast gemacht. Ich habe die Benutzerverwaltung auf LDAP umgestellt und kann mittels Yast Gruppen- und Benutzer anlegen. Also funktioniert das schreiben ja schon mal.

Den Samba-Server habe ich mit Yast als PDC eingerichtet. In dieser Konfiguration habe ich angegeben das der Samba-PDC seine User aus dem LDAP-Server bezieht. Ich weiß, jetzt werden wieder einige sagen man muß das alles mit dem Editor machen. Ich habe mir die von Yast erzeugte Konfigurations-Datei aber genaustens angesehen und die scheint richtig zu sein.
Die smb.conf schaut so aus:

[global]
workgroup = KUNDENNETZ
interfaces = 127.0.0.1 eth0
bind interfaces only = true
printing = cups
printcap name = cups
printer admin = @ntadmin, root, administrator
map to guest = Bad User
security = user
encrypt passwords = yes
passdb backend = ldapsam:ldap://localhost
server string = Samba Server
netbios name = testserver
add machine script = /usr/sbin/useradd -c Machine -d /var/lib/nobody -s /bin/false %m$
domain master = yes
domain logons = yes
local master = yes
preferred master = yes
os level = 65
wins support = Yes
ldap admin dn = cn=root,dc=kundennetz
ldap suffix = dc=kundennetz
load printers = no

Die Zeile mit dem wins support habe ich händisch eingefügt da dieser Parameter auch per DHCP-Protokoll an den Client übergeben wird.

Wenn ich nun den Testrechner starte erhalte ich folgende relevanten Logfile-Einträge (alles was unwesentlich ist habe ich herausgeschnitten):


saslauthd[1740]: detach_tty : master pid is: 1740
saslauthd[1740]: ipc_init : listening on socket: /var/run/sasl2//mux
nmbd[1856]: [2004/05/17 15:59:56, 0] nmbd/nmbd_logonnames.c:add_logon_names(163)
nmbd[1856]: add_domain_logon_names:
nmbd[1856]: Attempting to become logon server for workgroup KUNDENNETZ on subnet 192.168.1.1
nmbd[1856]: [2004/05/17 15:59:56, 0] nmbd/nmbd_become_dmb.c:become_domain_master_browser_bca st(282)
nmbd[1856]: become_domain_master_browser_bcast:
nmbd[1856]: Attempting to become domain master browser on workgroup KUNDENNETZ on subnet 192.168.1.1
nmbd[1856]: [2004/05/17 15:59:56, 0] nmbd/nmbd_become_dmb.c:become_domain_master_browser_bca st(295)
nmbd[1856]: become_domain_master_browser_bcast: querying subnet 192.168.1.1 for domain master browser on workgroup KUNDENNETZ
slapd[1974]: @(#) $OpenLDAP: slapd 2.2.6 (Apr 6 2004 02:01:25) $ abuild@lifschitz:/usr/src/packages/BUILD/openldap-2.2.6/servers/slapd
nmbd[1856]: [2004/05/17 16:00:00, 0] nmbd/nmbd_logonnames.c:become_logon_server_success(124)
nmbd[1856]: become_logon_server_success: Samba is now a logon server for workgroup KUNDENNETZ on subnet 192.168.1.1
slapd[1974]: bdb_initialize: Sleepycat Software: Berkeley DB 4.2.52: (April 5, 2004)
slapd[1974]: bdb_db_init: Initializing BDB database
slapd[2213]: slapd starting
nmbd[1856]: [2004/05/17 16:00:04, 0] nmbd/nmbd_become_dmb.c:become_domain_master_stage2(113)
nmbd[1856]: *****
nmbd[1856]:
nmbd[1856]: Samba server TESTSERVER is now a domain master browser for workgroup KUNDENNETZ on subnet 192.168.1.1
nmbd[1856]:
nmbd[1856]: ****
nmbd[1856]: [2004/05/17 16:00:19, 0] nmbd/nmbd_become_lmb.c:become_local_master_stage2(396)
nmbd[1856]: *****
nmbd[1856]:
nmbd[1856]: Samba name server TESTSERVER is now a local master browser for workgroup KUNDENNETZ on subnet 192.168.1.1
nmbd[1856]:
nmbd[1856]: *****
slapd[2213]: conn=0 fd=10 ACCEPT from IP=127.0.0.1:32804 (IP=0.0.0.0:389)
slapd[2213]: conn=0 op=0 BIND dn="" method=128
slapd[2213]: conn=0 op=0 RESULT tag=97 err=0 text=
slapd[2213]: conn=0 op=1 SRCH base="dc=kundennetz" scope=2 deref=0 filter="(&(objectClass=posixAccount)(uid=root))"
slapd[2213]: conn=0 op=1 SEARCH RESULT tag=101 err=0 nentries=0 text=
slapd[2213]: conn=0 op=2 BIND dn="" method=128
slapd[2213]: conn=0 op=2 RESULT tag=97 err=0 text=
slapd[2213]: conn=0 op=3 SRCH base="dc=kundennetz" scope=2 deref=0 filter="(&(objectClass=posixAccount)(uid=root))"
slapd[2213]: conn=0 op=3 SEARCH RESULT tag=101 err=0 nentries=0 text=
Hier sieht zumindest für mich alles gut aus.

Wenn ich nun den an den Testrechner angeschlossenen Windows-2000-Client versuche der Dömäne beizutreten hagelt es nur noch so an Fehlermeldungen.

slapd[2214]: conn=2 fd=14 ACCEPT from IP=127.0.0.1:32806 (IP=0.0.0.0:389)
slapd[2214]: conn=2 op=0 BIND dn="cn=root,dc=kundennetz" method=128
slapd[2214]: conn=2 op=0 BIND dn="cn=root,dc=kundennetz" mech=SIMPLE ssf=0
slapd[2214]: conn=2 op=0 RESULT tag=97 err=0 text=
slapd[2214]: conn=2 op=1 SRCH base="dc=kundennetz" scope=2 deref=0 filter="(&(objectClass=sambaDomain)(sambaDomainName=kundenne tz))"
slapd[2214]: conn=2 op=1 SRCH attr=sambaDomainName sambaNextRid sambaNextUserRid sambaNextGroupRid sambaSID sambaAlgorithmicRidBase objectClass
slapd[2214]: conn=2 op=1 SEARCH RESULT tag=101 err=0 nentries=1 text=
May 17 16:35:15 testserver slapd[2214]: conn=2 op=2 SRCH base="dc=kundennetz" scope=2 deref=0 filter="(&(sambaSID=s-1-5-21-3006739380-2085081912-1024443319-501)(objectClass=sambaSamAccount))"
slapd[2214]: conn=2 op=2 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 modifyTimestamp
slapd[2214]: conn=2 op=2 SEARCH RESULT tag=101 err=0 nentries=0 text=
slapd[2214]: conn=3 fd=17 ACCEPT from IP=127.0.0.1:32807 (IP=0.0.0.0:389)
slapd[2214]: conn=3 op=0 BIND dn="" method=128
slapd[2214]: conn=3 op=0 RESULT tag=97 err=0 text=
slapd[2214]: conn=3 op=1 SRCH base="dc=kundennetz" scope=2 deref=0 filter="(&(objectClass=posixAccount)(uid=nobody))"
slapd[2214]: conn=3 op=1 SRCH attr=uid userPassword uidNumber gidNumber cn homeDirectory loginShell gecos description objectClass
slapd[2214]: conn=3 op=1 SEARCH RESULT tag=101 err=0 nentries=0 text=
slapd[2214]: conn=3 op=2 SRCH base="dc=kundennetz" scope=2 deref=0 filter="(&(objectClass=posixGroup)(memberUid=nobody))"
slapd[2214]: conn=3 op=2 SRCH attr=cn userPassword memberUid uniqueMember gidNumber
slapd[2214]: <= bdb_equality_candidates: (memberUid) index_param failed (18)
slapd[2214]: conn=3 op=2 SEARCH RESULT tag=101 err=0 nentries=0 text=
slapd[2214]: conn=2 op=3 SRCH base="dc=kundennetz" scope=2 deref=0 filter="(&(objectClass=sambaGroupMapping)(gidNumber=65533))"
slapd[2214]: conn=2 op=3 SRCH attr=gidNumber sambaSID sambaGroupType description displayName cn objectClass
slapd[2214]: conn=2 op=3 SEARCH RESULT tag=101 err=0 nentries=0 text=
slapd[2214]: conn=2 op=4 SRCH base="dc=kundennetz" scope=2 deref=0 filter="(&(objectClass=sambaGroupMapping)(gidNumber=65534))"
slapd[2214]: conn=2 op=4 SRCH attr=gidNumber sambaSID sambaGroupType description displayName cn objectClass
slapd[2214]: conn=2 op=4 SEARCH RESULT tag=101 err=0 nentries=0 text=
slapd[2214]: conn=2 op=5 SRCH base="dc=kundennetz" scope=2 deref=0 filter="(&(uid=root)(objectClass=sambaSamAccount))"
slapd[2214]: conn=2 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 modifyTimestamp
slapd[2214]: conn=2 op=5 SEARCH RESULT tag=101 err=0 nentries=0 text=
slapd[2214]: conn=2 op=6 SRCH base="dc=kundennetz" scope=2 deref=0 filter="(&(sambaSID=s-1-5-21-3006739380-2085081912-1024443319-501)(objectClass=sambaSamAccount))"
slapd[2214]: conn=2 op=6 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 modifyTimestamp
slapd[2214]: conn=2 op=6 SEARCH RESULT tag=101 err=0 nentries=0 text=
slapd[2214]: conn=3 op=3 SRCH base="dc=kundennetz" scope=2 deref=0 filter="(&(objectClass=posixAccount)(uid=nobody))"
slapd[2214]: conn=3 op=3 SRCH attr=uid userPassword uidNumber gidNumber cn homeDirectory loginShell gecos description objectClass
slapd[2214]: conn=3 op=3 SEARCH RESULT tag=101 err=0 nentries=0 text=
slapd[2214]: conn=3 op=4 SRCH base="dc=kundennetz" scope=2 deref=0 filter="(&(objectClass=posixGroup)(memberUid=nobody))"
slapd[2214]: conn=3 op=4 SRCH attr=cn userPassword memberUid uniqueMember gidNumber
slapd[2214]: <= bdb_equality_candidates: (memberUid) index_param failed (18)
slapd[2214]: conn=3 op=4 SEARCH RESULT tag=101 err=0 nentries=0 text=
slapd[2214]: conn=2 op=7 SRCH base="dc=kundennetz" scope=2 deref=0 filter="(&(uid=root)(objectClass=sambaSamAccount))"
slapd[2214]: conn=2 op=7 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 modifyTimestamp
slapd[2214]: conn=2 op=7 SEARCH RESULT tag=101 err=0 nentries=0 text=
slapd[2214]: conn=2 op=8 SRCH base="dc=kundennetz" scope=2 deref=0 filter="(&(sambaSID=s-1-5-21-3006739380-2085081912-1024443319-501)(objectClass=sambaSamAccount))"
slapd[2214]: conn=2 op=8 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 modifyTimestamp
slapd[2214]: conn=2 op=8 SEARCH RESULT tag=101 err=0 nentries=0 text=
slapd[2214]: conn=3 op=5 SRCH base="dc=kundennetz" scope=2 deref=0 filter="(&(objectClass=posixAccount)(uid=nobody))"
slapd[2214]: conn=3 op=5 SRCH attr=uid userPassword uidNumber gidNumber cn homeDirectory loginShell gecos description objectClass
slapd[2214]: conn=3 op=5 SEARCH RESULT tag=101 err=0 nentries=0 text=
slapd[2214]: conn=3 op=6 SRCH base="dc=kundennetz" scope=2 deref=0 filter="(&(objectClass=posixGroup)(memberUid=nobody))"
slapd[2214]: conn=3 op=6 SRCH attr=cn userPassword memberUid uniqueMember gidNumber
slapd[2214]: <= bdb_equality_candidates: (memberUid) index_param failed (18)
slapd[2214]: conn=3 op=6 SEARCH RESULT tag=101 err=0 nentries=0 text=
slapd[2214]: conn=2 fd=14 closed
slapd[2214]: conn=3 fd=17 closed


Wäre nett wenn mir jemand helfen könnte.

Gruß Pixel

emba
17.05.04, 22:13
poste bitte mal den inhalt des ldap-verzeichnisses sowie der datei

/etc/nsswitch.conf

greez

pixel
18.05.04, 08:27
Hi@all,


poste bitte mal den inhalt des ldap-verzeichnissesAlso ein 'ls' im Verzeichnis /var/lib/ldap?

__db.001
__db.002
__db.003
__db.004
__db.005
cn.bdb
dn2id.bdb
id2entry.bdb
log.0000000001
ls.txt
objectClass.bdb
sambaDomainName.bdb
sambaSID.bdb
sn.bdb
uid.bdb

Und hier die /etc/nsswitch.conf

passwd: compat
group: compat

hosts: files dns
networks: files dns

services: files
protocols: files
rpc: files
ethers: files
netmasks: files
netgroup: files
publickey: files

bootparams: files
automount: files nis
aliases: files
passwd_compat: ldap
group_compat: ldap

Gruß Pixel

emba
18.05.04, 11:34
nein, ich meinte den inhalt des ldap-verzeichnisdienstes

also ein

ldapsearch -x

und in der nsswitch.conf änder bitte mal folgendes

passwd: files ldap
group: files ldap

schau dir auch mal den sticky hier im forum an, da haben wir nützliche links zu dem thema beigetragen

greez

MrIch
18.05.04, 12:10
alternativ kannst du auch mal die Ausgabe von slapcat posten.

pixel
18.05.04, 12:22
also ein
ldapsearch -x
Wenn ich ein

ldapsearch -x -h localhost -D "cn=root,dc=kundennetz" -W -b "dc=kundennetz"

mache erhalte ich nach der Passworteingabe als Ergebnis:

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

# kundennetz
dn: dc=kundennetz
objectClass: top
objectClass: organization
objectClass: dcObject
dc: kundennetz
o: kundennetz

# root, kundennetz
dn: cn=root,dc=kundennetz
objectClass: top
objectClass: organizationalRole
cn: root

# ldapconfig, kundennetz
dn: ou=ldapconfig,dc=kundennetz
objectClass: top
objectClass: organizationalUnit
ou: ldapconfig

# group, ldapconfig, kundennetz
dn: cn=group,ou=ldapconfig,dc=kundennetz
cn: group
objectClass: top
objectClass: suseModuleConfiguration
objectClass: suseGroupConfiguration
suseDefaultBase: dc=kundennetz
suseDefaultTemplate: cn=susegrouptemplate,ou=ldapconfig,dc=kundennetz
suseMaxUniqueId: 60000
suseMinUniqueId: 1000
suseNextUniqueId: 1000
suseSearchFilter: objectclass=posixgroup

# users, ldapconfig, kundennetz
dn: cn=users,ou=ldapconfig,dc=kundennetz
cn: users
objectClass: top
objectClass: suseModuleConfiguration
objectClass: suseUserConfiguration
suseDefaultBase: dc=kundennetz
suseDefaultTemplate: cn=suseusertemplate,ou=ldapconfig,dc=kundennetz
suseMaxPasswordLength: 8
suseMaxUniqueId: 60000
suseMinPasswordLength: 5
suseMinUniqueId: 1000
suseNextUniqueId: 1002
susePasswordHash: MD5
suseSearchFilter: objectclass=posixaccount
suseSkelDir: /etc/skel

# susegrouptemplate, ldapconfig, kundennetz
dn: cn=susegrouptemplate,ou=ldapconfig,dc=kundennetz
cn: susegrouptemplate
objectClass: top
objectClass: suseObjectTemplate
objectClass: suseGroupTemplate
suseNamingAttribute: cn
susePlugin: UsersPluginLDAPAll

# suseusertemplate, ldapconfig, kundennetz
dn: cn=suseusertemplate,ou=ldapconfig,dc=kundennetz
cn: suseusertemplate
objectClass: top
objectClass: suseObjectTemplate
objectClass: suseUserTemplate
suseDefaultValue: homedirectory=/data/home/%uid
suseDefaultValue: loginshell=/bin/bash
suseNamingAttribute: uid
susePlugin: UsersPluginLDAPAll

# sven, kundennetz
dn: uid=sven,dc=kundennetz
businessCategory: kugruppe
cn: Sven Gehr
gidNumber: 1000
givenName: Sven
homeDirectory: /data/home/sven
initials: sg
loginShell: /bin/bash
o: sven
objectClass: top
objectClass: posixAccount
objectClass: shadowAccount
objectClass: inetOrgPerson
ou: kugruppe
shadowInactive: -1
shadowLastChange: 12555
shadowMax: 99999
shadowMin: 0
shadowWarning: 7
sn: Gehr
uid: sven
uidNumber: 1002
userPassword:: e21kNX1KOERWZnAxSVlPRWJvWTNKaWcyVVdBPT0=

# kugruppe, kundennetz
dn: cn=kugruppe,dc=kundennetz
businessCategory: kugruppe
cn: kugruppe
description: Kundengruppe
gidNumber: 1000
member: uid=sven,dc=kundennetz
o: kugruppe
objectClass: top
objectClass: posixGroup
objectClass: groupOfNames
ou: kugruppe

# KUNDENNETZ, kundennetz
dn: sambaDomainName=KUNDENNETZ,dc=kundennetz
sambaDomainName: KUNDENNETZ
sambaSID: S-1-5-21-3006739380-2085081912-1024443319
sambaAlgorithmicRidBase: 1000
objectClass: sambaDomain

# search result
search: 2
result: 0 Success

# numResponses: 11
# numEntries: 10

Achja, die Änderungen in der nsswitch habe ich gemacht.

Gruß Pixel

pixel
18.05.04, 12:40
Hi@all,

um jedoch zurück zum eigentlichen Problem zu kommen. Ich denke es liegt am Objekt für root. Dieses sieht ja so aus:


# root, kundennetz
dn: cn=root,dc=kundennetz
objectClass: top
objectClass: organizationalRole
cn: root

Ich möchte genau dieses Objekt zur Administration das LDAP- UND des Samba Servers verwenden. Ich denke weiter das genau hier das Problem liegt. Dieses Blattobjekt benötigt noch weitere Attribut um als Samba-LDAP-User zu funktionieren.

Welche Attribute sind das oder liege ich mit dieser Annahme falsch?

Gruß Pixel

emba
18.05.04, 12:43
nein, da liegst du richtig

smbpasswd -w hast du bereits gemacht und du hast einen link in /etc angelegt (mit dem namen ldap.conf), der nach /etc/openldap/ldap.conf zeigt?

dort trägst du noch BASE, URI und BINDDN ein, damit bei den nss funktionen auch die richtigen "credentials" genutzt werden

normalerweise sollte doch ein pdbedit -a -u root zumindest schonmal eine fehlermeldung ausgeben, oder?

greez

pixel
18.05.04, 13:25
Hi@all,


smbpasswd -w hast du bereits gemacht und du hast einen link in /etc angelegt (mit dem namen ldap.conf), der nach /etc/openldap/ldap.conf zeigt?
Es ist zwar kein Link aber die Datei existiert. In dieser wurden durch die Yast-LDAP-Client-Konfiguration auch die richtigen Werte eingetragen.


normalerweise sollte doch ein pdbedit -a -u root zumindest schonmal eine fehlermeldung ausgeben, oder?
Nein kommt kein Fehler. Der Aufruf dieses Befehles hat nach Passwortaufforderung folgendes Objekt im LDAP angelegt:

# root, kundennetz
dn: uid=root,dc=kundennetz
uid: root
sambaSID: S-1-5-21-3006739380-2085081912-1024443319-1000
sambaPrimaryGroupSID: S-1-5-21-3006739380-2085081912-1024443319-1001
displayName: root
sambaPwdCanChange: 1084874609
sambaPwdMustChange: 2147483647
sambaLMPassword: F3C64209BC574A271D71060D896B7A46
sambaNTPassword: 5CFABF6A3ABB0DC0DC7BB3CB3E9C1D5E
sambaPwdLastSet: 1084874609
sambaAcctFlags: [U ]
objectClass: sambaSamAccount
objectClass: account

Anschließend konnte ich am Windows2000 über die Funktion Netzwerkidentifikation der Domäne beitreten, zumindest fast. Das Userhinzufügen klappt noch nicht.
Jedoch wurde der Maschienenaccout automatisch im LDAP-Verzeichnis angelegt:

# sws-alice-nb$, kundennetz
dn: uid=sws-alice-nb$,dc=kundennetz
uid: sws-alice-nb$
sambaSID: S-1-5-21-3006739380-2085081912-1024443319-3000
sambaPrimaryGroupSID: S-1-5-21-3006739380-2085081912-1024443319-1201
objectClass: sambaSamAccount
objectClass: account
displayName: SWS-ALICE-NB$
sambaPwdCanChange: 1084874682
sambaPwdMustChange: 2147483647
sambaNTPassword: 6E02F2E3700B05091C327D79D74CC773
sambaPwdLastSet: 1084874682
sambaAcctFlags: [W ]

So, das ist ja immerhin schon etwas. Nun habe ich einen Unix-User 'root' einen LDAP-Admin 'root' und einen Samba-Administrator 'root'. Ich habe zwar allen den gleichen Namen gegeben und das gleiche Passwort. In Wirklichkeit sind es aber drei völlig unterschiedliche User. Das ist genau das was ich nicht wollte.
Aber ich schätze das geht einfach nicht anders. Solang das bei den restlichen Benutzern nicht macht kann ich damit auch leben.

Jetzt frage ich mich natürlich woher die Vorlage für diesen User (root) kam. Wo ist definiert welche Attribute er bekommt?

Gruß Pixel

emba
18.05.04, 15:02
so sind wir schon einen schritt weiter...gut

die attribute sind in der samba-schema datei sowie in dem binary "pdbedit" definiert
du brauchst aber 3 verschiedene "root" accounts, denn es sind alles verschiedene dienste und bei samba kommst du nicht umhin, je einen samba und posix account anzulegen

den ldap root brauchst ja nur einmal anlegen und wenn weitere user ins ldap verzeichnis kommen, brauchst du keine weiteren "ldap"-user anzulegen, wie du das bei root als manager des ldap-trees gemacht hast

den user oder posix-account für die maschinen fügt er nur automatisch hinzu, wenn du die add user und add machine scripte in der smb.conf definierst

willst du eigentlich 2 "verzeichnisse" für deine samba und posix user haben?
derzeit sieht es bei dir so aus, als wären die samba user im ldap und die posix accounts alle in den "files" (passwd/shadow)

greez

pixel
18.05.04, 15:54
Hi@all,

die attribute sind in der samba-schema datei sowie in dem binary "pdbedit" definiert
du brauchst aber 3 verschiedene "root" accounts, denn es sind alles verschiedene dienste und bei samba kommst du nicht umhin, je einen samba und posix account anzulegenOk, solange das nur root betrifft kann ich damit leben.

willst du eigentlich 2 "verzeichnisse" für deine samba und posix user haben?
derzeit sieht es bei dir so aus, als wären die samba user im ldap und die posix accounts alle in den "files" (passwd/shadow)Wie meinst du zwei Verzeichnisse?

Ziel ist es einen User für's gesamte Netzwerk nur einmal anlegen zu müssen und zwar im LDAP. Diese Benutzer sollen dann von allen geplanten Diensten:

- Linux/Unix - User
- ssh
- Samba
- Proxy
- Groupware
- Hylafax
- evtl. weiter

Wie muß ich hierzu weiter verfahren?

emba
18.05.04, 17:13
wenn alle deine dienste eine schnittstelle zu ldap bieten bzw. dies über pam realisieren können, sollte diese Single-Sign-On-artige geschichte lösbar sein


Wie meinst du zwei Verzeichnisse?

Ziel ist es einen User für's gesamte Netzwerk nur einmal anlegen zu müssen und zwar im LDAP.

du hast meine frage schon beantwortet
leider ist es eben derzeit bei dir so nicht der fall
es fehlen beispielsweise die posix attribute für die user, welche bei dir sicher in passwd stehen (schau mal in /etc/passwd rein)

schau dir mal die smbldap tools von idealx an (sufu benutzen)
die realisieren das ganz gut
alternativ kannst du dir auch eigene shell-scripten basteln, wie ich das gemacht habe, was aber für den anfang mehr aufwand bedeutet

deine fragen, die hier aufkommen, sind nahezu alle schon mal aufgetaucht
ich lege dir deshalb nochmal den sticky hier und die sufu ans herz

greez

pixel
18.05.04, 20:02
Hi@all,

ich habe einen LDAP-Server in welchem ich beliebig Objekte anlegen und löschen kann.

Ich habe einen Samba-Server auf welchen ich auch zugreifen kann.

Wenn ich den User zuerst in Linux anlege und dann ein pdbedit -a -u [User] mache funktioniert der Domain-Login.

Es muß doch möglich sein das mir jeamd sagen kann wie es zu bwerkstelligen ist, oder?

Beim Thema LDAP glaub ich so langsam wirklich das die wenigsten da durchblicken ... naja, egal ich such weiter.

emba
18.05.04, 22:53
Es muß doch möglich sein das mir jeamd sagen kann wie es zu bwerkstelligen ist, oder?

was denn? alle attribute (posix/samba) in ldap?
oder was ist jetzt dein prob?


Beim Thema LDAP glaub ich so langsam wirklich das die wenigsten da durchblicken

ich und viele weitere hier im forum haben erfolgreich samba v3 und ldap zum laufen bekommen

es ist nur immer wieder mühselig, für alle nochmal alles aufzukochen und das rad 3x neu zu erfinden, wenn wir doch schon alles zig mal durchgekaut haben ! deshalb verweise ich immer wieder auf die sufu und den sticky

greez

pixel
19.05.04, 08:55
Hi@all,

also eines Vorweg. Ich denke das ich mitlerweile wirklich jeden Beitrag in diesem Forum gelesen habe der irgendetwas mit LDAP zu tun hat. DER SUFU-Knopf ist schon ganz abgescheuert. Ich beschäftige mich schon länger mit diesem Thema.
So wirklich abschließend wurde DIESES Thema aber hier nicht behandelt. Ich habe durchaus auch einige Postings von dir gelesen wo die Beiträge dann auch einfach aufhörten.

Und noch ein wenig Vorgeschichte. Ich war bereit für die Lösung dieses Problems Geld zu bezahlen. Ich schrieb einen Brief an SuSE das sie mir ein Angebot für die Lösung dieses Problems (ich hab's ausführlich beschrieben) machen. Hier bekam ich zur Antwort das ich das mit dem erw. Tel. Support 1,89 € / Min lösen könnte.
Also bereitet ich ein Testsystem vor und rief dort an. Ich schilderte dem Herrn mein Problem und er fing an in Yast zu suchen. Ich merkte, der Typ probiert das jetzt zum ersten mal. Er fragte mich hin und wieder ob ich das oder das schon probierte habe. Irgendwann, so ca. bei 4,50 € im Display wurde ich stutzig. Dann erzählte ich ihm was ich bereits probiert und gemacht habe. Da meine er: "Da wissen sie ja mehr wie ich, da kann ich ihnen nicht helfen". Die 6,50 € sind wohl für die Katz gewesen. Naja, egal um die Kohle geht's mir nicht. Ich wollte damit nur zum Ausdruck bringen das ich schon sehr viel unternommen habe um das Problem zu lösen. Und jedesmal wenn ein Lösungsansatz ins Stocken gerät der, freundliche Helfer im Forum oder ML auch nicht mehr weiter weiß. Dies verleitet mich einfach zu der vorherigen Aussage.

Was ein Sticky weiß ich nicht, somit kann ich hierzu nichts sagen.

So jetzt aber zum Problem. Ich gehe das Problem jetzt langsam an. Ich möchte nun im ersten Schritt mal den Samba außen vor lassen. Ich brauche die Definition eines User- und Gruppen- Objektes d.h. welche Attribute braucht mein User- und mein Gruppen- Objekt und wie muß ich das System umstellen das bei einem Login an der lokalen Maschiene (also pam.d/login) der LDAP-User benutzt wird und nicht nach einem lokalen User gesucht wird.

Zu pam.d habe ich im Forum gesucht aber nicht wirklich etwas gefunden was mich weiter gebracht hätte.

Gruß Pixel

emba
19.05.04, 10:53
ein sticky ist das hier (steht ganz oben in dem forum)

Migrations Projekt: Windows NT4 Domäne zu Samba 3.0
http://www.linuxforen.de/forums/showthread.php?t=103618

schau mal auf seite 2, da habe ich einige links zusammengetragen

pam.d/login muss in etwa so aussehen:


#%PAM-1.0

auth required pam_securetty.so
auth required pam_nologin.so
auth required pam_env.so
auth required pam_mail.so
auth sufficient pam_unix2.so
auth required pam_ldap.so use_first_pass

account required pam_unix2.so

password required pam_pwcheck.so nullok
password required pam_unix2.so nullok use_first_pass use_authtok

session required pam_unix2.so none # debug or trace
session required pam_limits.so


ein objekt im ldap, mit den benötigten posix/samba attributen, sieht so aus



dn: uid=user,ou=users,dc=your,dc=domain,dc=org
objectClass: posixAccount
objectClass: person
objectClass: sambaSamAccount
objectClass: shadowAccount
cn: user
uid: user
sn: user
displayName: user
uidNumber: 506
gidNumber: 500
sambaSID: S-1-5-21-1042031256-384543897-4128956123-2012
sambaPrimaryGroupSID: S-1-5-21-1042031256-384543897-4128956123-513
homeDirectory: /data/user/home
loginShell: /bin/bash
userPassword: *******************
sambaAcctFlags: [U ]
sambaHomeDrive: U:
sambaHomePath: \\humevopdc\user
sambaProfilePath: \\humevopdc\profile
sambaLogonScript: user.bat
sambaPwdCanChange: 1082028235
sambaPwdMustChange: 2147483647
sambaLMPassword: *******************************************
sambaNTPassword: *******************************************
sambaPwdLastSet: 1082028235



achte auf das korrekte mapping der SID (RID) zur uidNumber
samba verwendet normalerweise folgendes mapping

uidNumber * 2 + 1000 = User-RID
gidNumber * 2 + 1001 = Group-RID

und das ganze logischerweise reverse
in dem beispielt hier hat die gruppe aber trotzdem 513, weil es als well-known-sid gilt und entsprechend unabhängig von der gidNumber des posixaccounts ist
ich habe vorher aber noch eine posix-gruppe, sowie ein entsprechendes mapping anlegen müssen



dn: uid=users,ou=groups,dc=your,dc=domain,dc=org
memberUid: root
objectClass: posixGroup
objectClass: sambaGroupMapping
objectClass: uidObject
gidNumber: 500
uid: users
cn: users
sambaSID: S-1-5-21-1042031256-384543897-4128956123-513
sambaGroupType: 2
displayName: Domain-Users
description: Local Unix group


und



dn: gidNumber=500,ou=idmap,dc=your,dc=domain,dc=org
objectClass: person
objectClass: sambaIdmapEntry
cn: Users
sn: Users
gidNumber: 500
sambaSID: S-1-5-21-1042031256-384543897-4128956123-513


ich habe die trennung der idmaps und groups gewählt, ist auch alles in einem eintrag möglich

sonst findet samba evtl. den user trotzdem nicht, obwohl er mit allen attributen vorhanden ist

schick mir bitte per PN mal deine email addi, hab ein kleines howto, was zwar noch im frühen alpha ist, aber evtl. schon etwas nützt
leider sind schon einige korrekturen angefallen, die ich noch nicht in dem doc berücksichtigt habe

greez

pixel
19.05.04, 12:32
Hi@all,

also wie gesagt, ich versuch jetzt mal kleinere Schritte zu machen, Ich habe die Datei /etc/pam.d/login genauso angelegt.
Einen User im LDAP habe ich angelegt. Dieser verfügt zwar nicht über alles Attribute die du mir genannt hast. Ich möchte mich nun aber im ersten Schritt erst mal mit diesem User lokal anmelden. Der User im LDAP-Verzeichnis sieht so aus:


# sven, kundennetz
dn: uid=sven,dc=kundennetz
businessCategory: gruppe1
cn: Sven Gehr
description: Der erste User
displayName: sven
gidNumber: 1000
givenName: Sven
homeDirectory: /data/home/sven
initials: sg
loginShell: /bin/bash
mail: sven.gehr@kundennetz.de
o: sven
objectClass: top
objectClass: posixAccount
objectClass: shadowAccount
objectClass: inetOrgPerson
preferredLanguage: deutsch
shadowInactive: -1
shadowLastChange: 12557
shadowMax: 99999
shadowMin: 1
shadowWarning: 14
sn: Gehr
uid: sven
uidNumber: 1002
userPassword:: e21kNX1KOERWZnAxSVlPRWJvWTNKaWcyVVdBPT0=

Nachdem ich die Änderungen in login vorgenommen habe kann ich mich überhaupt nichtmehr einloggen.

Was könnte da noch falsch sein?

emba
19.05.04, 12:45
kann an dem ganzen modulstack liegen, den ich eingefügt habe

kommentiere einfach folgende zeilen mal aus der pam.d/login aus

#auth required pam_securetty.so
#auth required pam_nologin.so
#auth required pam_env.so
#auth required pam_mail.so

evtl. gibt es einige module nicht, oder eines der module meldet fail zurück, was den login vorgang scheitern lässt

du kannst checken, ob der user überhaupt im ldap gefunden wird, indem du als root in der kommandozeile "id sven" eingibst

das muss ihn anzeigen, ansonsten haut was mit der namensauflösung gegen ldap nicht hin

greez

pixel
19.05.04, 12:56
Hi@all,

also ich habe die Orginal /etc/pam.d/login wieder zurückkopiert und mir mal das Logfile /var/log/warn angesehen.
Da stand der Fehler recht eindeutig. Die Datei /etc/ldap.secret existierte nicht. Nun habe ich ein:

touch /etc/ldap.secret
echo [mein root Passwort] > /etc/ldap.secret
chmod 400 /etc/ldap.secretgemacht und siehe da ich kann mich an der lokalen Maschiene einloggen.
Allerdings sieht das Eingabeprompt etwas komisch aus:

I have no name!@testserver:~>Lustig gell. Was ich absolut gar nicht verstehe ist wieso es jetzt geht wo doch in meiner /etc/pam.d/login überhaubt gar nix mehr von pam_ldap steht :confused:

Gruß Sven

emba
22.05.04, 16:21
der i have no name eintrag deutet auf mangelnde informationen seitens ldap hin (uid bswp. nicht gefunden)

bitte gehe nochmal so vor, wie ich in meinem letzten beitrag gepostet hatte (auskommentieren)

die ldap.secret ist nicht notwendig für die logins
hier [1] steht schön erklärt, für was sie ist und wie man die logins eigentlich mit ldap löst

greez


[1]
http://lists.debian.org/debian-devel/2001/04/msg00975.html (bitte auch die follow-ups beachten !!!)