助けて!リダイレクトされたフォルダー/ホームディレクトリのアクセス許可の悪夢を継承しました


22

私の新しい雇用主は、数百人のユーザー向けにフォルダリダイレクトをセットアップしていますが、セットアップした人は彼が何をしていたのか本当に知りませんでした。その結果、リダイレクトされたフォルダー/ホームディレクトリのアクセス許可のベストプラクティスは順守されませんでした。

リダイレクトされたフォルダーの場所にアクセスできるようにするためのソリューションは、代わりにルートディレクトリ(「ホーム」)にFull Controlアクセス許可(「共有」アクセス許可ではなく、NTFSアクセス許可)を適用Everyoneし、それをルートの下のすべてのサブフォルダーとファイルに伝達することでした。

何が間違っているのでしょうか?CEOが自分のMy Documentsフォルダーに機密情報を持っている、または誰もがCryptoWallに感染して他のすべてのユーザーのファイルを暗号化するというわけではありません。右?

とにかく、CryptoWall感染が削除され、バックアップが復元されたので、多くの人々は現在のアクセス許可をより恐ろしいものに置き換えてほしいと思っています。 100個のフォルダー。

PowerShellを使用してこの問題を解決し、生活をやりがいのあるものにする方法を教えてください。

回答:


18

System.Security.Principal...クラスまたはメソッドまたはそれが何であれ私を紹介してくれたJScott感謝します。多くのサブフォルダーのACLをユーザーのホームディレクトリに適したものに置き換える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
かっこいい、\"引用符をエスケープしていると仮定し、CSSが台無しになっている!
カナダのルーク州立モニカ

3
@CanadianLukeありがとう!私はWTHを疑問に思っていました。CSSを修正するためにゼロ幅のスペースをそこに投げました...だから、誰かがコピーパスタに衝動を覚えると、$ objuserを宣言する行のスラッシュと引用符の間に印刷できない文字があります。
HopelessN00b

2

前の回答はない作品になるのIFホームフォルダ/リダイレクトされたフォルダは、「利用者の排他的権利を付与します」と設定しました。これは、推奨されていないこのオプションを選択した場合、システムとユーザーのみがフォルダに対する権限を持っているためです。その後、フォルダの所有権を取得しないと、管理者としても権限を変更できません。

これは、所有権を取得せずにこの問題を回避する方法です。これは2段階のプロセスです。

ICACLSを実行するPowerShellスクリプトを作成して、フォルダーとサブフォルダーの権限を変更します。

PSexecを実行して、Powershellスクリプトを開始します。

取得および変更:https : //mypkb.wordpress.com/2008/12/29/how-to-restore-administrators-access-to-redirected-my-documents-folder/

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'"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.