PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : LDAP fast geschafft



DaQuark
04.03.04, 12:31
Hallo liebe Gemeinschaft,

habe mit eurer Hilfe bis hierhin viel geschafft - danke erstmal dafür ! Habe jetzt nur noch ein paar kleine Probleme, bevor mein Samba-LDAP Server auf RedHat 9 funktioniert.

zum ersten :
=========

habe ich das Gefühl, dass der Samba-Dienst nicht richtig läuft. Es fehlt z.B. auch eine Datei namens 'nmbd.pid'

Ist diese wichtig ?



zum zweiten :
==========

wenn ich versuche ein Administrator-Konto anzulegen

smbpasswd -a root

dann kommt folgende Fehlermeldung :

ldap_connect_system: Binding to ldap server as "cn=admin,dc=samba,dc=de"
Bind failed: Invalid credentials
ldap_connect_system: Binding to ldap server as "cn=admin,dc=samba,dc=de"
Bind failed: Invalid credentials
Failed to add entry for user root.
Failed to modify password entry for user root



Und als drittes :
===========

Wenn ich einen User hinzufügen möchte (in dem Fall admin) mit der uid=200

./smbldap-useradd.pl -a -m -g 200 admin


dann erscheint diese Fehlermeldung :


Malformed UTF-8 character (unexpected continuation byte 0xab, with no preceding start byte) at /usr/lib/perl5/5.8.0/smbldap_tools.pm line 520.
Malformed UTF-8 character (unexpected continuation byte 0xbb, with no preceding start byte) at /usr/lib/perl5/5.8.0/smbldap_tools.pm line 520.


Das bereitet mir dabei Sorgen :
./smbldap-useradd.pl: unknown group 200

Die Gruppe steht wie folg im Verzeichnis :

cn=Admins
gidNumber: 200
memberUid: admin
objectClass: posixGroup


Danke schonmal für eure Mühe !

Gruß Marcel

emba
04.03.04, 23:08
zum ersteren:

hast du smbpasswd -w "manager_pw" gemacht?
arbeitest du mit ACLs im slapd?

zu letzterem: hab nie mit den idealx tools gearbeitet, aber kann es sein, dass du evtl. falsche angaben in den tools bzgl. der organisation deines trees gemacht hast (ou angeben, bind passwort, ... ) ?

bezieht dein OS die gruppen auch aus dem ldap? ->

getent groups

zu erstem: AFAIK nicht zwingend notwendig

greez

DaQuark
05.03.04, 11:05
Hi,

Ich habe erstmal

smbpasswd -w "Passwort"

gemacht. Das wurde mir dann auch bestätigt und geschrieben, dass das PW in die secrets.tdb gesetzt wurde.

====

Ich kann immer noch keinen Root-User hinzufügen :

====

wenn ich jetzt smbpasswd -a root mache, kommt immer noch folgende Fehlermeldung :

ldap_connect_system: Binding to ldap server as "cn=admin,dc=samba,dc=de"
LDAP search "(&(objectclass=sambaaccount)(uid=root))" returned 0 entries.
ldap_connect_system: Binding to ldap server as "cn=admin,dc=samba,dc=de"
failed to modify user with uid = root with: Undefined attribute type
pwdLastSet: attribute type undefined
Failed to add entry for user root.
Failed to modify password entry for user root


====

>>>arbeitest du mit ACLs im slapd?
was ist ACLs ? habe in der slapd.conf dazu nichts gefunden.


====

>>> zu letzterem: hab nie mit den idealx tools gearbeitet, aber kann es sein, >>> dass du evtl. falsche angaben in den tools bzgl. der organisation deines >>> trees gemacht hast (ou angeben, bind passwort, ... ) ?

ich habe mal spaßeshalber die Gruppeid durch den Gruppennamen ersetzt. ALso

./smbldap-useradd.pl -a -m -g admin admin -- hat funktioniert !

