HILFE! Ich habe einen Berechtigungsalptraum für umgeleitete Ordner/Home-Verzeichnisse geerbt

HILFE! Ich habe einen Berechtigungsalptraum für umgeleitete Ordner/Home-Verzeichnisse geerbt

Mein neuer Arbeitgeber hat für seine Hunderte von Benutzern eine Ordnerumleitung eingerichtet, und die Person, die sie eingerichtet hat, wusste nicht wirklich, was sie tat. Infolgedessendie besten Vorgehensweisen für Berechtigungen für umgeleitete Ordner/Home-Verzeichnissewurde nicht befolgt.

Die Lösung, um Benutzern den Zugriff auf ihre umgeleiteten Ordnerspeicherorte zu ermöglichen, bestand darin, stattdessen Full ControlBerechtigungen (NTFS-Berechtigungen, natürlich keine „Freigabe“-Berechtigungen) auf Everyonedas Stammverzeichnis („Home“) anzuwenden und diese auf alle Unterordner und Dateien unterhalb des Stammverzeichnisses auszuweiten.

Was könnte denn da schon schiefgehen, oder? Es ist ja nicht so, dass der CEO vertrauliche Informationen in seinem My DocumentsOrdner hat, oder dass sich irgendjemand mit CryptoWall infizieren und die Dateien aller anderen verschlüsseln könnte. Oder?

Nachdem die CryptoWall-Infektion nun entfernt und die Backups wiederhergestellt wurden, würden sich viele Leute wünschen, dass wir die aktuellen Berechtigungen durch etwas weniger Schreckliches ersetzen, und ich möchte nicht in mehreren Hundert Ordnern durch die Berechtigungsdialoge klicken müssen.

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

Antwort1

Mit Dank an JScottfür den Verweis auf die System.Security.Principal... Klasse oder Methode oder was auch immer es ist, etwas PowerShell, um die ACLs einer Reihe von Unterordnern durch diejenigen zu ersetzen, die für die Stammverzeichnisse der Benutzer 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

}

Antwort2

Die vorherige Antwort funktioniert nichtWENNdie Home-Ordner/umgeleiteten Ordner wurden mit "Dem Benutzer exklusive Rechte gewähren" eingerichtet. Dies liegt daran, dass bei Auswahl dieser Optionwas nicht empfohlen wird, nur SYSTEM und DER BENUTZER haben Rechte für den Ordner. Sie können die Berechtigungen dann nicht ändern (auch nicht als Administrator), ohne den Besitz des Ordners zu übernehmen.

Dies ist eine Methode, um dieses Problem zu umgehen, OHNE die Verantwortung zu übernehmen. Es handelt sich um einen zweistufigen Prozess.

Erstellen Sie ein Powershell-Skript, das ICACLS ausführt, um die Berechtigungen für die Ordner und Unterordner zu ändern.

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

übernommen und verändert aus: 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 Berechtigungen für den Ordner ändern, auf den nur SYSTEM und der Benutzer Zugriff haben. Installieren und führen Sie PSexec aus.https://technet.microsoft.com/en-us/sysinternals/bb897553.aspx

Über die Befehlszeile:

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

verwandte Informationen