ПОМОГИТЕ! Я унаследовал кошмар с правами доступа для перенаправленных папок/домашних каталогов

ПОМОГИТЕ! Я унаследовал кошмар с правами доступа для перенаправленных папок/домашних каталогов

Мой новый работодатель настроил перенаправление папок для сотен своих пользователей, и человек, который это настроил, на самом деле не знал, что он делает. В результате,лучшие практики для разрешений на перенаправленные папки/домашние каталогине последовало.

Решением, позволяющим людям получать доступ к перенаправленным папкам, было применение Full Controlразрешений (разумеется, разрешений NTFS, а не разрешений «общий доступ») к Everyoneкорневому каталогу («Home») и распространение их на все подпапки и файлы ниже корня.

Что может пойти не так, верно? Не похоже, что у генерального директора в My Documentsпапке есть конфиденциальная информация, или кто-то может заразиться CryptoWall и зашифровать файлы всех остальных. Верно?

Так или иначе, теперь, когда заражение CryptoWall удалено и резервные копии восстановлены, многие хотели бы, чтобы мы заменили текущие разрешения на что-то менее ужасное, а мне бы не хотелось щелкать по диалоговым окнам разрешений в нескольких сотнях папок.

Как PowerShell может решить эту проблему и снова сделать жизнь стоящей?

решение1

С благодарностью JScottза то, что вы отослали меня к System.Security.Principal... классу или методу или как там это называется, немного PowerShell для замены ACL для группы подпапок на те, которые подходят для домашних каталогов пользователей:

$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

}

решение2

Предыдущий ответ не сработаетЕСЛИдомашние папки/перенаправленные папки были настроены с помощью «Предоставить пользователю исключительные права». Это происходит потому, что при выборе этой опциичто не рекомендуется, только SYSTEM и THE USER имеют права на папку. Затем вы не сможете изменить права (даже как администратор), не став владельцем папки.

Это метод обхода проблемы БЕЗ принятия ответственности. Это двухэтапный процесс.

Создайте скрипт PowerShell, который запускает ICACLS для изменения прав доступа к папкам и подпапкам.

запустите PSexec, чтобы запустить скрипт Powershell.

взято и изменено из: https://mypkb.wordpress.com/2008/12/29/как-восстановить-доступ-администраторов-к-перенаправленной-папке-моих-документов/

1 Создать/скопировать/украсть скрипт PowerShell (требуется PS 3.0 или выше)

#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. запустите PSEXEC, он работает как учетная запись SYSTEM и, следовательно, может изменять права доступа к папке, к которой имеют доступ только SYSTEM и пользователь. Установите и запустите PSexec.https://technet.microsoft.com/en-us/sysinternals/bb897553.aspx

Из командной строки:

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

Связанный контент