HALP! Ho ereditato un incubo di autorizzazioni per le cartelle / home directory reindirizzate


22

Il mio nuovo datore di lavoro ha impostato il reindirizzamento delle cartelle per le sue centinaia di utenti e la persona che lo ha impostato non sapeva davvero cosa stesse facendo. Di conseguenza, non sono state seguite le migliori pratiche per le autorizzazioni su cartelle / home directory reindirizzate .

La soluzione per consentire alle persone di accedere alle posizioni delle cartelle reindirizzate era invece applicare le Full Controlautorizzazioni (autorizzazioni NTFS, non le autorizzazioni "condividi", ovviamente) alla Everyonedirectory principale ("Home") e propagarle fino a tutte le sottocartelle e i file sotto la radice .

Cosa potrebbe andare storto, giusto? Non è come se il CEO avesse informazioni confidenziali nella sua My Documentscartella o chiunque si infettasse con CryptoWall e crittografasse i file di tutti gli altri. Destra?

Quindi, ora, ora che l'infezione CryptoWall è stata rimossa e i backup sono stati ripristinati, un certo numero di persone vorrebbe che sostituissimo le autorizzazioni correnti con qualcosa di meno orribile, e vorrei non dover fare clic sui dialoghi delle autorizzazioni in diversi centinaia di cartelle.

In che modo PowerShell può risolvere questo problema per me e rendere la vita degna di essere vissuta di nuovo?

Risposte:


18

Grazie a JScott per avermi fatto riferimento alla System.Security.Principalclasse ... o al metodo o qualunque cosa sia, alcuni PowerShell per sostituire gli ACL su un gruppo di sottocartelle con quelli appropriati per le home directory degli utenti:

$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

}

1
Bene, si presume che \"stia sfuggendo alle virgolette e che il CSS è incasinato!
Canadian Luke REINSTATE MONICA

3
@CanadianLuke Grazie! Mi chiedevo WTH. Lancia uno spazio di larghezza zero per correggere il CSS ... quindi, se qualcuno ha l'impulso di copiare la pasta, c'è un carattere non stampabile tra la barra e la citazione nella riga che dichiara $ objuser.
HopelessN00b,

2

La risposta precedente non funzionerà SE le cartelle home / le cartelle reindirizzate sono state impostate con "Concedi diritti esclusivi all'utente". Questo perché quando si seleziona questa opzione che non è consigliata , solo SYSTEM e THE USER hanno i diritti sulla cartella. Non è quindi possibile modificare i permessi (anche come amministratore) senza diventare proprietario della cartella.

Questo è un metodo per aggirare questo SENZA appropriarsi. È un processo in due fasi.

Creare uno script PowerShell che esegue ICACLS per modificare i permanenti nelle cartelle e sottocartelle.

esegui PSexec per dare il via allo script Powershell.

preso e modificato da: https://mypkb.wordpress.com/2008/12/29/how-to-restore-administrators-access-to-redirected-my-documents-folder/

1 Crea / copia / ruba script PowerShell (richiede PS 3.0 o superiore)

#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. eseguire PSEXEC, funziona come account SYSTEM e quindi può cambiare i permessi nella cartella a cui solo SYSTEM e l'utente hanno accesso. Installa ed esegui PSexec. https://technet.microsoft.com/en-us/sysinternals/bb897553.aspx

Dalla riga di comando:

psexec -s -i powershell -noexit "& 'C:\Path\To\ChangePermissions.ps1'"
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.