PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Samba+Ldap] User sollen Passwort unter Win+Linux ändern können



AceTheFace
10.06.05, 10:40
Hallo,

folgendes Problem: Haben hier einen openldap-server in Verbindung mit einem Samba-Server (v. 3.0.11). Das klappt soweit auch ganz gut, d.h. die Clients können sich sowohl von Windows als auch mit Linux anmelden, bekommen ihre Homeverzeichnisse zugewiesen etc. Läuft eigentlich wirklich gut.
Das einzige Problem was wir noch haben, die User können ihr Passwort nicht ändern:

Linux-Client: Wenn user passwd eingibt, wird im LDAP-Eintrag immer nur das UserPassword geändert, nicht jedoch das NTPassword bzw. das LMPassword => unter Linux gilt das neue Passwort, unter Windows immer noch das alte.

Windows-Client: Hier kann ein User sein Passwort überhaupt nicht ändern "Sie haben keine Berechtigung ihr Passwort zu ändern. (Obwohl smbPasswdCanChange auf 1 gesetzt ist und folgendes gelten sollte:


access to attrs=userPassword,sambaLMPassword,sambaNTPassword
by self write
by anonymous auth
by * none
access to *
by * read



Momentane Abhilfe: Die User müssen zu den Admins und ändern ihr Passwort dann direkt auf dem LDAP-Server mittels smbldap-passwd $USERNAME. Keine wirklich schöne Lösung.

Würde mich über jeglichen Hinweis freuen.

Gruß,
Ace


Hier mal noch Auszüge aus den Configs:



# Global parameters
[global]
workgroup = IDEALX-NT
netbios name = PDC-SRV
enable privileges = yes
interfaces = 192.168.5.11
username map = /etc/samba/smbusers
server string = Samba Server %v
security = user
encrypt passwords = Yes
min passwd length = 3
obey pam restrictions = No
#unix password sync = Yes
passwd program = /usr/local/sbin/smbldap-passwd %u
#passwd chat = "Changing password for*\nNew password*" %n\n "*Retype new password*" %n\n"
ldap passwd sync = Yes
log level = 0
syslog = 0
log file = /var/log/samba/log.%m
max log size = 100000
time server = Yes
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
mangling method = hash2
Dos charset = 850
Unix charset = ISO8859-1

logon script = logon.bat
logon drive = H:
logon home =
logon path =

domain logons = Yes
os level = 65
preferred master = Yes
domain master = Yes
wins support = Yes
passdb backend = ldapsam:ldap://127.0.0.1/
# passdb backend = ldapsam:"ldap://127.0.0.1/ ldap://slave.idealx.com"
# ldap filter = (&(objectclass=sambaSamAccount)(uid=%u))
ldap admin dn = cn=samba,ou=Users,dc=idealx,dc=org
ldap suffix = dc=idealx,dc=org
ldap group suffix = ou=Groups
ldap user suffix = ou=Users
ldap machine suffix = ou=Computers
ldap idmap suffix = ou=Users
ldap ssl = start tls
add user script = /usr/local/sbin/smbldap-useradd -m "%u"
ldap delete dn = Yes
#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"





dn: dc=idealx,dc=org
objectClass: dcObject
objectclass: organization
o: idealx
dc: idealx

dn: ou=Users,dc=idealx,dc=org
objectClass: organizationalUnit
ou: Users

dn: ou=Groups,dc=idealx,dc=org
objectClass: organizationalUnit
ou: Groups