ich hab vorher eine Gruppe namens "admin" nochmal mit den Tools erstellt - funktionierte.

====

>>> bezieht dein OS die gruppen auch aus dem ldap? ->

>>> getent groups

Mein OS bezieht keine Gruppen aus dem LDAP.

====


So nun habe ich versucht, einen Win2000 Rechner in die Domain zu bringen. Fehlanzeige. Es kommt immer die Fehlermeldung :

"Die angegebene Domäne ist nicht vorhanden oder es konnte keine Verbindung hergestellt werden"


Wie sieht das mit Samba aus ? Wenn Samba nicht einwandfrei läuft, kann man dann trotzdem auf die Homedirectories zugreifen ? Habe nämlich den Verdacht, dass Samba in diesem Fall net richtig tickt.

EDIT :

ich habe jetzt den smbd und nmbd Dienst mal aus einem anderen Ordner gestartet. Wenn ich nun px -ax mache, wird folgendes u.a. aufgelistet :

2350 ? S 0:00 /usr/sbin/smbd -D
2358 ? S 0:00 /usr/local/samba/bin/nmbd -D

außerdem sagt mir Webmin, dass der Dienst läuft.
Samba läuft also jetzt einwandfrei. Trotzdem haben sich die Fehlermeldungen oben noch net geändert :(


Danke für eure Hilfe !

Netten gruß Marcel

DaQuark
05.03.04, 11:46
Hi Leute,

habe es jetzt doch geschafft, mich an die Domain anzumelden - FAST !

Wenn ich mit dem Win2k-Client den Rechner zur Domain hinzufügen will, komm ich bis zum Fenster, wo ich den root-Benutzer angeben muss. Ich schätze mal, dass der Root Nutzer nicht richtig angegeben ist (es kommt ja auch immer eine Fehlermeldung)

siehe :

Ich kann immer noch keinen Root-User hinzufügen :

====

wenn ich jetzt smbpasswd -a root mache, kommt immer noch folgende Fehlermeldung :

ldap_connect_system: Binding to ldap server as "cn=admin,dc=samba,dc=de"
LDAP search "(&(objectclass=sambaaccount)(uid=root))" returned 0 entries.
ldap_connect_system: Binding to ldap server as "cn=admin,dc=samba,dc=de"
failed to modify user with uid = root with: Undefined attribute type
pwdLastSet: attribute type undefined
Failed to add entry for user root.
Failed to modify password entry for user root


====

hm ...

DaQuark
05.03.04, 13:50
muss der admin(root) in dem LDAP-Verzeichnet eingetragen sein ? auf dem Server existiert er und ins Verzeichnis hab ich ihn auch schon eingetragen - ohne Erfolg.

Was besagt die Fehlermeldung ? kann es sein, dass man als Objekt "pwdLastSet" mit angeben muss ? Ich hab's versucht, da zeigt er mir aber ständig nen Fehler an und fügt dieses Attribut nicht hinzu.

Ich weiß net mehr weiter :(

Gruß Marcel

emba
05.03.04, 15:35
hast du denn die samba.schema ins openldap verzeichnis zu den anderen schemata gelegt?
vllt. wäre es ratsam, wenn du zunächst einen grundeintrag im ldap für den rootuser anlegst, damit smbpasswd überhaupt einen findet, den er editieren kann?

wenn samba nicht läuft, kannst du auch nicht via smb auf die von samba zur verfügung gestellten shares zugreifen

greez

DaQuark
05.03.04, 16:14
also im openldap verzeichnis befindet sich bereits eine samba.schema. Muss ich irgendwas beachten, wenn ich den User im Verzeichnis anlege ? Habe ihn vorhin schonmal mit ./smbldap-useradd.pl angelegt. Aber jetzt hab ich nochmal ne schlanke Version des Users angelegt :

gidNumber: 505
uidNumber: 1000
uid: smbroot
objectClass: sambaAccount - (habe auch posixAccount ausprobiert)
description: System User
cn: smbroot

Samba läuft mittlerweile !

Was mir nur noch fehlt ist dieser doofe admin Account :-D sonst kann ich mich net an der Domäne anmelden.


Danke nochmal !

Gruß Marcel

emba
05.03.04, 16:51
du hast diese schlanke version des users in ldap integrieren können?
kann ich mir net vorstellen, da du keine strukturelle objektklasse angegeben hast

welche version von openldap benutzt du?

im prinzip muss es so sein, dass du dich an deiner linux workstation in der konsole mit einem user aus dem ldap anmelden kannst - wenn das klappt, dann klappt auch das smbpasswd

ansonsten muss ein getent passwd die user aus dem ldap listen und ein

id user

muss details zum user ausspucken
dann klappt smbpasswd

dies realisierst du alles, wenn noch nicht geschehen, mit nsswitch.conf und pam

greez

mamue
05.03.04, 22:44
wie emba schon sagte: "Da fehlt noch 'n büschen was"
Schau Dir mal die Objectklassen posixAccount an. Da steht, was required und was allowed ist. Daneben brauchst Du noch eine strukturelle Oberklasse in jedem ldap-Eintrag (siehe emba). Vielleicht noch nicht jetzt, weil Deine ldap Version da nachsichtig ist, aber beim nächsten Update wirst Du Deine ware Freude haben, wenn Du das jetzt nicht beachtest (Ich weiss, wovon ich rede <:-) )
Strukturell Oberklassen sind als "structurell" gekennzeichnet, z.B. "top".

mamue

DaQuark
08.03.04, 12:15
Ich habe jetzt erstmal alle Unix-User in das LDAP Verzeichnis eingetragen - das hab ich natürtlich nicht per Hand gemacht *g* sondern mit dem Tool migrate_all_online.sh. Davor habe ich noch die migrate_common.ph angepasst. Nun kann ich mich also mit den Usern aus dem LDAP-Verzeichnis anmelden. Ich hab mal NUR im LDAP-Verzeichnis einen testuser angelegt und konnte dann einfach auf dem Unixrechner mich als testuser anmelden. Wunderbar dachte ich mir. Aber einen smb-admin kann ich immer noch net anlegen :( Immer noch die gleiche Fehlermeldung :



wenn ich jetzt smbpasswd -a root mache, kommt immer noch folgende Fehlermeldung :

ldap_connect_system: Binding to ldap server as "cn=admin,dc=samba,dc=de"
LDAP search "(&(objectclass=sambaaccount)(uid=root))" returned 0 entries.
ldap_connect_system: Binding to ldap server as "cn=admin,dc=samba,dc=de"
failed to modify user with uid = root with: Undefined attribute type
pwdLastSet: attribute type undefined
Failed to add entry for user root.
Failed to modify password entry for user root


=======================



Schau Dir mal die Objectklassen posixAccount an. Da steht, was required und was allowed ist.


Strukturell Oberklassen sind als "structurell" gekennzeichnet, z.B. "top".


mamue




was meinst du damit, dass posixAccount required und allowed sein können - kann man festlegen, was der Server mit posixAccount machen darf und was nicht ? Wenn ja, wo kann man das festlegen ? Liegt es vielleicht daran, dass er bei pwdLastSet immer nen Fehler zeigt ?

Strukturelle Oberklassen existierten vorher (Groups, User usw) und jetzt hat sie das System ja automatisch angelegt.

Hm weiß noch jemand weiter ?

Wäre nett, wenn mir noch jemand helfen könnte !

THX so lot

Gruß Marcel



EDIT :

achso, wenn ich getent passwd user & id user eingebe, erscheint der User aus dem LDAP Verzeichnis, also so wie es sein sollte.

Meine Openldap version :
openldap-2.0.27-8

emba
08.03.04, 13:56
mit welcher samba version arbeitest du eigentlich ?

die objectclass sambaaccount gilt doch als deprecated und man sollte die "sambaSamAccount" nehmen

alternativ kannst du auch dem user zunächst das attribut objectClass=sambaaccount spendieren, dann sollte das auch lüppen

kannst du bitte mal die samba.schema posten?

greez

DaQuark
08.03.04, 14:12
Meine Samba Version ist die 2.2.8a.

Ich habe mal die objectclass sambaaccount und sambaSamAccount ausprobiert. Klappte beides mal auch net. Hatte ich aber schonmal ausprobiert - trotzdem danke.

hier meine

/etc/openldap/schema/samba.schema






##
## schema file for OpenLDAP 2.0.x
## Schema for storing Samba's smbpasswd file in LDAP
## OIDs are owned by the Samba Team
##
## Prerequisite schemas - uid (cosine.schema)
## - displayName (inetorgperson.schema)
##
## 1.3.6.1.4.1.7165.2.1.x - attributetypes
## 1.3.6.1.4.1.7165.2.2.x - objectclasses
##

##
## Password hashes
##
attributetype ( 1.3.6.1.4.1.7165.2.1.1 NAME 'lmPassword'
DESC 'LanManager Passwd'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{32} SINGLE-VALUE )

attributetype ( 1.3.6.1.4.1.7165.2.1.2 NAME 'ntPassword'
DESC 'NT Passwd'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{32} SINGLE-VALUE )

##
## Account flags in string format ([UWDX ])
##
attributetype ( 1.3.6.1.4.1.7165.2.1.4 NAME 'acctFlags'
DESC 'Account Flags'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{16} SINGLE-VALUE )

##
## Password timestamps & policies
##
attributetype ( 1.3.6.1.4.1.7165.2.1.3 NAME 'pwdLastSet'
DESC 'NT pwdLastSet'
EQUALITY integerMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )


attributetype ( 1.3.6.1.4.1.7165.2.1.5 NAME 'logonTime'
DESC 'NT logonTime'
EQUALITY integerMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )

attributetype ( 1.3.6.1.4.1.7165.2.1.6 NAME 'logoffTime'
DESC 'NT logoffTime'
EQUALITY integerMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )

attributetype ( 1.3.6.1.4.1.7165.2.1.7 NAME 'kickoffTime'
DESC 'NT kickoffTime'
EQUALITY integerMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )

attributetype ( 1.3.6.1.4.1.7165.2.1.8 NAME 'pwdCanChange'
DESC 'NT pwdCanChange'
EQUALITY integerMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )

attributetype ( 1.3.6.1.4.1.7165.2.1.9 NAME 'pwdMustChange'
DESC 'NT pwdMustChange'
EQUALITY integerMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )

##
## string settings
##
attributetype ( 1.3.6.1.4.1.7165.2.1.10 NAME 'homeDrive'
DESC 'NT homeDrive'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{4} SINGLE-VALUE )

attributetype ( 1.3.6.1.4.1.7165.2.1.11 NAME 'scriptPath'
DESC 'NT scriptPath'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{255} SINGLE-VALUE )

attributetype ( 1.3.6.1.4.1.7165.2.1.12 NAME 'profilePath'
DESC 'NT profilePath'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{255} SINGLE-VALUE )

attributetype ( 1.3.6.1.4.1.7165.2.1.13 NAME 'userWorkstations'
DESC 'userWorkstations'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{255} SINGLE-VALUE )

attributetype ( 1.3.6.1.4.1.7165.2.1.17 NAME 'smbHome'
DESC 'smbHome'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{128} )

attributetype ( 1.3.6.1.4.1.7165.2.1.18 NAME 'domain'
DESC 'Windows NT domain to which the user belongs'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{128} )

##
## user and group RID
##
attributetype ( 1.3.6.1.4.1.7165.2.1.14 NAME 'rid'
DESC 'NT rid'
EQUALITY integerMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )

attributetype ( 1.3.6.1.4.1.7165.2.1.15 NAME 'primaryGroupID'
DESC 'NT Group RID'
EQUALITY integerMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )

##
## The smbPasswordEntry objectclass has been depreciated in favor of the
## sambaAccount objectclass
##
#objectclass ( 1.3.6.1.4.1.7165.2.2.1 NAME 'smbPasswordEntry' SUP top AUXILIARY
# DESC 'Samba smbpasswd entry'
# MUST ( uid $ uidNumber )
# MAY ( lmPassword $ ntPassword $ pwdLastSet $ acctFlags ))

#objectclass ( 1.3.6.1.4.1.7165.2.2.2 NAME 'sambaAccount' SUP top STRUCTURAL
# DESC 'Samba Account'
# MUST ( uid $ rid )
# MAY ( cn $ lmPassword $ ntPassword $ pwdLastSet $ logonTime $
# logoffTime $ kickoffTime $ pwdCanChange $ pwdMustChange $ acctFlags $
# displayName $ smbHome $ homeDrive $ scriptPath $ profilePath $
# description $ userWorkstations $ primaryGroupID $ domain ))

## The X.500 data model (and therefore LDAPv3) says that each entry can
## only have one structural objectclass. OpenLDAP 2.0 does not enforce
## this currently but will in v2.1

objectclass ( 1.3.6.1.4.1.7165.2.2.3 NAME 'sambaAccount' SUP top AUXILIARY
DESC 'Samba Auxilary Account'
MUST ( uid $ rid )
MAY ( cn $ lmPassword $ ntPassword $ pwdLastSet $ logonTime $
logoffTime $ kickoffTime $ pwdCanChange $ pwdMustChange $ acctFlags $
displayName $ smbHome $ homeDrive $ scriptPath $ profilePath $
description $ userWorkstations $ primaryGroupID $ domain ))

##
## Used for Winbind experimentation
##
#objectclass ( 1.3.6.1.4.1.7165.1.2.2.3 NAME 'uidPool' SUP top AUXILIARY
# DESC 'Pool for allocating UNIX uids'
# MUST ( uidNumber $ cn ) )

#objectclass ( 1.3.6.1.4.1.7165.1.2.2.4 NAME 'gidPool' SUP top AUXILIARY
# DESC 'Pool for allocating UNIX gids'
# MUST ( gidNumber $ cn ) )




THX Marcel

emba
08.03.04, 17:00
hi

achso, das alte samba noch...
dann sind meine angaben oben bzgl. "deprecated" nicht korrekt

okay, du hast es schonmal versucht, aber es ging auch nicht?
meinst du damit, dass das hinzufügen der objectclass sambaaccount nicht klappte oder dass dies zwar klappte (ohne fehlermeldungen - du hast auch rid und uid als attribute in dem eintrag), aber smbpasswd wieder nicht ging ???

normalerweise sollte er doch das attribut pwdlastset hinzufügen können, da du die entsprechende objectclass eingefügt hast

kannst du eigentlich händisch dieses attribut mit einem wert "123456" belegen?

greez

DaQuark
09.03.04, 12:13
hi

achso, das alte samba noch...
dann sind meine angaben oben bzgl. "deprecated" nicht korrekt

okay, du hast es schonmal versucht, aber es ging auch nicht?
meinst du damit, dass das hinzufügen der objectclass sambaaccount nicht klappte oder dass dies zwar klappte (ohne fehlermeldungen - du hast auch rid und uid als attribute in dem eintrag), aber smbpasswd wieder nicht ging ???

normalerweise sollte er doch das attribut pwdlastset hinzufügen können, da du die entsprechende objectclass eingefügt hast

kannst du eigentlich händisch dieses attribut mit einem wert "123456" belegen?

greez



also ich hab mal versucht dem User root oder smbroot die objectclass sambaaccount oder sambaSamAccount zu geben. Das hinzufügen in dem LDAP-Verzeichnis hat keine Schwierigkeiten bereitet. Aber das Problem war damit leider noch nicht gelöst. Oder muss ich ne extra Gruppe (ou) sambaaccount anlegen ? nee, oder ?

Was ich nicht machen kann ist : pwdlastset einem user zuteilen. Also eine objectclass namens pwdlastset definieren geht nicht. Da zeigt mir der LDAP-Browser immer den Fehler failed to add attribute 'pwdlastset'.

Das Attribut existiert nicht in dem Verzeichnis und anlegen kann ich es auch nicht - hm.

emba
09.03.04, 16:31
Oder muss ich ne extra Gruppe (ou) sambaaccount anlegen ? nee, oder ?

nein


Also eine objectclass namens pwdlastset definieren
es ist ein attribut, keine OC !!!
erst die OC sambaaccount hinzufügen und dann mittels ldif file und ldapmodify das attribut pwdlastset hunzufügen

teste es mal so

greez

DaQuark
11.03.04, 10:48
Ich habe nun nochmal versucht, das Attribut in der LDIF-Datei anzugeben - FEHLANZEIGE :( ich gebe folgenden Befehl ein

ldapadd -D cn=admin,dc=samba,dc=de -x -W -f /etc/openldap/ldif/samba/users.ldif

und bekomme folgende Fehlermeldung an den Kopf geworfen.

adding new entry "uid=testadmin, ou=People,dc=samba,dc=de"
ldap_add: Undefined attribute type
additional info: pwdlastset: attribute type undefined

ldif_record() = 17

Er mag prinzipiell das Attribut pwdlastset nicht. ich hab auch schon pwlastset und mit groß und kleinschreibung probiert - alles gescheitert. Kann es sein, dass meine LDAP-Version dieses Attribut nicht kennt - oder muss ich irgend ein anderes Attribut noch zusätzlich hinzufügen ? Habe aber im Internet keine Hinweise dazu gefunden - hatte bis jetzt auch noch keiner den Fehler.

Was muss ich mit ldapmodify machen ? fügt man damit Attribute hinzu ?

Gruß der leicht verzweifelte Marcel

emba
11.03.04, 13:11
ldapmodify und ldapadd sind prinzipiell die gleichen, außer dass modify bei bestehenden einträgen nicht "schimpft" und diese ggf. modifiziert

ldap selbst hat nichts mit den attributen zu tun:
dafür sind die scheme dateien zuständig

das einzige, was man eigentlich machen muss, um objectclasses und attribute überhaupt einem user zuweisen zu können ist

a) das schema ins openldap-schema verzeichnis kopieren

b) das schema laden

include /path/to/openldap/schema/file.schema

und das attribut heißt genau so in deinem ldif file: pwdLastSet ???

greez

[WCM]Manx
11.03.04, 13:22
@DaQuark

mein Tipp:
Fang mit Samba 3 noch mal von vorne an.
Mit Samba 3 hat sich einiges verändert und v.a. vieles verbessert.
Auch die "Profis" im Forum (emba, mamue, usw.) setzen schon längere Zeit auf die Version 3.

Grüße

Manx

emba
11.03.04, 14:34
Auch die "Profis" im Forum (emba

:ugly:

DaQuark
26.03.04, 16:15
Diese Problem liegt doch aber nicht an Samba, oder ? Es liegt doch eher ein LDAP-Problem vor, oder täusch ich mich ? Habe schon das Internet dreimal komplett aufgekrämpelt, aber zu diesem Fehler noch nix gefunden. Scheint bis jetzt wohl noch niemand gehabt zu haben ...

mfg Marcel

[WCM]Manx
26.03.04, 16:27
... ja aber die LDAP-Unterstützung hat sich mit Samba 3 verbessert.
Und da ich nur empfehlen kann, die "Samba Howto Collection" durchzuarbeiten, würd' ich gleich auf Samba 3 setzen bzw. besser gehofen werden kann dir auch.

Manx