Active Directory: NTFS Berechtigungen per Powershell vergeben

Vieles lässt sich mit der Powershell einfacher gestalten oder scripten. Wer oft neue Ordner oder Freigaben anlegen muss, kann per Powershell den Ordner anlegen, die entsprechenden Gruppen für den Zugriff erstellen und auch gleich die Gruppen zu den NTFS Berechtigungen hinzufügen.

Hier ein kleines Beispiel:

# Dieses Script erstellt einen Ordner im angegebenen Pfad, erstellt 3 Domänen Lokale
# Gruppen (Vollzugriff, Aendern, Lesen) und vergibt die entsprechenden Berechtigungen
# an den neu erstellten Ordner
# Written by Frank Zoechling
write-host „Name des neuen Ordners angeben“
write-host „“
write-host „Beispiel:“
write-host “ -wird nur ein Name angegeben wird der Ordner im aktuellen Pfad erstellt“
write-host “ -Wird ein Pfad angegeben (d:\test\daten\) wird ein neuer Ordner „Daten“ unter d:\Test“
write-host “ erstellt“
write-host „“
$path = read-host „Pfad“
md $path
$GNlesen = „dl_“+$path+“_LE“
$GNvollzugriff = „dl_“+$path+“_VZ“
$GNaendern = „dl_“+$path+“_AE“
new-adgroup $GNlesen -groupscope 0 -Description „Leserechte auf $path“
new-adgroup $GNvollzugriff -groupscope 0 -Description „Vollzugriff auf $path“
new-adgroup $GNaendern -groupscope 0 -Description „Aendernrechte auf $path“
$aclLE = get-acl $path
$arLE = new-object system.security.accesscontrol.filesystemaccessrule(„$GNlesen“,“ReadandExecute“,“Allow“)
$aclLE.SetAccessRule($arLE)
set-acl $path $aclLE
$aclVZ = get-acl $path
$arVZ = new-object system.security.accesscontrol.filesystemaccessrule(„$GNVollzugriff“,“FullControl“,“Allow“)
$aclVZ.SetAccessRule($arVZ)
set-acl $path $aclVZ
$aclAE = get-acl $path
$arAE = new-object system.security.accesscontrol.filesystemaccessrule(„$GNaendern“,“Modify“,“Allow“)
$aclAE.SetAccessRule($arAE)
set-acl $path $aclAE

Den Text oben kann man nun einfach in eine Powershell Script Datei kopieren, zum Beispiel „create-folder.ps1“.

Das Script macht dann folgendes, es legt den angegebenen Ordner an und erstellt 3 Domänen lokale Gruppen im Active Directory (Lesen, Ändern, Vollzugriff). Dann werden diese 3 Gruppen an die ACL des Ordners mit den entsprechenden Berechtigungen gehangen.

Das Script lässt sich natürlich weiter anpassen und soll nur als Beispiel dienen.

Bevor man Powershell Scripte ausführen kann muss man noch folgenden Befehl auf der Powershell ausführen:

set-executionpolicy remotesigned

Hier findet man weitere Informationen und Berechtigungen und der Powershell:

http://blogs.technet.com/b/josebda/archive/2010/11/12/how-to-handle-ntfs-folder-permissions-security-descriptors-and-acls-in-powershell.aspx

3 Gedanken zu „Active Directory: NTFS Berechtigungen per Powershell vergeben“

  1. mal ein bisschen angepasst bzgl anzeigen der berechtigungen und des richtigen pfads

    [code]
    $path = read-host "Pfad"
    md $path

    $folder = read-host "Ordner"
    md $path"\"$folder
    $GNlesen = "fileserver_"+$folder+"_LE"
    $GNvollzugriff = "fileserver_"+$folder+"_VZ"
    $GNaendern = "fileserver_"+$folder+"_AE"

    New-ADGroup –Name "$GNlesen" –groupscope Global -Description "Leserechte auf $folder" –path "OU=FILESERVER_GROUPS,OU=test,DC=ad,DC=test,DC=org"
    New-ADGroup –Name "$GNvollzugriff" –groupscope Global -Description "Vollzugriff auf $folder" –path "OU=FILESERVER_GROUPS,OU=test,DC=ad,DC=test,DC=org"
    New-ADGroup –Name "$GNaendern" –groupscope Global -Description "Aendernrechte auf $folder" –path "OU=FILESERVER_GROUPS,OU=test,DC=ad,DC=test,DC=org"
    $aclLE = get-acl $path"\"$folder
    $arLE = new-object system.security.accesscontrol.filesystemaccessrule("$GNlesen","ReadandExecute","ContainerInherit,ObjectInherit", "None", "Allow")
    $aclLE.SetAccessRule($arLE)
    set-acl $path"\"$folder $aclLE
    $aclVZ = get-acl $path"\"$folder
    $arVZ = new-object system.security.accesscontrol.filesystemaccessrule("$GNVollzugriff", "FullControl","ContainerInherit,ObjectInherit", "None", "Allow")
    $aclVZ.SetAccessRule($arVZ)
    set-acl $path"\"$folder $aclVZ
    $aclAE = get-acl $path"\"$folder
    $arAE = new-object system.security.accesscontrol.filesystemaccessrule("$GNaendern","Modify","ContainerInherit,ObjectInherit", "None", "Allow")
    $aclAE.SetAccessRule($arAE)
    set-acl $path"\"$folder $aclAE
    /code]

    Antworten
  2. Wie müsste das Script angepasst werden das ich nur auf den Ordner selbst bei der Gruppe „Ändern“ eine „löschen verweigert“ setzen kann?
    Danke im Voraus für den Tip.

    Antworten
  3. Hi,

    schönes Skript. Genau sowas habe ich gesucht. Weißt du vielleicht auch noch den Schalter den ich setzen muss um die Berechtigungen welche ich gesetzt habe auch direkt zu sehen unter Security? so sehe ich momentan nur die Rechte unter den Special permissions.

    Danke schonmal im Voraus

    VG
    Thomas

    Antworten

Schreibe einen Kommentar