dn: ou=Computers,dc=idealx,dc=org
objectClass: organizationalUnit
ou: Computers
dn: uid=Administrator,ou=Users,dc=idealx,dc=org
cn: Administrator
sn: Administrator
objectClass: inetOrgPerson
objectClass: sambaSAMAccount
objectClass: posixAccount
objectClass: shadowAccount
gidNumber: 512
uid: Administrator
uidNumber: 0
homeDirectory: /home/%U
sambaPwdLastSet: 0
sambaLogonTime: 0
sambaLogoffTime: 2147483647
sambaKickoffTime: 2147483647
sambaPwdCanChange: 0
sambaPwdMustChange: 2147483647
sambaHomePath: \\PDC-SMB3\home\%U
sambaHomeDrive: H:
sambaProfilePath: \\PDC-SMB3\profiles\%U\Administrator
sambaPrimaryGroupSID: S-1-5-21-4231626423-2410014848-2360679739-512
sambaLMPassword: XXX
sambaNTPassword: XXX
sambaAcctFlags: [U ]
sambaSID: S-1-5-21-4231626423-2410014848-2360679739-2996
loginShell: /bin/false
gecos: Netbios Domain Administrator

dn: uid=nobody,ou=Users,dc=idealx,dc=org
cn: nobody
sn: nobody
objectClass: inetOrgPerson
objectClass: sambaSAMAccount
objectClass: posixAccount
objectClass: shadowAccount
gidNumber: 514
uid: nobody
uidNumber: 999
homeDirectory: /dev/null
sambaPwdLastSet: 0
sambaLogonTime: 0
sambaLogoffTime: 2147483647
sambaKickoffTime: 2147483647
sambaPwdCanChange: 0
sambaPwdMustChange: 2147483647
sambaHomePath: \\PDC-SMB3\home\%U
sambaHomeDrive: H:
sambaProfilePath: \\PDC-SMB3\profiles\%U\nobody
sambaPrimaryGroupSID: S-1-5-21-4231626423-2410014848-2360679739-514
sambaLMPassword: NO PASSWORDXXXXXXXXXXXXXXXXXXXXX
sambaNTPassword: NO PASSWORDXXXXXXXXXXXXXXXXXXXXX
sambaAcctFlags: [NU ]
sambaSID: S-1-5-21-4231626423-2410014848-2360679739-2998
loginShell: /bin/false

dn: cn=Domain Admins,ou=Groups,dc=idealx,dc=org
objectClass: posixGroup
objectClass: sambaGroupMapping
gidNumber: 512
cn: Domain Admins
memberUid: Administrator
description: Netbios Domain Administrators
sambaSID: S-1-5-21-4231626423-2410014848-2360679739-512
sambaGroupType: 2
displayName: Domain Admins

dn: cn=Domain Users,ou=Groups,dc=idealx,dc=org
objectClass: posixGroup
objectClass: sambaGroupMapping
gidNumber: 513
cn: Domain Users
description: Netbios Domain Users
sambaSID: S-1-5-21-4231626423-2410014848-2360679739-513
sambaGroupType: 2
displayName: Domain Users

dn: cn=Domain Guests,ou=Groups,dc=idealx,dc=org
objectClass: posixGroup
objectClass: sambaGroupMapping
gidNumber: 514
cn: Domain Guests
description: Netbios Domain Guests Users
sambaSID: S-1-5-21-4231626423-2410014848-2360679739-514
sambaGroupType: 2
displayName: Domain Guests

dn: cn=Print Operators,ou=Groups,dc=idealx,dc=org
objectClass: posixGroup
objectClass: sambaGroupMapping
gidNumber: 550
cn: Print Operators
description: Netbios Domain Print Operators
sambaSID: S-1-5-21-4231626423-2410014848-2360679739-550
sambaGroupType: 2
displayName: Print Operators

dn: cn=Backup Operators,ou=Groups,dc=idealx,dc=org
objectClass: posixGroup
objectClass: sambaGroupMapping
gidNumber: 551
cn: Backup Operators
description: Netbios Domain Members can bypass file security to back up files
sambaSID: S-1-5-21-4231626423-2410014848-2360679739-551
sambaGroupType: 2
displayName: Backup Operators

