You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows Server 2016递归授予域用户/组文件夹权限问题排查

解决Windows Server 2016中文件夹权限添加后无权限的问题

我懂你遇到的麻烦了——明明代码显示域组已经加到权限列表里,但就是没给上完全控制权限对吧?问题出在你创建FileSystemAccessRule的时候,漏掉了关键的继承和传播参数,默认的简化构造函数没法让权限正确生效。

你原来的代码只用了三个参数来创建权限规则,但系统需要知道这个权限要不要传递给子文件夹、文件,以及传播的范围,缺了这些参数的话,权限只会空有一个用户条目,实际生效的权限根本没配上。

修正后的完整代码

# 完整指定继承与传播逻辑的权限规则
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule(
    "domain\group",
    "FullControl",
    "ContainerInherit,ObjectInherit",  # 权限同时继承到子文件夹和文件
    "None",                             # 不限制权限的传播范围
    "Allow"
)

foreach ($file in $(Get-ChildItem "G:\usr" -Recurse)) {
    $acl = Get-Acl $file.FullName
    $acl.SetAccessRule($rule)
    Set-Acl $File.Fullname $acl
}

额外效率优化建议

如果你的目标是给G:\usr根目录以及所有子项统一设置权限,其实不用递归遍历每个对象——直接给根目录设置可继承权限,子文件夹和文件会自动继承这个权限,效率更高:

$rootPath = "G:\usr"
$acl = Get-Acl $rootPath
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule(
    "domain\group",
    "FullControl",
    "ContainerInherit,ObjectInherit",
    "None",
    "Allow"
)
$acl.SetAccessRule($rule)
Set-Acl $rootPath $acl

原代码失效的核心原因

当你使用仅含3个参数的FileSystemAccessRule构造函数时,它默认的继承标志是None、传播标志也是None——这意味着权限只绑定在当前对象本身(比如单个文件夹),既不会传递给子项,也不会被系统识别为有效的可生效权限,最终就出现了"用户在列表里但没权限"的奇怪现象。

内容的提问来源于stack exchange,提问作者hans

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:37:27