Jump to content

InheritanceFlag (Powershell)?


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo,

 

ich bastel gerade an einem Script zum anlegen der Ordnerstruktur für unserer Server.

Mit dem Script möchte ich nun auch die Berechtigungen für die angelegten Verzeichnisse auf dem Server setzen. Dazu hab ich im Intenet etwas gesucht und ein Beispiel Script gefunden was das für mich macht. Ich habe das Script etwas auf meine Bedürfnisse angepasst und sieht nun wie folgt aus:

 

function FunSetACL {

param([string]$DirectoryPath, [string]$IdentityRef, [string]$Right)

 Write-Host "Directory:   $DirectoryPath"
 Write-Host "IdentityRef: $IdentityRef"
 Write-Host "Rights:      $Right"



 if (Test-Path -path $DirectoryPath) {

   switch ($Right) {
 		list {$FileSystemRights = [system.Security.AccessControl.FileSystemRights]"ListDirectory, ReadAttributes, ReadExtendedAttributes, ReadPermissions, Traverse"}
 		read {$FileSystemRights = [system.Security.AccessControl.FileSystemRights]"read"}
 		write {$FileSystemRights = [system.Security.AccessControl.FileSystemRights]"write"}
 		change {$FileSystemRights = [system.Security.AccessControl.FileSystemRights]"change"}
 		chmod {$FileSystemRights = [system.Security.AccessControl.FileSystemRights]"ListDirectory, ReadAttributes, ReadExtendedAttributes, ReadPermissions, Traverse"}
 		full {$FileSystemRights = [system.Security.AccessControl.FileSystemRights]"FullControl"}
  }


   $InheritanceFlag1 = [system.Security.AccessControl.InheritanceFlags]::ObjectInherit
   $InheritanceFlag2 = [system.Security.AccessControl.InheritanceFlags]::ContainerInherit
   $InheritanceFlag=$InheritanceFlag1 -bor $InheritanceFlag2

   # http://msdn.microsoft.com/de-de/library/system.security.accesscontrol.propagationflags
   # None               - Gibt an, dass keine Vererbungsflags festgelegt sind.
 	# NoPropagateInherit - Gibt an, dass der ACE nicht an untergeordnete Objekte weitergegeben wird.
 	# InheritOnly        - Gibt an, dass der ACE nur an untergeordnete Objekte weitergegeben wird. Dies schließt untergeordnete Container- und Endobjekte ein. 
   $PropagationFlag = [system.Security.AccessControl.PropagationFlags]::InheritOnly

   $AccessControlType =[system.Security.AccessControl.AccessControlType]::Allow
   $User = New-Object System.Security.Principal.NTAccount($IdentityRef)

   $ACE = New-Object System.Security.AccessControl.FileSystemAccessRule($User, $FileSystemRights, $InheritanceFlag, $PropagationFlag, $AccessControlType)
   $ACL = Get-ACL $DirectoryPath
   $ACL.AddAccessRule($ACE)

   Set-ACL $DirectoryPath $ACL
 } else {
 	Write-Host "Folder existiert nicht"
 }
}

FunSetACL "C:\temp\srv2k3test\dat\pub" "Domain\Peter.Pan" "full"

 

Eigentlich funktioniert das Script soweit schon ganz gut. Ich habe nur Schwierigkeiten mit dem InheritanceFlags.

Wenn das Script abläuft werden die von mir gewünschten Rechte gesetzt aber nur für "Unterordner und Dateien". Ich möchte die Rechte aber für "Diesen Ordner, Unterordner und Dateien" setzen. Ich verstehe einfach nicht wie ich die Flags kombinieren soll damit das dabei raus kommt.

 

Kann mir da jemand einen Tip geben?

 

Gruß

 

AS

Link zu diesem Kommentar

Hallo astalbold,

 

zu aller erst würde ich Dir empfehlen mit dem NTFSSecurity Modul aus dem Script Center von Mircosoft zu arbeiten. Das macht das Leben viel leichter.

Das Modul findest du hier (v1.3)

 

Mit deinem Script hast du keine "saubere" Berechtigung, sondern du berechtigst einzeln.

 

Hier ein Beispiel wie einfach das mit dem Modul geht:

$path = "C:\temp\srv2k3test\dat\pub"
$acc = "Domain\Peter.Pan"
Get-Item $path | Add-Ace -Account $acc -AccessRights FullControl -InheritanceFlags ContainerInherit,ObjectInherit -AccessType Allow

Link zu diesem Kommentar

Hallo ducke,

 

danke für den Tipp. Ich muss mal schauen ob ich das Modul eingebunden bekomme an der Stelle wo das Script laufen soll. Werde das diese Woche testen.

 

Aber nach den ersten Blicken auf das Modul, besteht dort mein Problem mit den InheritanceFlag weiterhin. In deinem Beispiel kombinierst du InheritanceFlags (ContainerInherit,ObjectInherit) genauso wie ich in einem Script. Demnach dürften die Rechte doch auch nur für "Unterordner und Dateien" gesetzt werden.

Da stehe ich wieder vor dem Problem wie ich die Flags kombinieren muss das sie für "Diesen Ordner, Unterordner und Dateien" gilt? Oder versteh ich das alles falsch... :D

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...