dn: cn=Replicator,ou=Groups,dc=idealx,dc=org
objectClass: posixGroup
objectClass: sambaGroupMapping
gidNumber: 552
cn: Replicator
description: Netbios Domain Supports file replication in a sambaDomainName
sambaSID: S-1-5-21-4231626423-2410014848-2360679739-552
sambaGroupType: 2
displayName: Replicator

dn: cn=Domain Computers,ou=Groups,dc=idealx,dc=org
objectClass: posixGroup
objectClass: sambaGroupMapping
gidNumber: 553
cn: Domain Computers
description: Netbios Domain Computers accounts
sambaSID: S-1-5-21-4231626423-2410014848-2360679739-553
sambaGroupType: 2
displayName: Domain Computers

AceTheFace
12.06.05, 22:38
Keiner 'ne Idee?

Gruß,
Ace

marsxl
13.06.05, 16:54
Hallo,
Linux-Client: Wenn user passwd eingibt, wird im LDAP-Eintrag immer nur das UserPassword geändert, nicht jedoch das NTPassword bzw. das LMPassword => unter Linux gilt das neue Passwort, unter Windows immer noch das alte.

Windows-Client: Hier kann ein User sein Passwort überhaupt nicht ändern "Sie haben keine Berechtigung ihr Passwort zu ändern.


Windows verwendet ACLs, dessen 100%ige Unterstützung IMHO noch nicht gewährleistet ist. Auch nicht bei SAMBA3.

Linux verwendet die /etc/passwd und /etc/shadow, damit sich User autenthifizieren können.
Windows benutzt die SAM Konto-Datenbank.

Ausserdem speichert Windows alle Berechtigungsbits in den ACL's (Access Controll List) ab. Auch die Berechtigungen, ob jemand sein Passwort ändern darf oder nicht. Diese ACL's gibt es für alle Ordner, Dateien, etc., bzw. auch für alle Objekte im ADS.

Linux verwendet ein anderes System, um die Berechtigungen zu hintelegen (kenne ich aber leider nicht).

Was du bräuchtest wäre eine gemeinsame Schnittmenge beider Systeme, die im Idealfall von SAMBA bereitgestellt wird.

Zufälligerweise habe ich ein ähnliches Projekt am laufen. :)
Vielleicht können wir uns gegenseitig ergänzen!

Ich verwende Fedora Core 1 mit dem 2.4.31 Kernel. Ich hab mir die SAMBA 3.0.13 Sourcen gesaugt und Compiliere dann selbst.
für den ./configure Befehl von SAMBA gibt es ein paar Optionen, die interessant sind und deren genauere Bedeutung ich noch herausfinden will. Die Optionen lauten --with-smbwrapper und --with-ldapsam.
Vielleicht weißt du etwas darüber???



Momentane Abhilfe: Die User müssen zu den Admins und ändern ihr Passwort dann direkt auf dem LDAP-Server mittels smbldap-passwd $USERNAME. Keine wirklich schöne Lösung.


Vielleicht kannst du den Usern ein Shellscript zur Verfügung stellen, dass den Weg durch dein Netz mit allen "Kontrollstellen" zum LDAP-Server enthält???

MfG
marsxl

emba
14.06.05, 08:30
sorry @ marsxl
aber dein posting ist kompletter "nullwert" !!!
wenn das einer liest und glaubt ist er ganz schön aufgeschmissen!
bitte vergewisser dich vor dem posten, ob das, was du schreibst, auch fakt ist

ace spricht von openldap ACLs, nicht von windows ACLs

@ace bitte versuch mal den parameter "passwd program" auszukommentieren, da ich das gleiche setup hier ohne diesen parameter am laufen habe und "ldap passwd sync = yes" dies erledigt



Linux verwendet die /etc/passwd und /etc/shadow, damit sich User autenthifizieren können.
[quote]
das ist zu absolut - es gibt nach zahlreiche andere backends (winbind, openldap, nis, ...)

