Frage Halbe! Ich habe einen Albtraum mit Berechtigungen für umgeleitete Ordner / Home-Verzeichnisse geerbt


Mein neuer Arbeitgeber hat eine Ordnerumleitung für Hunderte von Benutzern eingerichtet, und die Person, die ihn eingerichtet hat, wusste nicht wirklich, was er tat. Als Ergebnis, die Best Practices für Berechtigungen für umgeleitete Ordner / Home-Verzeichnisse wurde nicht befolgt.

Es sollte stattdessen die Lösung angewendet werden, die Personen den Zugriff auf ihre umgeleiteten Ordnerspeicherorte zulässt Full Control Berechtigungen (NTFS-Berechtigungen, nicht "Freigabe" Berechtigungen natürlich) zu Everyone im Stammverzeichnis ("Home") und propagieren das bis zu allen Unterordnern und Dateien unterhalb des Stammverzeichnisses.

Was könnte möglicherweise schief gehen, oder? Es ist nicht so, als hätte der CEO vertrauliche Informationen in seinem My Documents Ordner, oder jemand wird mit CryptoWall infiziert werden und alle anderen Dateien verschlüsseln. Recht?

Jetzt, da die CryptoWall-Infektion entfernt wurde und Backups wiederhergestellt wurden, möchten einige Leute, dass wir die aktuellen Berechtigungen durch etwas weniger Schreckliches ersetzen, und ich möchte nicht in mehreren der Berechtigungsdialoge herumklicken müssen hundert Ordner.

Wie kann PowerShell dieses Problem für mich lösen und das Leben wieder lebenswert machen?


22
2017-10-07 20:32


Ursprung




Antworten:


Danke an JScott für mich auf die System.Security.Principal... Klasse oder Methode oder was auch immer es ist, einige PowerShell, um die ACLs in einer Reihe von Unterordnern durch diejenigen zu ersetzen, die für Benutzerverzeichnisse geeignet sind:

$Root = "Path to the root folder that holds all the user home directories"

$Paths = Get-ChildItem $Root | Select-Object -Property Name,FullName

$DAAR = New-Object system.security.accesscontrol.filesystemaccessrule("MyDomain\Domain Admins","FullControl","ContainerInherit, ObjectInherit","None","Allow")
#Domain Admin Access Rule.

$SysAR = New-Object system.security.accesscontrol.filesystemaccessrule("SYSTEM","FullControl","ContainerInherit, ObjectInherit","None","Allow")
#SYSTEM Access Rule.

foreach ($Folder in $Paths)
{

    Write-Host "Generating ACL for $($folder.FullName) ... "
    #For error handling purposes - not all folders will map to a user of the exact same name, this makes them easier to handle when viewing the output.

    $ACL = New-Object System.Security.AccessControl.DirectorySecurity
    #Creates a blank ACL object to add access rules into, also blanks out the ACL for each iteration of the loop.

    $objUser = New-Object System.Security.Principal.NTAccount("MyDomain\​"+$folder.name)
    #Creating the right type of User Object to feed into our ACL, and populating it with the user whose folder we're currently on.

    $UserAR = New-Object system.security.accesscontrol.filesystemaccessrule( $objuser ,"FullControl","ContainerInherit, ObjectInherit","None","Allow")
    #Access Rule for the user whose folder we're dealing with during this iteration.

    $acl.SetOwner($objUser)
    $acl.SetAccessRuleProtection($true, $false)
    #Change the inheritance/propagation settings of the folder we're dealing with

    $acl.SetAccessRule($UserAR)
    $acl.SetAccessRule($DAAR)
    $acl.SetAccessRule($SysAR)

    Write-Host "Changing ACL on $($folder.FullName) to:"
    $acl | fl
    #For error handling purposes - not all folders will map to a user of the exact same name, this makes them easier to handle when viewing the output.

    Set-Acl -Path $Folder.Fullname -ACLObject $acl

}

18
2017-10-07 20:32



Cool, es nimmt an \" entkommt dem Anführungszeichen, und das CSS ist durcheinander! - Canadian Luke
@CanadianLuke Danke! Ich habe WTH gefragt. Es wurde ein Raum mit null Breite eingezogen, um das CSS zu fixieren. Wenn also jemand Lust hat, Nudeln zu kopieren, gibt es ein nicht druckbares Zeichen zwischen dem Schrägstrich und dem Zitat in der Zeile, die $ objuser deklariert. - HopelessN00b


Die vorherige Antwort wird nicht funktionieren OB Die Home-Ordner / umgeleiteten Ordner wurden mit "Erlaube dem Benutzer exklusive Rechte" eingerichtet. Dies liegt daran, dass diese Option ausgewählt ist was nicht empfohlen wird, nur SYSTEM und DER BENUTZER haben Rechte an dem Ordner. Sie können dann die Dauerwellen nicht ändern (auch nicht als Administrator), ohne den Besitz des Ordners zu übernehmen.

Dies ist eine Methode, um dies zu umgehen OHNE Besitz zu nehmen. Es ist ein zweistufiger Prozess.

Erstellen Sie ein Powershell-Skript, mit dem ICACLS ausgeführt wird, um die Dauerhaftigkeit der Ordner und Unterordner zu ändern.

Führen Sie PSexec aus, um das Powershell-Skript zu starten.

genommen und modifiziert von: https://mypkb.wordpress.com/2008/12/29/how-to-restore-administrators-access-to-redirected-my-documents-folder/

1 PowerShell-Skript erstellen / kopieren / stehlen (erfordert PS 3.0 oder höher)

#ChangePermissions.ps1
# CACLS rights are usually
# F = FullControl
# C = Change
# R = Readonly
# W = Write

$StartingDir= "c:\shares\users"   ##Path to root of users home dirs
$Principal="domain\username"    #or "administrators"
$Permission="F"

$Verify=Read-Host `n "You are about to change permissions on all" `
"files starting at"$StartingDir.ToUpper() `n "for security"`
"principal"$Principal.ToUpper() `
"with new right of"$Permission.ToUpper()"."`n `
"Do you want to continue? [Y,N]"

if ($Verify -eq "Y") {

foreach ($FOLDER in $(Get-ChildItem -path $StartingDir -directory -recurse)) {

$temp = $Folder.fullname
CACLS `"$temp`" /E /P `"${Principal}`":${Permission} >$NULL
#write-host $Folder.FullName 
}
}
  1. Führen Sie PSEXEC aus, es fungiert als SYSTEM-Konto und kann daher die Dauer des Ordners ändern, auf den nur SYSTEM und der Benutzer zugreifen können. Installieren und starten Sie PSexec. https://technet.microsoft.com/en-us/sysinternals/bb897553.aspx

Von der Befehlszeile aus:

psexec -s -i powershell -noexit "& 'C:\Path\To\ChangePermissions.ps1'"

2
2017-10-15 17:06