PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Kennwortänderung unter LDAP von Windows aus



mykleines
26.11.02, 13:09
Hallo,

ich habe einen Samba-Server sowie OpenLDAP aufgesetzt. Ein Rechner ist mittlerweile an die Domäne angemeldet und das Anmelden der Benutzer an dem PDC (Samba-Server) funktioniert einwandfrei mit den im OpenLDAP verwalteten Usern.

Doch nun soll den Usern an ihrer Windows-Kiste (W2K) die Möglichkeit gegen werden, ihr Kennwort zu ändern. Möglichst ohne dabei an den PDC ran zu müssen.

Ein Kennwort ändern geht im Normalfall über "Strg-Alt-Entf" -> "Kennwort ändern ...". Dann wird nach dem alten und den neuen Kennwort gefragt. Als Meldung bekomme ich jedoch:

# Der Benutzername oder das Kennwort ist falsch. ...

Dies trifft definitiv nicht zu. Es scheint mir eher, dass die User nicht die Rechte haben, das Kennwort zu ändern. Im LDAP-Verzeichnis gibt es die Attribute pwdCanChange und pwdMustChange. Ich vermute, dass es mit denen zu tun hat. Doch welche Werte muss ich hier setzen?

MrIch
26.11.02, 13:36
vielleicht ist das Passwort auch zu kurz! Dann meldet NT nämlich den selben Fehler!

mykleines
26.11.02, 13:47
Original geschrieben von MrIch
vielleicht ist das Passwort auch zu kurz! Dann meldet NT nämlich den selben Fehler!

Ich habe es mit 10 Zeichen versucht. Ohne Erfolg.

mykleines
27.11.02, 11:30
Hallo,

ich weiß zwar nicht, ob es wirklich von Belang ist, wenn ich jetzt hier poste, wie ich mein Problem lösen konnte. Ich tue es dennoch.

Es lag allein an der smb.conf. Hier hatte ich auszugsweise folgende Einträge vorgenommen:

# unix password sync = yes
# passwd program = /usr/bin/passwd

Nach einer relativ langen Suche habe ich dann in Erfahrung bringen können, dass dieses Synchronisieren der Passwörter nicht ganz funktionieren solle. Also probierte ich folgende Einstellung:

# unix password sync = no

Damit ging dann schon mal ein Kennwort ändern. Trotz allem wollte ich, dass auch die Unix-Kennwörter mitgeändert werden. Als recherchierte ich weiter. Ich erfuhr also, dass das "passwd program" als root ausgeführt. Und dann wurde es mir langsam klar. Natürlich hat root nicht das angegebene Kennwort und damit könne dies auch nicht geändert werden. Ich musste also den User, für den das Kennwort geändert werden sollte, mit angeben. Damit lautet die jetzige Einstellung:

# unix password sync = yes
# passwd program = /usr/bin/passwd %u

Man hört sich. manu

mamue
27.11.02, 13:42
Das verstehe ich nicht so ganz.
/usr/bin/passwd ändert doch nicht den EIntrag im ldap, oder?
Wenn ich das händisch mache (bei mir sollen die user nicht selbst ändern können), dann brauche ich einmal ldappasswd für das Unix-passwort und smbpasswd (/usr/local/samba/bin/smbpasswd), für das Windows Passwort.
Geht das über den von Dir beschriebenen Weg einfacher?
Könntest Du diesbezüglich noch etwas ins Detail gehen?

Danke,
mamue

mykleines
27.11.02, 14:04
Hallo,


Original geschrieben von mamue
Das verstehe ich nicht so ganz.
/usr/bin/passwd ändert doch nicht den EIntrag im ldap, oder?
Wenn ich das händisch mache (bei mir sollen die user nicht selbst ändern können), dann brauche ich einmal ldappasswd für das Unix-passwort und smbpasswd (/usr/local/samba/bin/smbpasswd), für das Windows Passwort.
Geht das über den von Dir beschriebenen Weg einfacher?
Könntest Du diesbezüglich noch etwas ins Detail gehen?


Nein. /usr/bin/passwd ändert (glaube ich) nicht den Eintrag im LDAP. Aber Passwortänderungen scheinen vom Samba durchgeführt zu werden. Und wenn dieser seine Kennwörter ändert, hat das Auswirkungen auf LDAP. (Die genaue Zusammenarbeit kenne ich leider noch nicht. Bin auch noch neu auf diesem Gebiet.)

In meinen Versuchen liefen Passwortänderungen mit und ohne passwd erfolgreich ab. Nur, wenn die passwd aussen vor gehalten wird, hat die Passwortänderung keinen Einfluss auf den Unix-Account. Dieser sollte aber mit einbezogen werden.

Als ich die Kennwörter direkt am Samba-Server geändert hatte, reichte ein smbpasswd und die LDAP bemerkte dies und gab mir eine entsprechende Meldung aus, dass er seinen Eintrag entsprechend geändert habe. ...

Frage: Warum sollen deine User ihre Kennwörter nicht selbst ändern?

