HALP! Yönlendirilen klasörler / giriş dizinleri için izin kabusu devraldım


22

Yeni işverenim yüzlerce kullanıcısı için klasör yeniden yönlendirme ayarlarına sahip ve onu ayarlayan kişi ne yaptığını bilmiyordu. Sonuç olarak, yeniden yönlendirilen klasörler / ana dizinlerdeki izinler için en iyi yöntemler izlenmedi.

İnsanların yeniden yönlendirilen klasör konumlarına erişmelerine izin veren çözüm bunun yerine kök dizine ("Giriş") Full Controlizinleri ("izin verme" değil, "NTFS izinleri") uygulamak Everyoneve bunu kök dizinin altındaki tüm alt klasörlere ve dosyalara yaymaktı. .

Ne yanlış gidebilir ki? CEO'nun kendi My Documentsklasöründe gizli bilgileri yok ya da herhangi biri CryptoWall'dan etkilenecek ve herkesin dosyalarını şifreleyecek gibi değil. Sağ?

Her neyse, şimdi CryptoWall enfeksiyonu kaldırıldı ve yedeklemeler geri alındı, bazı insanlar mevcut izinleri daha az korkunç bir şeyle değiştirmemizi istiyor ve birkaç kişinin izinler diyaloglarını tıklatmamaları gerekiyor. yüz klasörler.

PowerShell bu sorunu benim için nasıl çözebilir ve hayatı tekrar yaşamaya değer kılabilir?

Yanıtlar:


18

Beni System.Security.Principal... veya sınıfına ya da yöntemine ya da her ne olursa olsun yönlendiren JScott sayesinde , bazı alt klasörlerdeki ACL'leri kullanıcı ana dizinleri için uygun olanlarla değiştirmek için bir miktar PowerShell:

$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
Harika, sanırım \"tırnak işaretinden kaçıyor, ve CSS berbat durumda!
Kanadalı Luke MONICA TAKİP,

3
@CanadianLuke Teşekkürler! WTH'yi merak ediyordum. CSS'i sabitlemek için buraya sıfır genişlikte bir boşluk fırlattı ... bu nedenle, herhangi biri kopya-makarnayı dürtüsü alırsa, eğik çizgi ile $ itiraz edeni belirten satırdaki tırnak arasında yazdırılamaz bir karakter var.
UmutsuzN00b

2

Önceki cevap değil iş olacak IF ev klasörler / yönlendirildi klasörler "Kullanıcıya özel haklar ver" ile kurulmuştur. Bunun nedeni tavsiye edilmeyen bu seçenek seçildiğinde , sadece SİSTEM ve KULLANICI'nın klasör üzerinde hakları vardır. Daha sonra klasörün mülkiyetini almadan izinleri (yönetici olarak bile) değiştiremezsiniz.

Bu, mülkiyeti ALMADAN ÇALIŞMA konusunda bir yöntemdir. Bu iki aşamalı bir süreçtir.

Klasörler ve alt klasörlerdeki izinleri değiştirmek için ICACLS çalıştıran bir powershell betiği oluşturun.

Powershell betiğini başlatmak için PSexec'i çalıştırın.

https://mypkb.wordpress.com/2008/12/29/how-to-restore-administrators-access-to-redirected-my-documents-folder/ adresinden alınmış ve değiştirilmiş

1 Powershell betiği oluşturun / kopyalayın / çalın (PS 3.0 veya daha üst sürümü gerektirir)

#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'i çalıştırın, SYSTEM hesabı olarak çalışır ve bu nedenle yalnızca SYSTEM ve kullanıcının erişebildiği klasördeki izinleri değiştirebilir. PSexec'i kurun ve çalıştırın. https://technet.microsoft.com/en-us/sysinternals/bb897553.aspx

Komut Satırından:

psexec -s -i powershell -noexit "& 'C:\Path\To\ChangePermissions.ps1'"
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.