powershell 是管理 ntfs 权限继承最可靠的方式,能精准控制是否继承、是否传播、是否替换子项;启用继承用 /inheritance:e,禁用并保留用 /d,禁用并清除用 /r;需配合 /t 递归执行,并通过 set-acl 强制同步或 icacls /reset 重建继承链。
powershell 是管理 ntfs 权限继承最可靠的方式,它能精准控制“是否继承”“是否传播”“是否替换子项”,避免手动操作遗漏或误设。
启用或禁用继承关系
默认情况下,新创建的子文件夹和文件会继承父级 NTFS 权限。若需统一策略,可批量启用或关闭继承:
- 启用继承(恢复默认行为):
icacls "D:\Shares\Projects" /inheritance:e /T - 禁用继承并保留现有权限:
icacls "D:\Shares\Projects" /inheritance:d /T - 禁用继承并清除所有已继承规则:
icacls "D:\Shares\Projects" /inheritance:r /T
参数说明:/T 表示递归处理所有子项;/e 启用、/d 禁用但保留、/r 禁用并移除——三者语义不同,不可混用。
强制同步继承权限到全部子项
启用继承后,已有子项未必立即生效,尤其当之前被手动修改过。需主动刷新:
- 用 PowerShell 一行重置所有子项 ACL:
Get-ChildItem "D:\Shares\Projects" -Recurse | ForEach-Object { Set-Acl $_.FullName (Get-Acl "D:\Shares\Projects") } - 更稳妥的做法是先确保父目录继承已开启,再执行上述命令,避免“继承开关开着,但子项仍保留旧规则”的常见问题
设置权限时控制继承与传播标志
添加新 ACE(访问控制项)时,必须显式指定继承行为,否则会因标志缺失导致报错(如“无法设置标志”):
- 允许权限向下继承到子文件夹和文件:
"ContainerInherit, ObjectInherit" - 不向下传播(仅作用于当前对象):
"None" - 若需子文件夹继承但文件不继承,用
"ContainerInherit";反之用"ObjectInherit" - 错误示例:
New-Object System.Security.AccessControl.FileSystemAccessRule("DOMAIN\Users", "Read", "None", "None", "Allow")—— 此规则不会影响子项,且易被误认为“已生效”
清理残留权限并重建继承链
迁移或重组织共享后,常出现权限混乱:部分子项继承关闭、所有权异常、拒绝规则干扰。建议分步处理:
- 先统一获取所有权:
Takeown /f "D:\Shares\Projects" /r /d y - 再重置继承:
icacls "D:\Shares\Projects" /reset /T /C(/C忽略错误继续) - 最后用
Set-Acl应用标准化 ACL,确保所有子项从同一源头继承
这样可避免“个别文件夹权限异常却查不出原因”的典型运维困境。