mykleines
27.11.02, 14:12
Hmmm.

Das scheint sich aber nur auf das Anlegen von Usern beziehen. Das habe ich am Anfang so gemacht:

# moon:~# useradd -g myusers dwarf
# moon:~# smbpasswd -a dwarf
# LDAP search ... returnes 0 entries.
# Added user dwarf

Doch wenn ich das Kennwort von dem Windows-Client aus ändere, hat dies wirklich Auswirkungen auf Samba, LDAP und den Unix-Account.

troje
09.01.04, 12:57
Original geschrieben von mykleines
Hallo,

ich weiß zwar nicht, ob es wirklich von Belang ist, wenn ich jetzt hier poste, wie ich mein Problem lösen konnte. Ich tue es dennoch.

Es lag allein an der smb.conf. Hier hatte ich auszugsweise folgende Einträge vorgenommen:

# unix password sync = yes
# passwd program = /usr/bin/passwd

Nach einer relativ langen Suche habe ich dann in Erfahrung bringen können, dass dieses Synchronisieren der Passwörter nicht ganz funktionieren solle. Also probierte ich folgende Einstellung:

# unix password sync = no

Damit ging dann schon mal ein Kennwort ändern. Trotz allem wollte ich, dass auch die Unix-Kennwörter mitgeändert werden. Als recherchierte ich weiter. Ich erfuhr also, dass das "passwd program" als root ausgeführt. Und dann wurde es mir langsam klar. Natürlich hat root nicht das angegebene Kennwort und damit könne dies auch nicht geändert werden. Ich musste also den User, für den das Kennwort geändert werden sollte, mit angeben. Damit lautet die jetzige Einstellung:

# unix password sync = yes
# passwd program = /usr/bin/passwd %u

Man hört sich. manu

Leider funktioniert das nicht mit ldap.
Den wenn ein nutzer unter Win sein kennwort ändert, wird das nicht in ldap übernomen, umgekehrt aber schon.


Weis einer einen Rat vielleicht?

mamue
10.01.04, 14:16
Es gibt ein posix-pass im ldap und einige NT-Passwörter. Letztere verwaltet samba. Um beide ändern zu können müsst man im passwd chat ein script einsetzen, welches per ldappasswd und smbpasswd beide Passwörter setzt.
Ausprobiert habe ich das nicht, "meine" user dürfen ihr Passwort nicht selber ändern.

mamue

