URAMIRAIKAN

1020のなれの果て (since 2005.6.19)

フォルダリダイレクト先のアクセス権

 久々に移動ユーザープロファイルとフォルダリダイレクトを設定したので、復習と備忘。

 グループポリシーで移動ユーザープロファイルやフォルダリダイレクトを使用すると、既定ではユーザーの個人フォルダは管理者もアクセスできなくなってしまいます(無理矢理アクセス権をとることは可能ではありますが)。
 それでは管理をする上で不都合なので管理者のアクセス権を付与することが多いと思います。


Administrators セキュリティグループを移動ユーザープロファイルに追加する

 ユーザープロファイルの方はグループポリシーに「Administrators セキュリティグループを移動ユーザープロファイルに追加する」という項目があるので有効にしてやればよいのですが、ではフォルダリダイレクトではどうするかというのが主題。


ユーザーに<対象フォルダ>に対して排他的な権限を与える

 フォルダリダイレクトは「ドキュメント」「ピクチャ」「ミュージック」のように各フォルダごとに設定していきますが、設定項目の「ユーザーに<対象フォルダ>に対して排他的な権限を与える」に既定でチェックが入っています。
 これにチェックが入っていると自動作成されるフォルダは管理者にもアクセスできなくなりますが、チェックを外すと上位のフォルダのアクセス権を継承するようになります。
 ただし、フォルダリダイレクト用の共有フォルダは利用ユーザー全員がアクセスできるようにするはずなので、そのまま継承すると個人用フォルダも全員がアクセスできるようになってしまいます。


 ではどうするかというと、共有フォルダの配下に個人ユーザー用のフォルダを手動で作成し、そこのアクセス権を個人ユーザーと管理ユーザーに設定します。
 このとき共有フォルダに付与する一般ユーザーのアクセス権は継承しないようにしておきます。


共有フォルダのアクセス権の例(管理者とドメインユーザー)


手動作成した個人フォルダのアクセス権の例(管理者と個人ユーザー)


 そうすることで、その後にポリシーで自動作成されるフォルダにも継承されて個人ユーザーと管理ユーザーだけがアクセスできるようになります。


自動作成されたフォルダリダイレクト先のアクセス権(管理者と個人ユーザー)


 内容としては以上なのですが、手動作成する個人フォルダをユーザー追加の度に手作業でやるのは現実的ではないので、スクリプト等を作っておくのが一般的だと思います、
 下記のサンプルスクリプトは指定したセキュリティグループのメンバー用に個人フォルダを作成し、個別のアクセス権を付与します。

<# フォルダリダイレクト用フォルダの作成 #> # Parameters $DomainBios = "DOMAIN" $TargetGroup = "Domain Users" $RootFolder = "\\127.0.0.1\Shared" # Main Routine $GroupUsers = Get-ADGroupMember -Identity $TargetGroup -Recursive $Folders = Get-ChildItem -Path $RootFolder foreach ($DomainUser in $GroupUsers) { $Stat = $true foreach ($UserFolder in $Folders) { if ($DomainUser.SamAccountName -ieq $UserFolder.Name) { Write-Output "`"$UserFolder`" is already exist." $Stat = $false } } if ($Stat) { $UserPath = $RootFolder + "\" + $DomainUser.SamAccountName $AllowUser = $DomainBios + "\" + $DomainUser.SamAccountName $UserRuleSet = ( $AllowUser, [System.Security.AccessControl.FileSystemRights]::Modify, ([System.Security.AccessControl.InheritanceFlags]::ObjectInherit -bor [System.Security.AccessControl.InheritanceFlags]::ContainerInherit), [System.Security.AccessControl.PropagationFlags]::None, [System.Security.AccessControl.AccessControlType]::Allow ) $UserAcl = New-Object System.Security.AccessControl.FileSystemAccessRule $UserRuleSet Write-Output "Create Folder : `"$UserPath`"" New-Item -Path $UserPath -ItemType Directory $FolderAcl = Get-Acl $UserPath $FolderAcl.SetAccessRule($UserAcl) $FolderAcl | Set-Acl $UserPath } } exit

 ある程度必要な要素だけ入れると、こんなところでしょうかね。