有效权限怎么算
一个人能对文件做什么,不是看某一条权限条目,而是把他自身以及所属全部组(含嵌套组、Everyone、Authenticated Users 这类特殊身份)的允许项取并集,任何位置出现显式拒绝就一票否决。所以排「为什么被拒绝访问」时,先把 Deny 条目找出来,再看并集里缺了哪一项。另外还有两条容易被忽略的规则:继承会把父目录的限制带下来,而共享权限会与 NTFS 权限取交集。
基本信息
| 适用平台 | Windows 的 NTFS 文件系统(共享还需叠加共享权限) |
|---|---|
| 基本规则 | 允许项取并集,显式拒绝优先于一切允许 |
| 继承 | 子对象继承父目录的可继承条目,父上的拒绝同样会继承 |
| 特殊身份 | Everyone、Authenticated Users、Users、INTERACTIVE、CREATOR OWNER 等都参与计算 |
| 验证入口 | 文件夹属性 → 安全 → 高级 → 有效访问;命令行用 icacls 与 Get-Acl 交叉验证 |
| 例外 | 持有备份/还原特权或行使所有权可以绕过常规权限判断 |
典型使用场景
- 拒绝访问排障:先搜 Deny 条目,再核对所属组的并集是否缺必需权限
- 共享与 NTFS 交叉问题:确认是共享权限卡住还是 NTFS 权限卡住
- 继承异常:子目录权限与父目录预期不一致,检查继承是否被中断
- 权限申请评审:评估某账户实际能访问哪些范围,避免超额授权
- 迁移前后比对:确认新环境的有效权限与旧环境一致
常用示例
常用示例
# 列出与某账户相关的权限条目(先看有没有拒绝项)
(Get-Acl D:\Share).Access | Where-Object { $_.IdentityReference -like '*user01*' } |
Format-Table IdentityReference, FileSystemRights, AccessControlType, IsInherited
# 查全部拒绝条目
(Get-Acl D:\Share).Access | Where-Object { $_.AccessControlType -eq 'Deny' } | Format-Table IdentityReference, FileSystemRights, IsInherited
# 递归核对目录树上的权限
icacls D:\Share\Dept /T | Select-String -Pattern 'user01|Deny|拒绝'
# 查看继承状态与所有者
Get-Acl D:\Share | Format-List Owner, Group, AreAccessRulesProtected参与计算的要素
| 要素 | 作用 | 易踩的坑 |
|---|---|---|
| 账户自身 ACE | 最直接的授权来源 | 个人条目常被组条目掩盖,排查要全看 |
| 组并集 | 所有所属组(含嵌套)的允许项累加 | 嵌套组层级多,靠人脑推演容易漏 |
| 显式拒绝 | 优先级最高,直接否决 | 继承来的拒绝常被忽略 |
| 继承 | 父目录可继承条目下传 | 中断继承会让子目录权限与预期脱节 |
| 共享权限 | 与 NTFS 权限取交集 | 只查 NTFS 会误判问题来源 |
| 所有权与特权 | 可绕过常规权限判断 | Backup Operators 等成员实际可读全盘 |
图形界面的「有效访问」选项卡在部分版本上对组与特殊身份的分析并不完整,尤其是涉及嵌套组与拒绝条目时。出现结论矛盾时,用 icacls 逐条核对,并以实际访问测试为准。
「删除」权限与父目录的「删除子文件夹及文件」是两回事:有后者可以在父目录里删掉子项,但没有前者时不能删除该对象自身,这正是「文件能删、目录删不掉」的常见原因。
实测与细粒度对照
实测与细粒度对照
# 以目标账户实测(在能登录该账户的环境下最直观)
# 读取测试
Get-Content 'D:\Share\Dept\report.xlsx' -ErrorAction SilentlyContinue
# 写入测试:创建后立即删除,避免留下垃圾文件
'x' | Out-File 'D:\Share\Dept\_perm_test.txt' -ErrorAction SilentlyContinue
Remove-Item 'D:\Share\Dept\_perm_test.txt' -ErrorAction SilentlyContinue
# 细粒度权限对照(完全控制 = 下列集合的组合)
# 完全控制 / 修改 / 读取和执行 / 列出文件夹内容 / 读取 / 写入 / 删除不要用显式拒绝来「修补」权限设计:拒绝条目会随继承扩散,后人在别处授权时看不到它,问题变成周期性复发。优先用「减少授权」的方式收敛权限。