jga 10 Geschrieben 7. April 2011 Melden Teilen Geschrieben 7. April 2011 Hallo MCSE Team :-) ich habe im Forum gesucht und google belästigt aber keine Lösung auf mein Problem gefunden deswegen möchte ich mich vertrauensvoll an euch wenden :-) Wir haben ein Linux LDAP Server der in regelmäßigen abständen mit einem Active Directory sychronisiert. Es gibt ein Interface an denen User Ihre Passwörter ändern können, deshalb soll es im Active Directory verboten sein sein passwort zu ändern. Ich möchte den Hacken "Benutzer kann Kennwort nicht ändern" setzen, das aber über das userAccountControl Attribut nicht funktioniert. Gibt es eine möglichkeit das Global für alle User in einer Gruppe festzulegen? Wenn das global nicht funktioniert, wäre ich froh wenn es ohne ein vb script klappt, da ich alles andere (User,Pw,gruppenzugehörigkeit, usw.) auch von außerhalb über den MS LDAP einspiele. Diesen Foreneintrag habe ich gefunden, löst aber nicht das Problem: http://www.mcseboard.de/active-directory-forum-79/passwort-aendern-ausschalten-167175.html Ich danke euch jetzt schonmal für eure Mühe. Gruß jga Zitieren Link zu diesem Kommentar
Light 12 Geschrieben 8. April 2011 Melden Teilen Geschrieben 8. April 2011 Falls Du eine W2k8 Domäne hast, könntest Du versuchen es über fein abgestimmte Kennwortrichtlinien zu versuchen. Light Zitieren Link zu diesem Kommentar
jga 10 Geschrieben 12. April 2011 Autor Melden Teilen Geschrieben 12. April 2011 Ja wir verwenden Windows Server 2008 R2, die Domäne läuft allerdings im Windows Server 2003 Modus. :) Bitte entschuldigt das ich mich jetzt erst melde, ich hatte etwas ausprobiert und habe im Attribut-Editor direkt in der Hauptdomäne geändert und mich dann selbst ausgesperrt. :confused: Kannst du mir bitte näheres zu einer fein abgestimmten Kennwortrichtlinie sagen? Zitieren Link zu diesem Kommentar
Daim 12 Geschrieben 12. April 2011 Melden Teilen Geschrieben 12. April 2011 Servus, Kannst du mir bitte näheres zu einer fein abgestimmten Kennwortrichtlinie sagen? LDAP://Yusufs.Directory.Blog/ - Password Setting Objects erstellen und verwalten LDAP://Yusufs.Directory.Blog/ - Hinweise zu PSOs Zitieren Link zu diesem Kommentar
jga 10 Geschrieben 15. April 2011 Autor Melden Teilen Geschrieben 15. April 2011 Danke für die Hilfe. Das hilft mir schonmal sehr weiter um PSO für bestimmte gruppen festzulegen. Jedoch gibt es dort kein Attribut das für alle User einer Gruppe das ändern der Passwörter verbietet. Zitieren Link zu diesem Kommentar
jga 10 Geschrieben 18. April 2011 Autor Melden Teilen Geschrieben 18. April 2011 hat niemand eine idee wie man das fest einstellen kann? Zitieren Link zu diesem Kommentar
P.Foeckeler 11 Geschrieben 20. April 2011 Melden Teilen Geschrieben 20. April 2011 Schau mal den Tutorial-Artikel in SelfADSI über deas userAccountControl-Attribut an: Das Häckchen "Kann Passwort nicht ändern" kann nur über die Berechtigung geändert werden. SelfADSI : Attribute für AD User - userAccountControl Gruß, Philipp Zitieren Link zu diesem Kommentar
jga 10 Geschrieben 25. Mai 2011 Autor Melden Teilen Geschrieben 25. Mai 2011 Hi ihr, ich brauche nochmal eure Hilfe. und zwar möchte ich das ganze jetzt mit der PowerShell lösen. Nur meine PowerShell kennt den Befehl Add-ADPermission nicht. Habe dazu gelesen, das ich irgenwas mit exchange installieren muss das in powershell das modul integriert wird. Was aber ****sinn ist da ich weder ein Exchange betreibe noch die Exchange Mangement tools installieren möchte. Hätte ich dieses Modul, könnte ich einfach mit dem Befehl das gewünschte ausführen. Add-ADPermission -Account SELF,Everyone -ExtendedRight "User-Change-Password" -Deny -ApplyTo ThisObjectOnly Als weitere Möglichkeit würde ich dann gerne die DSACLS Befehle ausführen, was aber aus der PowerShell herraus nicht funktioniert. Gibt es eine Möglichkeit den Befehl aus der PowerShell auszuführen? DSACLS "cn=PhilippFoeckeler,dc=selfadsi,dc=org" /D Everyone:CA;"Change Password" DSACLS "cn=PhilippFoeckeler,dc=selfadsi,dc=org" /D SELF:CA;"Change Password" Ich hoffe ihr könnt mir helfen. Gruß jga Zitieren Link zu diesem Kommentar
P.Foeckeler 11 Geschrieben 26. Mai 2011 Melden Teilen Geschrieben 26. Mai 2011 Hallo, warum klappt denn der Aufruf des externen DSACL-Kommandos bei Dir aus der Powershell heraus nicht? Kannst du direkt auf der Kommandozeile heraus die Rechte ändern? Welche Fehlermeldung kommt da? Außerdem hätte ich hier eine Alternative, wie du in VBSCript die Berechtigung ändern kannst: Const ADS_SD_CONTROL_SE_OWNER_DEFAULTED = &H1 Const ADS_SD_CONTROL_SE_GROUP_DEFAULTED = &H2 Const ADS_SD_CONTROL_SE_DACL_PRESENT = &H4 Const ADS_SD_CONTROL_SE_SACL_PRESENT = &H10 Const ADS_SD_CONTROL_SE_SACL_DEFAULTED = &H20 Const ADS_SD_REVISION_DS = 4 Const ADS_ACETYPE_ACCESS_ALLOWED = &H0 Const ADS_ACETYPE_ACCESS_DENIED = &H1 Const ADS_ACETYPE_ACCESS_ALLOWED_OBJECT = &H5 Const ADS_ACETYPE_ACCESS_DENIED_OBJECT = &H6 Const ADS_FLAG_OBJECT_TYPE_PRESENT = &H1 Const ADS_FLAG_INHERITED_OBJECT_TYPE_PRESENT = &H2 Const ADS_ACEFLAG_CONTAINER_INHERIT_ACE = &H2 Const ADS_ACEFLAG_INHERITED_ACE = &H10 Const ADS_RIGHT_DS_CONTROL_ACCESS = &H100 Const USER_CHANGE_PASSWORD = "{AB721A53-1E2F-11D0-9819-00AA0040529B}" Const WKSID_SELF_SDDL = "S-1-5-10" Const WKSID_SELF = "NT AUTHORITY\SELF" Const WKSID_EVERYONE_SDDL = "S-1-1-0" Const WKSID_EVERYONE = "EVERYONE" '__________________________________________________________________________________________________ 'get existing user permission data Set dso = GetObject("LDAP:") Set user = dso.OpenDSObject("LDAP://yourserver/CN=test,OU=test,DC=EXAMPLE,DC=COM", "EXAMPLE\administrator", "Pa$$w0rd", 1) Set userACL = user.get("nTSecurityDescriptor") Set userDACL = userACL.DiscretionaryAcl WScript.Echo user.distinguishedname & vbCrLf 'prepare new DACL to write for this user Set newDAcl = CreateObject("AccessControlList") newDAcl.AclRevision = ADS_SD_REVISION_DS newDAcl.AceCount = 0 'check all existing dacl entries... Set userAce = CreateObject("AccessControlEntry") For Each userAce In userDACL 'Debug: Output DACL entries 'WScript.Echo userAce.Trustee & ", " & userAce.AccessMask & ", " & userAce.AceType & ", " & userAce.AceFlags & ", " & userAce.Flags & ", " & userAce.ObjectType & ", " & userAce.InheritedObjectType 'build a new DACL with all the entries which are NOT related to "Change Password" (for Self / EveryOne) If Not ((UCase(CStr(userAce.ObjectType)) = USER_CHANGE_PASSWORD) And ((UCase(CStr(userAce.Trustee)) = WKSID_SELF) Or ((UCase(CStr(userAce.Trustee)) = WKSID_EVERYONE)))) Then 'only entries which are NOT inherited If ((userAce.AceFlags And ADS_ACEFLAG_INHERITED_ACE) = 0) Then newDAcl.AddAce userAce End If End If Next 'create new entry => deny "Change Password" for Everyone Set newAce = CreateObject("AccessControlEntry") newAce.Trustee = WKSID_EVERYONE newAce.AccessMask = ADS_RIGHT_DS_CONTROL_ACCESS newAce.AceFlags = 0 newAce.AceType = ADS_ACETYPE_ACCESS_DENIED_OBJECT newAce.Flags = ADS_FLAG_OBJECT_TYPE_PRESENT newAce.ObjectType = USER_CHANGE_PASSWORD newDAcl.AddAce newAce 'build new ACL to write for this user Set newAcl = CreateObject("SecurityDescriptor") newAcl.OwnerDefaulted = True newAcl.GroupDefaulted = True newAcl.SaclDefaulted = True newAcl.DaclDefaulted = False newAcl.Revision = 1 newAcl.Control = ADS_SD_CONTROL_SE_DACL_PRESENT Or ADS_SD_CONTROL_SE_SACL_PRESENT Or ADS_SD_CONTROL_SE_SACL_DEFAULTED Or ADS_SD_CONTROL_SE_OWNER_DEFAULTED Or ADS_SD_CONTROL_SE_GROUP_DEFAULTED newAcl.DiscretionaryAcl = newDAcl 'write the ACL back to the user: user.Put "ntSecurityDescriptor", newAcl user.SetInfo Sieht komplizierter aus als es ist :) Gruß, Philipp Zitieren Link zu diesem Kommentar
jga 10 Geschrieben 27. Mai 2011 Autor Melden Teilen Geschrieben 27. Mai 2011 danke für den code. funktioniert :D Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.