我有一个2012R2文件服务器( server-docs )和一个2012R2 Citrix XenApp / RDS服务器( server-rds )。 用户必须是UsersRDS成员才能loginserver-rds 。
这里是我的文件redirect的GPO设置:
\\server-docs\UserDocs 我从MS跟随这篇文章来设置根文件夹的权限: https : //technet.microsoft.com/en-us/library/cc737633%28v=WS.10%29.aspx
UsersRDS :列出文件夹/读取数据,创build文件夹/附加数据 – 仅此文件夹 当我用TestUserloginserver-rds时,发生文件夹redirect,并得到一个文件夹\\server-docs\UserDocs\TestUser\Documents 。
TestUser和它的子Documents夹Documents具有相同的权限:
UsersRDS :列出文件夹/读取数据,创build文件夹/附加数据 – 仅此文件夹 TestUser :完全控制,仅此文件夹 我有另一个2003年的文件服务器和一个2003 RDS服务器,具有相同的根文件夹权限我只在用户文档文件夹:
TestUser :完全控制 如果我选中Grant the user exclusive Rights on Document folder GPO中Grant the user exclusive Rights on Document folder ,请在server-rds上运行gpupdate /force ,则server-rds无法在login时执行文件夹redirect,并且得到事件ID 1085: Windows failed to apply folder redirection settings.
我如何禁用inheritance为用户文件获得相同的权限(如我的2003服务器)?
由于奇怪的ACL似乎是由devise,我必须检查,并在用户loginPowershell脚本时,如果需要更改它们:
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"