命令是干什么的
icacls 是 Windows 的命令行 ACL 工具:/grant 给账号追加授权,/grant:r 替换该账号已有授权,/remove 移除账号条目,/T 递归子目录,/save 与 /restore 用于留档与回滚。它与资源管理器“安全”选项卡等价但可脚本化,是批量调整共享目录权限的主力命令。掩码里的 (OI)(CI) 把权限继承到子目录与文件。
基本信息
| 适用平台 | Windows Vista / Server 2008 及以后(系统内置) |
|---|---|
| 权限要求 | 对目标对象有更改权限的资格,通常为所有者或管理员 |
| 语法 | icacls 路径 /grant[:r] 账号:掩码 [/T];icacls 路径 /remove 账号 [/T] |
| 常用掩码 | F 完全、M 修改、RX 读取执行、R 只读;(OI)(CI) 表示继承到文件与子目录 |
| 留档命令 | icacls D:\Share /save acl.txt /T;需要时 icacls D:\ /restore acl.txt |
典型使用场景
- 共享目录给新项目组开修改权限,或收回离职人员权限
- 数据迁移后批量修正继承关系,给整棵目录树统一授权
- 权限事故回滚:改动前 /save 留档,出问题时 /restore 还原
- 排查“能读不能写”:用 icacls 路径 看实际生效的 ACE 列表
- 部署脚本里统一设置目录权限,避免依赖人工点界面
常用示例
常用示例
icacls D:\Share # 查看当前 ACL 条目
icacls D:\Share /grant "DOMAIN\user:(OI)(CI)M" /T # 追加修改权限并继承
icacls D:\Share /grant:r "DOMAIN\user:(OI)(CI)M" # 替换已有授权,避免叠加
icacls D:\Share /remove "DOMAIN\user" /T # 移除该账号全部条目
icacls D:\Share /save acl.txt /T # 授权前先留档
icacls D:\ /restore acl.txt # 需要时回滚权限掩码读法
| 掩码 | 含义 | 使用建议 |
|---|---|---|
| F | 完全控制 | 仅管理员与所有者,业务账号慎用 |
| M | 修改(含删除) | 共享目录读写场景的常用档 |
| RX | 读取与执行 | 只读访问程序目录 |
| R | 只读 | 纯查阅数据的账号 |
| (OI)(CI) | 对象继承与容器继承 | 让权限自动下发到文件与子目录 |
| /D | 拒绝 | 慎用:拒绝优先级最高,容易形成难排查的权限冲突 |
/grant 是叠加语义:重复执行会在同一账号上累积多条 ACE,表现为权限越授越大;重复授权场景一律改用 /grant:r。
递归改权限影响面大:先 icacls /save 留档,再在测试目录验证参数,最后全量执行。/remove 写错账号会直接掐断业务访问。