[Windows benutzt die SAM Konto-Datenbank.
oder eben einen domänencontroller



Ausserdem speichert Windows alle Berechtigungsbits in den ACL's (Access Controll List) ab. Auch die Berechtigungen, ob jemand sein Passwort ändern darf oder nicht. Diese ACL's gibt es für alle Ordner, Dateien, etc., bzw. auch für alle Objekte im ADS.
password policies werden noch immer in der SAM bzw. in den policies des ADS festgehalten - dies hat nichts mit ACLs zu tun


Linux verwendet ein anderes System, um die Berechtigungen zu hintelegen (kenne ich aber leider nicht).
[quote]
bspw. shadow, wie du bereits oben geschrieben hast

[quote]--with-smbwrapper und --with-ldapsam.
Vielleicht weißt du etwas darüber???
ldapsam ist das ldapbackend, das samba zur verwaltung der accounts verwenden kann
smbwrapper -> http://freebooks.by.ru/view/SambaIn24h/ch13-02.htm

ps: vllt. solltest du samba nicht selbst kompilieren sondern als rpm installieren

greez

AceTheFace
14.06.05, 09:37
@ace bitte versuch mal den parameter "passwd program" auszukommentieren, da ich das gleiche setup hier ohne diesen parameter am laufen habe und "ldap passwd sync = yes" dies erledigt


Ok, danke, werde ich probieren. Danke.

Gruß,
Ace

marsxl
14.06.05, 12:26
@emba

tnx für das korrigieren :rolleyes:

ich fühlte mich genötigt, mit meinem wissen zu helfen, aber vermutlich ist es noch zuviel gefährliches halbwissen. nunja, ich werde mich in zukunft zurück halten. :ugly:

kompilieren will ich schon selbst, denn erfahrung wächst nicht auf bäumen, u know! :D

AceTheFace
14.06.05, 12:38
Also

#passwd program = /usr/local/sbin/smbldap-passwd %u in der smb.conf hat leider nichts gebracht. Es wird immer noch nur das userpassword geändert.
Was steckt denn hinter der Zeile ldap passwd sync? Synct er da wirklich die passwd? Weil die wird bei uns ja eigentlich nicht mehr verwendet... :confused:

Gruß,
Ace

emba
14.06.05, 12:59
"ldap passwd sync" synchronisiert samba- und unixpassword zugleich (wenn auf "yes")

funzt hier bei mir einwandfrei

was sagen denn die logs?

greez

AceTheFace
14.06.05, 14:10
"ldap passwd sync" synchronisiert samba- und unixpassword zugleich (wenn auf "yes")


Aber welches Unix-Passwort denn? Intern im LDAP-Tree?

Kannst du mir mal deine Confs zukommen lassen?

Gruß,
Ace

emba
14.06.05, 15:38
jep, nur im ldap

conf ist schlecht, habe sie ähnlich wie du nur ohne "passwd program"

setze den debug level höher und checke auch die openldap logs

greez

marsxl
17.06.05, 12:51
Hallo nochmal!

Auch wenn mein Posting möglicherweise Gefahr läuft "Out of Thread" zu sein, möchte ich hier doch noch mal etwas veröffentlichen. Ich hab mir mal RTFM zu Herzen genommen und einige nette Gimmicks herausgefunden.


Was du bräuchtest wäre eine gemeinsame Schnittmenge beider Systeme, die im Idealfall von SAMBA bereitgestellt wird.
Ich habe die gemeinsame Schnittmenge gefunden.

Die Stichworte dazu lauten:
- SAMBA 3.0.14a
- OpenLDAP (ldapsam)
- winbind


Die Integration von UNIX und Microsoft Windows NT durch eine einheitliche Anmeldung („unified logon“) galt lange Zeit als „heiliger Gral“ in heterogenen EDV-Umgebungen.
[ ... ]
Es ist zwingend notwendig, dass es einen Mechanismus gibt, mit dem es möglich ist, Dateien über UNIX-Systeme hinweg bereitzustellen und gleichzeitig die Integrität der Domänen-Benutzer- und Gruppenrechte zu wahren.

winbind ist ein Bestandteil der Samba-Suite, der das Problem der einheitlichen Anmeldung löst. Winbind benutzt eine UNIX-Implementierung der Microsoft RPC-Aufrufe, „Pluggable Authentication“-Module (PAM) und den Name Service Switch (NSS), um Windows NT-Domänenbenutzer auf UNIX-Systemen als UNIX-Benutzer erscheinen und arbeiten zu lassen.

Nun noch ein paar interessante Links
Englisches SAMBA HoTo (meist aktueller als DE-HoTo) (http://us1.samba.org/samba/docs/man/Samba3-HOWTO/)
Deutsches SAMBA HoTo (http://gertranssmb3.berlios.de/output/)
Deutsche Seite über LDAP - Gute Erklärungen (http://www.mitlinx.de/ldap/)
LDAP Admin-Guides (http://www.openldap.org/doc/)

MfG

marsxl
17.06.05, 13:15
ace spricht von openldap ACLs, nicht von windows ACLs
greezOK, aber es gibt da (IMHO) *keinen* unterschied.

Vom Prinzip her macht OpenLDAP nichts anderes als ADS, weil beide auf X.500 basieren.

ACLs müssen IMHO bis zu einem gewissen Grad standardisiert sein, weil ja sonst jeder (M$ / OSS-Comunity / *wasweißichwer*) sein eigenes Süppchen kochen würde.

Der *einzige* Unterschied besteht darin, das ich ACLs erst in meine OSS Verzeichnisdienstlösung (SAMBA/OpenLDAP) implementieren muss, um eine komfortable interoperabilität mit Windows erreichen zu können.

Wenn du gravierendere Unterschiede kennst, würde es mich interessieren, diese kennenzulernen.

MfG

emba
17.06.05, 14:52
@marsxl

*schmunzel*

ich dachte, du hast wirklich RTFM gemacht :)


OK, aber es gibt da (IMHO) *keinen* unterschied.
natürlich
ACLs in openldap beschränken den zugriff mit eigener syntax auf das verzeichnis
ACLs in NTFS beschränken den zugriff auf files/directories im filesystem mit granulierten rechten - ergo, dass einzige, was openldap und windows/linux ACLs gemeinsam haben, ist der begriff, der beschreibt, dass hier zugriffsberechtigungen festgelegt werden können


ACLs müssen IMHO bis zu einem gewissen Grad standardisiert sein, weil ja sonst jeder (M$ / OSS-Comunity / *wasweißichwer*) sein eigenes Süppchen kochen würde.
eben das macht jeder
wer sagt, dass es standardisiert sein muss? wenn NTFS ACLs ein standard wären, so müsste man sie doch einfach in XFS integrieren können, oder? was denkst du, warum es so lang gedauert hat, bis mal ein NTFS treiber für linux rauskam? sicherlich nicht, weil MS so freundlich war, die quellen zu veröffentlichen


Der *einzige* Unterschied besteht darin, das ich ACLs erst in meine OSS Verzeichnisdienstlösung (SAMBA/OpenLDAP) implementieren muss, um eine komfortable interoperabilität mit Windows erreichen zu können.
zum verständnis: meinst du mit OSS open source software?
die ACLs von openldap haben nichts mit der interoperabilität von windows und samba zu tun - nur wenn samba ACLs (und das filesystem auch) unterstützt, kannst du halbwegs rechte definieren
da dies aber nocht nicht 100% implementiert ist und erst für samba v4 geplant ist, ist dies noch nicht so recht "komfortabel"; oder kannst du mir das gegenteil beweisen?

kannst du bspw. über das netzwerk mit smb/cifs auf einem samba server von windows xp aus das recht "attribute schreiben" einem nutzer entziehen ;) ???

ps: bitte weiter RTFM befolgen

greez

marsxl
17.06.05, 15:14
danke für die differenzierung. *ahhh* :D

wer sagt, dass es standardisiert sein muss? wenn NTFS ACLs ein standard wären, so müsste man sie doch einfach in XFS integrieren können, oder? was denkst du, warum es so lang gedauert hat, bis mal ein NTFS treiber für linux rauskam? sicherlich nicht, weil MS so freundlich war, die quellen zu veröffentlichen
das ist ein argument, dass man so ohne weiteres nicht widerlegen kann.
ich hab einfach mal von allem losgelöst versucht, das thema von einer logischen, offenen perspektive zu betrachten. irgendwie hab ich dabei aber die philosophie von M$ ausser sicht verloren. :ugly:

ja, mit OSS meine ich open source software.


kannst du bspw. über das netzwerk mit smb/cifs auf einem samba server von windows xp aus das recht "attribute schreiben" einem nutzer entziehen ???wenn du mit entziehen verweigern meinst, würde ich sagen: nein, weil ich denke, dass das zu speziell ist. aber rechte verweigern sollte man ja auch nur, wenn es garnicht anders geht.
viel wichtiger ist mir, ob ich mit der samba-lösung systemrichtlinien (poledit), roaming-profiles und zugriffsrechte auf shares mit einer gewissen bequemlichkeit einrichten kann.
um das herauszufinden hab ich ein testsystem, zeit und ganz viel RTFM. :D

tnx'n'MfG

emba
17.06.05, 16:09
wenn du mit entziehen verweigern meinst, würde ich sagen: nein, weil ich denke, dass das zu speziell ist. aber rechte verweigern sollte man ja auch nur, wenn es garnicht anders geht.
es ist nicht zu speziell, sondern nicht implementiert in samba v3
generell sollte man immer alles verweigern und granuliert zugriff gewähren - eine grundphilosophie der sicherheit

es geht mir nicht ums verweigern, denn selbst das erlauben klappt nicht, da einfach diese funktion nicht implementiert ist

greez

marsxl
17.06.05, 16:25
generell sollte man immer alles verweigern und granuliert zugriff gewähren - eine grundphilosophie der sicherheitda scheiden sich die geister!!! das ist ein thema wie politik oder religion. man kann ewig diskutieren, aber am ende bleibt jeder bei seiner meinung. :)


es geht mir nicht ums verweigern, denn selbst das erlauben klappt nicht, da einfach diese funktion nicht implementiert ist.ok, das war mir bisher noch unklar.
gut zu wissen und ein schönes we!

MfG

marsxl
22.06.05, 11:06
@emba

ace spricht von openldap ACLs, nicht von windows ACLs
wenn ich ldap kompilieren will, lautet die option für die ACLs "--enable-aci"?

gibt es irgendwo im inet eine liste, die alle ./configure parameter von LDAP genauer beschreibt als ./configure --help? ich hab schon mit google gesucht, aber immer nur detail-probleme oder mini-infos gefunden, die mich nicht wirklich weitergebracht haben.

genauer würden mich folgende parameter interessieren:


--enable-aci
--enable-spasswd
--enable-wrappers
--enable-bdb
--enable-hdb
--enable-ldap
--enable-dynamic
--enable-crypt
--enable-lmpasswd
--enable-dnssrv


many thanks
and
MfG

emba
22.06.05, 13:09
ich versuche mal, einige parameter zu erklären

--enable-bdb
--enable-hdb
--enable-ldap
alles backend optionen, d.h. wie werden die daten wo gespeichert; bdb ist der standard

--enable-wrappers
http://www.linuxfibel.de/wrapper.htm

--enable-spasswd
zur authentifizierung kann cyrus sasl verwendet werden

--enable-dynamic
dynamische libs werden verwendet, d.h. zur laufzeit eingebunden

--enable-crypt
--enable-lmpasswd
diverse verschlüsselungsalgorithmen für passwörter erlauben

--enable-dnssrv
backend für dns server bauen? dient bspw. für dns lookups bei einsatz von ADS

greez