troje
10.01.04, 15:52
Hast du vielleicht so ein script zu hand?`

p.s. Das ganze soll bei einen Firmenkunden laufen, und der will nun das seine Benutzer ihr kennwort ändern dürfen.

und da der Kunde dieses haben will, muss ich erstmal in der Testumgebung kucken, wie das funktionieren könnte.

Ich wäre dir auf jedenfall sehr danktbar!

mamue
10.01.04, 16:16
Im samba-howto wird so etwas AFAIK beschrieben. Ansonsten: So schwer ist es nicht, man kann es ja gefahrlos testen. Mach halt erst einmal ein script, welches beide Passörter ändert und setze das dann in den passwd chat ein. Irgendwo gibt es das aber sicher schon.

mamue

troje
10.01.04, 16:19
Hab gerade noch woanders gelesen, das es evtl. mit einen eintrag in der smb.conf gehen würde, nämlich "ldap passwd sync = yes".

kannst das bestätigen?

edit:

Hier der ganze text:




ldap passwd sync (G)
This option is used to define whether or not Samba should sync the LDAP password with the NT and LM hashes for normal accounts (NOT for workstation, server or domain trusts) on a password change via SAMBA.

The ldap passwd sync can be set to one of three values:

Yes = Try to update the LDAP, NT and LM passwords and update the pwdLastSet time.

No = Update NT and LM passwords and update the pwdLastSet time.

Only = Only update the LDAP password and let the LDAP server do the rest.

Default:

ldap passwd sync = no

mamue
10.01.04, 16:30
Probier's doch einfach aus und sag dann Bescheid ;)
Wie gesagt: Ich lasse die user nicht selbst die Passwörter ändern, mich betrifft so etwas daher auch nicht.

mamue

[WCM]Manx
11.01.04, 15:46
Hi!

Zur Info:
"ldap passwd sync = yes" funktioniert einwandfrei auf meiner Testkiste:

Auszug aus der smb.conf (Achtung Baustelle!)


[global]

min passwd length = 8

pid directory = /var/run/samba
server string = %h server (Samba %v)

log file = /var/log/samba/log.%m
max log size = 1000

unix charset = ISO-8859-15
display charset = ISO-8859-15
dos charset = 850

security = user
encrypt passwords = yes
netbios name = P166
workgroup = SAMBA-3
passdb backend = ldapsam

os level = 64
preferred master = yes
domain master = yes
local master = yes
domain logons = yes
profile acls = yes
logon path = \\%L\profiles\%U
client schannel = no
server schannel = no

ldap admin dn = cn=manager,dc=xxx,dc=homelinux,dc=org
ldap ssl = off
ldap suffix = dc=xxx,dc=homelinux,dc=org
ldap user suffix = ou=Benutzer
ldap group suffix = ou=Gruppen
ldap machine suffix = ou=Computer

ldap passwd sync = yes

load printers = yes
printing = cups
printcap name = cups

Manx

troje
12.01.04, 09:07
leider hat es nicht funktionert.

verwende übrigens hier samba 2.2.5

vielleicht liegt es daran.

Gibt es vielleicht noch andere möglichkeit?

edit:

hab hier ein sript der das auch machen sollte, leider ist da irgendwo der wurm drin, den es geht auch nicht:



#!/usr/bin/perl -w

$user=$ARGV[0];
print "New Password: ";
$pass=<STDIN>;
chomp $pass;

$salt=join '', ('.', '/', 0..9, 'A'..'Z', 'a'..'z')[rand 64, rand 64];

$pass=crypt($pass,$salt);

$FILE="|ldapmodify -x -D 'uid=cyrus,dc=intern,dc=test,dc=de' -w ";

open FILE or die;

print FILE <<EOF;
dn: uid=$user, ...ldap suffix...
changetype: modify
replace: userPassword
userPassword: {crypt}$pass

EOF
close FILE;

exit 0;


und hier noch meine smb.conf



# Global parameters
[global]
ldap ssl = no
character set = ISO8859-15
admin users = root administrator
socket options = SO_KEEPALIVE IPTOS_LOWDELAY TCP_NODELAY
logon drive = p:
create mask = 0664
map to guest = Bad User
username map = /etc/samba/smbusers
encrypt passwords = yes
time server = Yes
veto files = /*.eml/*.nws/riched20.dll/*.{*}/
passwd program = /ect/ldapsync%u
printer admin = @ntadmin
logon home = \\%L\%U
wins support = Yes
unix extensions = Yes
printing = cups
ldap port = 389
logon script = users.bat
ldap suffix = dc=test,dc=de
ldap del only sam attr = Yes
workgroup = INTERN.TEST.DE
logon path = \\%L\profiles\%U
os level = 255
directory mask = 0775
ldap admin dn = uid=cyrus,dc=test,dc=de
add user script = /usr/sbin/addsmbmachine2ldap %m
printcap name = CUPS
domain admin group = @ntadmin root
domain logons = Yes
# unix password sync = yes
passwd chat = *New*Password* %n\n *modifying*

[netlogon]
comment = Network Logon Service
path = /var/lib/samba/netlogon
browseable = No

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

troje
18.01.04, 10:55
Leider hab ich das noch immer nicht zum laufen gebracht.

Kennt keiner von euch irgendeine möglichkeit das Problem zu umgehen.

Script erfahrung hab ich leider noch nicht allzuviel, deshalb würde ich mich freuen wenn jemand mir da helfen konnte

Update auf Samba 3 muss ich dabei auschliesen, da mein Chef das noch für unstabil hält, um es auf einer Produktivien umgebung einzusetzen.

Bitte helft mir...:confused:

mamue
18.01.04, 11:24
Wenn ich mich nicht irre, ist es unnötig, das Passwort zu verschlüsseln. ldappasswd macht das bereits. Das brauchst Du nur für das Passwort des rootDN, das Du in slapd.conf einträgst.
samba2.2.5 ist aber ein bisschen sehr alt, 2.2.8a ist empfehlenswert. Andererseits war gerade der ldap Teil bei allen 2.2.X als Beta gekennzeichnet, das siehst Du, wenn Du Dir das configure --help bei den 2.2.X sourcen mal anschaust. Bei 3.0 gilt es als stabil. Es gibt etliche grosse sites, die 3.0 einsetzen, allerdings ist der Umstieg nicht ganz einfach. Noch ein Grund vielleicht, nicht jetzt mit 2.2 anzufangen...
Im howto stand doch ein Beispiel, dachte ich. Ich habe so etwas nie gemacht, aber der Ansatz sieht für mich etwas merkwürdig aus. Ich würde mir doch mal ein Beispiel suchen - das hat bestimmt schon jemand vor Dir versucht.

mamue

troje
18.01.04, 12:01
Ich hab so ziemlich alles durchprobiert was ich hier im Forum gefunden habe.

Die Samba 2.2.5 ist standard bestandteil des Suse Linux Standard Server 8.


Und dieser läuft bereits beim Kunden produktiv. Meine aufgabe ist es nun eine lösung (erstmal auf nen Testumgebung!) für diese konfiguration zu finden.


Wie schon in einen meiner vorherigen Postings zu finden ist habe ich versuche gemacht mit einen Script das problem zu beheben, was leider nicht geklappt hat.

Auch im Internet hab ich der letzen Woche viel gelesen und gesucht, alles leider vergebens. Und da ich zurzeit in der FA mein Praktikum als ITSE mache, will ich natürlich einen guten eindruck hinterlassen, den bei heutigen problemen auf dem Arbeitsmarkt wies ihr selber wie schwer es ist ein Job zu kriegen.