lefg 276 Geschrieben 18. Mai 2008 Melden Teilen Geschrieben 18. Mai 2008 sofern vererbbar, über alle untergeordneten Objekte verbreiten. Hallo Gemeinde, dieser Haken ist in den Computerkonten (die in OUs) nicht gesetzt, deshalb werden die Sicherheitseinstellungen der OUs nicht übernommen. Ich finde keine Möglichkeit, den Haken für alle Konten in einem Rutsch zu setzen im Snap-In und das auch für künftige hinzukommende Konten zu fixieren. Hat bitte jemand einen Tipp für mich? Habt Dank für Aufmerksamkeit und Rat. Edgar Zitieren Link zu diesem Kommentar
olc 18 Geschrieben 18. Mai 2008 Melden Teilen Geschrieben 18. Mai 2008 Hi Edgar, vielleicht hilft Dir der folgende Link weiter? Jorge 's Quest For Knowledge! : Script to set/clear INHERITANCE flag on AD objects Als Grundlage kannst Du auch das folgende AdminSDHolder VBScript verwenden. "Einfach" die Objekttypen ändern und die Bedingung "Admincount=1" entfernen etc.: Delegated permissions are not available and inheritance is automatically disabled Vorher testen. :p Viele Grüße olc Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 18. Mai 2008 Autor Melden Teilen Geschrieben 18. Mai 2008 Hallo olc, dank für die Tipps. Ich muss mal schauen, ob mich das weiterbringt. :confused: Damit bekomme ich tatsächlich den Haken gesetzt, leider muss ich da jedes Objekt einzeln behandeln. Da kann ich das auch händisch machen. ' ========= VBScript program =========== ' VBScript program to toggle "allow inheritable permissions from ' parent to propagate to this object" on the Security tab of the object. Option Explicit Const SE_DACL_PROTECTED = &H1000 Dim objADObject, objNtSecurityDescriptor, intNtSecurityDescriptorControl ' Distinguished Name of user object hard coded. Set objADObject = GetObject("LDAP://cn=[b]R411-PC01,ou=R411,ou=rooms,dc=1Lubeca,dc=loc[/b]") ' Retreive security descriptor object for this object. Set objNtSecurityDescriptor = objADObject.Get("ntSecurityDescriptor") ' Retrieve control settings. intNtSecurityDescriptorControl = objNtSecurityDescriptor.Control ' Toggle the bit for "allow inheritable permissions". intNtSecurityDescriptorControl = intNtSecurityDescriptorControl Xor SE_DACL_PROTECTED ' Save control settings in the security descriptor object. objNtSecurityDescriptor.Control = intNtSecurityDescriptorControl ' Save the security descriptor object. objADObject.Put "ntSecurityDescriptor", objNtSecurityDescriptor ' Update the user object. objADObject.SetInfo Wscript.Echo "Done" ' ========= VBScript program =========== Ich werde mir mal die anderen Sachen anschauen. Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 18. Mai 2008 Autor Melden Teilen Geschrieben 18. Mai 2008 Bei diesem Skript sehe ich leider nicht, wo ich da etwas anpassen kann. '******************************************************************** '* '* File: ResetAccountsadminSDHolder.vbs '* Created: November 2003 '* Version: 1.0 '* '* Main Function: Resets all accounts that have adminCount = 1 back '* to 0 and enables the inheritance flag '* '* ResetAccountsadminSDHolder.vbs '* '* Copyright (C) 2003 Microsoft Corporation '* '******************************************************************** Const SE_DACL_PROTECTED = 4096 On Error Resume Next Dim sDomain Dim sADsPath Dim sPDC Dim oCon Dim oCmd Dim oRst Set oRst = CreateObject("ADODB.Recordset") Set oCmd = CreateObject("ADODB.Command") Set oCon = CreateObject("ADODB.Connection") Dim oRoot Dim oDomain Dim oADInfo Dim oInfo Set oADInfo = CreateObject("ADSystemInfo") Set oInfo = CreateObject("WinNTSystemInfo") sPDC = oInfo.PDC & "." & oADInfo.DomainDNSName oCon.Provider = "ADSDSOObject" oCon.Open "Active Directory Provider" oCmd.ActiveConnection = oCon Set oRoot = GetObject("LDAP://rootDSE") sDomain = oRoot.Get("defaultNamingContext") Set oDomain = GetObject("LDAP://" & sDomain) sADsPath = "<" & oDomain.ADsPath & ">" oCmd.CommandText = "SELECT ADsPath FROM 'LDAP://" & sPDC & "/" & sDomain & "' WHERE objectCategory='person' and objectClass = 'user' AND adminCount = 1" Set oRst = oCmd.Execute WScript.Echo "searching for objects with 'admin count = 1' in " & sDomain If oRst.RecordCount = 0 Then WScript.Echo "no accounts found" WScript.Quit End If Do While Not oRst.EOF WScript.Echo "found object " & oRst.Fields("ADsPath") If SetInheritanceFlag(oRst.Fields("ADsPath")) = 0 Then WScript.Echo "Inheritance flag set" If SetAdminCount(oRst.Fields("ADsPath"), 0) = 0 Then WScript.Echo "adminCount set to 0" WScript.Echo "==========================================" oRst.MoveNext Loop Private Function SetInheritanceFlag(DSObjectPath) Dim oSD Dim oDACL Dim lFlag Dim oIADs Set oIADs = GetObject(DSObjectPath) Set oSD = oIADs.Get("nTSecurityDescriptor") If oSD.Control And SE_DACL_PROTECTED Then oSD.Control = oSD.Control - SE_DACL_PROTECTED End If oIADs.Put "nTSecurityDescriptor", oSD oIADs.SetInfo If Err.Number <> 0 Then SetInheritanceFlag = Err.Number Else SetInheritanceFlag = 0 End If End Function Private Function SetAdminCount(DSObjectPath, AdminCount) Dim oIADs Dim iAdminCount Set oIADs = GetObject(DSObjectPath) iAdminCount = oIADs.Get("adminCount") If iAdminCount = 1 Then iAdminCount = 0 oIADs.Put "adminCount", iAdminCount oIADs.SetInfo If Err.Number <> 0 Then SetAdminCount = Err.Number Else SetAdminCount = 0 End If End Function Zitieren Link zu diesem Kommentar
olc 18 Geschrieben 18. Mai 2008 Melden Teilen Geschrieben 18. Mai 2008 Hi Edgar, versuche es einmal in der Art (ungetestet): '******************************************************************** '* '* File: ResetAccountsadminSDHolder.vbs '* Created: November 2003 '* Version: 1.0 '* '* Main Function: Resets all accounts that have adminCount = 1 back '* to 0 and enables the inheritance flag '* '* ResetAccountsadminSDHolder.vbs '* '* Copyright (C) 2003 Microsoft Corporation '* '******************************************************************** Const SE_DACL_PROTECTED = 4096 On Error Resume Next Dim sDomain Dim sADsPath Dim sPDC Dim oCon Dim oCmd Dim oRst Set oRst = CreateObject("ADODB.Recordset") Set oCmd = CreateObject("ADODB.Command") Set oCon = CreateObject("ADODB.Connection") Dim oRoot Dim oDomain Dim oADInfo Dim oInfo Set oADInfo = CreateObject("ADSystemInfo") Set oInfo = CreateObject("WinNTSystemInfo") sPDC = oInfo.PDC & "." & oADInfo.DomainDNSName oCon.Provider = "ADSDSOObject" oCon.Open "Active Directory Provider" oCmd.ActiveConnection = oCon Set oRoot = GetObject("LDAP://rootDSE") sDomain = oRoot.Get("defaultNamingContext") Set oDomain = GetObject("LDAP://" & sDomain) sADsPath = "<" & oDomain.ADsPath & ">" [b][color="Red"]oCmd.CommandText = "SELECT ADsPath FROM 'LDAP://" & sPDC & "/" & sDomain & "' WHERE objectCategory='computer' and objectClass = 'computer'" [/color][/b]Set oRst = oCmd.Execute [b][color="Red"]WScript.Echo "searching for computer objects in " & sDomain[/color][/b] If oRst.RecordCount = 0 Then WScript.Echo "no accounts found" WScript.Quit End If Do While Not oRst.EOF WScript.Echo "found object " & oRst.Fields("ADsPath") If SetInheritanceFlag(oRst.Fields("ADsPath")) = 0 Then WScript.Echo "Inheritance flag set" [b][color="Red"]'* entfernt If SetAdminCount(oRst.Fields("ADsPath"), 0) = 0 Then WScript.Echo "adminCount set to 0"[/color][/b] WScript.Echo "==========================================" oRst.MoveNext Loop Private Function SetInheritanceFlag(DSObjectPath) Dim oSD Dim oDACL Dim lFlag Dim oIADs Set oIADs = GetObject(DSObjectPath) Set oSD = oIADs.Get("nTSecurityDescriptor") If oSD.Control And SE_DACL_PROTECTED Then oSD.Control = oSD.Control - SE_DACL_PROTECTED End If oIADs.Put "nTSecurityDescriptor", oSD oIADs.SetInfo If Err.Number <> 0 Then SetInheritanceFlag = Err.Number Else SetInheritanceFlag = 0 End If End Function [b][color="Red"]'* entfernt Private Function SetAdminCount(DSObjectPath, AdminCount) '* '* Dim oIADs '* Dim iAdminCount '* '* Set oIADs = GetObject(DSObjectPath) '* '* iAdminCount = oIADs.Get("adminCount") '* '* If iAdminCount = 1 Then iAdminCount = 0 '* '* oIADs.Put "adminCount", iAdminCount '* oIADs.SetInfo '* If Err.Number <> 0 Then '* SetAdminCount = Err.Number '* Else '* SetAdminCount = 0 '* End If '* End Function [/color][/b] Das sollte bei allen in der Domäne vorhandenen Computer Objekten das "Inheritance Flag" setzen. Viele Grüße olc Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 18. Mai 2008 Autor Melden Teilen Geschrieben 18. Mai 2008 Entdeckt hatte ich die Sätze auch schon, war noch am Rätseln mit person und user. Ich werde das gleich mal testen, sonst habe ich nachher daheim keine Ruhe beim Fernsehen und im Bett. ;) Zitieren Link zu diesem Kommentar
olc 18 Geschrieben 18. Mai 2008 Melden Teilen Geschrieben 18. Mai 2008 ...na mal schauen ob es gut funktioniert. Ich kenne diese Ruhelosigkeit. ;) Die Frage ist, warum die Vererbung deaktiviert war? Meines Wissens sollte diese standardmäßig aktiviert sein. Wurde da manuell etwas geändert? Unter Umständen ist dieses Verhalten ja gewünscht? Viele Grüße olc Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 18. Mai 2008 Autor Melden Teilen Geschrieben 18. Mai 2008 Ich danke für die Hilfe, es hat wunderbar funktioniert. Nun habe ich meine Ruhe für heute Abend, werde noch ein wenig puzzln. Einen schönen Abend wünsche ich noch. Gruß Edgar Zitieren Link zu diesem Kommentar
berginet 10 Geschrieben 18. Juni 2008 Melden Teilen Geschrieben 18. Juni 2008 Hallo, ich muss für unzählige eigenständige Server ein Prüfscript bauen und u.a. Verzeichnisse prüfen ob der Haken bei "allow inheritable permissions......" "übergeordnete Berechtigungen...." unter der erweitert Lasche der Sicherheitsoptionen deaktiviert ist. Ich finde unzählige Sachen zu AD Objekten oder aber wie man die Berechtigung setzt ich muss sie aber lediglich auslesen. Bin noch frisch im VBS und gerade die SecurityDescriptor Sachen sind ziemlich verwirrend. Wäre Euch echt dankbar für Hilfe. lg Bergi Zitieren Link zu diesem Kommentar
IThome 10 Geschrieben 18. Juni 2008 Melden Teilen Geschrieben 18. Juni 2008 Es wäre schön, wenn Du einen eigenen Thread erstellen und keinen anderen übernehmen würdest, bei dem der letzte Post einen Monat zurück liegt ... Zitieren Link zu diesem Kommentar
berginet 10 Geschrieben 18. Juni 2008 Melden Teilen Geschrieben 18. Juni 2008 Es wäre schön, wenn Du einen eigenen Thread erstellen und keinen anderen übernehmen würdest, bei dem der letzte Post einen Monat zurück liegt ... Aber das Script ist fast genau das was ich suche nur für Folder und nicht für AD Objects.... mfg Zitieren Link zu diesem Kommentar
IThome 10 Geschrieben 19. Juni 2008 Melden Teilen Geschrieben 19. Juni 2008 Ja, FAST genauso. Erstelle einen neuen Thread, eventuell mit einem Verweis auf diesen ... Zitieren Link zu diesem Kommentar
berginet 10 Geschrieben 19. Juni 2008 Melden Teilen Geschrieben 19. Juni 2008 Ja, FAST genauso. Erstelle einen neuen Thread, eventuell mit einem Verweis auf diesen ... Mei o mei ich komm mir fast vor wie Hr. Löw und die seltsamen UEFA Entscheidungen. Ok ich mach einen neuen Thread auf, sehe zwar keinen Sinn denn ich will genau die Personen aus diesem Thread ansprechen da diese sich auch damit auskennen aber ok.... bergi Zitieren Link zu diesem Kommentar
IThome 10 Geschrieben 19. Juni 2008 Melden Teilen Geschrieben 19. Juni 2008 Der Sinn ist einfach, dass in einem Thema nicht mehrere Anfragen vermischt werden. Der TO fragt nach Berechtigungen bzw. Vererbungen für Computerobjekte im Active Directory, Du fragst nach NTFS-Berechtigungen, was ja etwas vollkommen Verschiedenes ist. Der nächste, der sowas sucht, wird wahrscheinlich eher fündig, wenn man es auseinander hält ... Im Übrigen hast Du die Regeln anerkannt, als Du hier einen Account erstellt hast. Diese Regeln sind ja nicht erstellt worden, um Euch zu ärgern ... Also beim nächsten Mal bitte gleich so ... :) 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.