icacls 是什么
icacls 在命令行查看文件与目录的访问控制列表,输出里包含被授权的账号、权限掩码和继承标记。相比图形界面的属性对话框,它更快、输出可复制、也便于脚本化,是权限审计与排错的首选工具。
基本信息
| 适用平台 | Windows(系统自带程序,CMD 与 PowerShell 均可调用) |
|---|---|
| 语法 | icacls 路径 [/T 递归] [/C 忽略错误继续] [/Q 精简输出] [/save 文件名] |
| 继承标记 | (I) 继承而来、(OI) 对象继承、(CI) 容器继承 |
| 权限掩码 | F 完全控制、M 修改、RX 读取与执行、W 写入、R 读取 |
| 结构化替代 | Get-Acl 或 /save 导出的 SDDL,便于程序解析 |
典型使用场景
- 排查“为什么某个账号访问不了这个目录”
- 权限审计:检查共享目录是否存在过宽的授权
- 目录迁移前记录原始权限,迁移后逐项比对
- 批量确认同层级目录的权限是否统一继承自父级
- 安全事件后核实可疑账号是否被授予了过高权限
常用示例
常用示例
REM 查看单个目录的 ACL
icacls D:\Share
REM 递归查看,忽略错误继续并精简输出
icacls D:\Share /T /C /Q
REM 查看单个文件的权限
icacls D:\Share\report.xlsx
REM 导出 SDDL 留档,便于跨机比对
icacls D:\Share /save D:\acl\share.txt /T
REM 结构化取用权限条目
powershell -c "(Get-Acl D:\Share).Access | Select-Object IdentityReference, FileSystemRights, AccessControlType"输出读法
| 字段 | 含义 | 要留意的点 |
|---|---|---|
| 账号或组 | 被授权的身份 | 组授权要结合组成员才能判断实际权限 |
| 括号内标记 | (I) 继承、(OI)(CI) 继承方向 | 没有 (I) 说明是本层显式设置 |
| 权限掩码 | F 完全、M 修改、RX 读取执行、W 写入 | 字母含义要对照文档,别凭印象 |
| 拒绝条目 | 显式拒绝优先于所有允许 | 常常就是问题的直接原因 |
| 处理统计 | 成功与失败的文件数 | 递归时据此判断结果是否完整 |
排查权限问题先盯两点:谁被拒绝、这条权限继承自哪一层。这两条信息都在 icacls 输出里,不必一层层点开图形属性对话框。
中文系统下 icacls 的输出文本是本地化的,用 findstr 匹配英文关键字的脚本在国内环境会失效。需要程序化解析时改用 Get-Acl 或 /save 导出的 SDDL。