Windows 2012 R2 上的重定向文件夹权限

Windows 2012 R2 上的重定向文件夹权限

我有一台 2012R2 文件服务器 ( server-docs) 和一台 2012R2 Citrix XenApp/RDS 服务器 ( server-rds)。用户必须是 的成员UsersRDS才能登录server-rds

以下是我的文档重定向的 GPO 设置:

  • 基本:将每个人的文件夹重定向到同一位置
  • 在根路径下为每个用户创建一个文件夹
  • 根文件夹 :\\server-docs\UserDocs
  • 独家权利不受制约

我按照 MS 的这篇文章来设置根文件夹的权限:https://technet.microsoft.com/en-us/library/cc737633%28v=WS.10%29.aspx

  • 所有者:完全控制,仅限子文件夹和文件
  • UsersRDS:列出文件夹/读取数据、创建文件夹/附加数据 - 仅限此文件夹
  • 管理员:完全控制
  • 系统:完全控制,此文件夹,子文件夹和文件

server-rds当我使用登录时TestUser,会发生文件夹重定向,并且我得到一个文件夹\\server-docs\UserDocs\TestUser\Documents

TestUser及其子文件夹Documents具有相同的权限:

  • 所有者:完全控制,仅限子文件夹和文件
  • UsersRDS:列出文件夹/读取数据、创建文件夹/附加数据 - 仅限此文件夹
  • 管理员:完全控制
  • 系统:完全控制,此文件夹,子文件夹和文件
  • TestUser:完全控制,仅限此文件夹

我有另一台 2003 文件服务器和一台 2003 RDS 服务器,具有相同的根文件夹权限,我在用户文档文件夹中只拥有以下权限:

  • 管理员:完全控制
  • TestUser: 完全控制

如果我检查Grant the user exclusive Rights on Document folderGPO,运行gpupdate /forceserver-rdsserver-rds登录时无法执行文件夹重定向,并且我得到事件 ID 1085:Windows failed to apply folder redirection settings.

我如何禁用用户文档的继承以获取相同的权限(如我的 2003 服务器)?

答案1

由于奇怪的 ACL 似乎是设计使然,因此我必须在用户登录期间使用 Powershell 脚本检查并根据需要更改它们:

Function Repair-UserFullControlACL {
Param(
    [Parameter(Mandatory=$true)]
    [ValidateScript({Test-Path $_ -PathType "Container"})]
    [string]$Folder
)

# We also add System account and local administrators (Replace these french account names if needed)
$OtherAccounts = @("AUTORITE NT\Système", "BUILTIN\Administrateurs", "CREATEUR PROPRIETAIRE")

# `FullControl` for the user
$ACLUser = New-Object System.Security.Principal.NTAccount($FullUserName)
$Rule = New-Object System.Security.AccessControl.FileSystemAccessRule($ACLUser, "FullControl", "ContainerInherit, ObjectInherit", "None", "Allow")

# We need the actual folder ACL
$Acl = Get-ACL $Folder

# Checking if everything already OK...
$RuleOK = $False
ForEach ($ACLRule in $Acl.Access){
    If (-not(Compare-Object ($Rule | Format-List * | Out-String -Stream) ($ACLRule | Format-List * | Out-String -Stream))){
        $RuleOK = $True
        break
    }
}
# Adding fullControl if needed
If (-not($RuleOK)){
    Try{
        $Acl.AddAccessRule($Rule)

        ForEach ($Account in $OtherAccounts){
            $ACLAccount = New-Object System.Security.Principal.NTAccount($Account)
            $Rule = New-Object System.Security.AccessControl.FileSystemAccessRule($ACLAccount, "FullControl", "ContainerInherit, ObjectInherit", "None", "Allow")
            $Acl.AddAccessRule($Rule)
        }
        # Saving ACL
        Set-ACL $Folder $Acl -ErrorAction Stop
    }catch{
        Write-Warning "Erreur : Impossible d'accorder le droit 'FullControl' à l'utilisateur sur $Folder : $($_.Exception.Message)"  
    }
}}

例子 :

Repair-UserFullControlACL "\\server\shared\userHomeDir"

相关内容