icacls 继承控制是什么
目录权限的默认来源是继承:子项自动继承父项的 ACL。icacls 提供了两种断开继承的方式,/inheritance:r 直接移除继承来的条目,/inheritance:d 先复制为显式条目再断开,后者更安全,因为断开的瞬间不会出现“谁都进不去”的空档。另一个相关动作是 /reset,它按继承规则重建 ACL,会把自定义的显式权限一并清掉。
基本信息
| 适用平台 | Windows 全版本,命令行工具 |
|---|---|
| 断开语法 | icacls 路径 /inheritance:r(移除)或 :d(复制后断开) |
| 重置语法 | icacls 路径 /reset [/T],/T 递归子项 |
| 备份语法 | icacls 路径 /save out.txt /T;恢复用 /restore |
| 查看语法 | icacls 路径,继承条目带 (I) 标记 |
| 需管理员 | 多数目录操作需要管理员或文件所有者权限 |
典型使用场景
- 某个子目录要给额外的人单独授权,先从父级继承链上脱开
- 整理历史遗留权限:用 /reset 按继承重建,回到统一模型
- 做权限变更前的演练:先 /save 备份,再操作,必要时 /restore 回滚
- 排查“为什么这个目录的权限和别人不一样”,确认是否被断开了继承
- 批量规范子目录权限,让它们重新跟随父目录策略
常用示例
常用示例
icacls D:\Share\sub # 先看当前 ACL,带 (I) 的是继承来的
icacls D:\Share\sub /save D:\acl\sub_bak.txt /T # 备份现有权限
icacls D:\Share\sub /inheritance:d # 把继承权限复制为显式后断开(推荐)
icacls D:\Share\sub /inheritance:r # 直接移除继承条目(可能导致无人可访问)
icacls D:\Share\sub /grant "CORP\ops01:(OI)(CI)M" # 断开后再单独授权
icacls D:\Share\sub /reset /T # 按继承重建,清掉自定义权限
icacls D:\Share /restore D:\acl\sub_bak.txt # 需要时回滚参数对照
| 参数 | 作用 | 风险 |
|---|---|---|
| /inheritance:d | 复制继承条目为显式后断开 | 较低,推荐优先使用 |
| /inheritance:r | 直接移除继承条目 | 高,可能瞬间无人有权限 |
| /reset | 按继承重建 ACL | 清掉全部显式权限 |
| /T | 递归应用到子项 | 影响面成倍放大 |
| /save 与 /restore | 备份与恢复 ACL | 恢复需在对应路径下执行 |
/inheritance:d 与 :r 的关键差别在于“断开那一刻目录是否还保留可用权限”::d 把父级权限复制成自身显式条目,用户访问不会中断;:r 只保留原有的显式条目,如果原本一条都没有,就会出现谁都进不去的局面。
/reset 会丢弃自定义权限并按继承设置重建。生产共享目录执行前必须 icacls /save 备份,并确认父级继承设置就是你期望的最终状态。