查看和修改 NTFS 权限(DACL),支持继承与批量备份恢复。
icacls 显示或修改文件、目录的自由访问控制列表(DACL),替代已弃用的 cacls。它支持授予和拒绝权限、移除 ACE、设置所有者、控制继承,以及用 /save//restore 批量保存和恢复 ACL。常用权限简写为 F 完全控制、M 修改、RX 读取和执行、R 只读、W 只写、D 删除;目录常用 (OI)(CI) 让文件和子目录继承。
边界:icacls 只管 NTFS 的 DACL,不管共享权限、所有者(用 takeown 或 /setowner)以及加密。attrib 的只读/隐藏也不是权限。显式拒绝(/deny)优先于允许,且会移除同一 SID 的相同显式允许项。/t 会作用于整棵树,/reset 会把 ACL 重置为继承值,二者叠加很容易把管理员或服务账号锁在门外。
Windows Vista/Server 2008 起内置,Windows 10/11 与 Server 2016+ 语法基本一致,但输出和账号名随系统语言本地化。PowerShell 中建议用 Get-Acl/Set-Acl 做程序化处理;icacls 是外部程序,在 PowerShell 中仍可调用。
影响范围 / 先备份 / 如何回滚:/t、/reset、/inheritancelevel:r、/deny 会影响目标目录及全部子项,可能让用户、服务甚至管理员失去访问。执行前先 icacls 目录 /save 备份文件 /t /c 保存 DACL,并在小目录上验证恢复流程;回滚用同一基准目录下的 /restore 备份文件,若已被锁在门外,用管理员 CMD 先 takeown 再 /grant 临时恢复,确认后再恢复原 ACL。
# 1. 查看目录当前的 DACL 和继承状态
C:\> icacls C:\data
# 2. 授予域用户对目录及子项的修改权限
C:\> icacls C:\data /grant "DOMAIN\user:(OI)(CI)M" /T
# 3. 替换该用户原有的显式允许项,只保留读和执行
C:\> icacls C:\data /grant:r "DOMAIN\user:(OI)(CI)RX" /T
# 4. 移除某用户的全部显式 ACE
C:\> icacls C:\data /remove "DOMAIN\user" /T
# 5. 显式拒绝写权限,注意拒绝优先于允许
C:\> icacls C:\data /deny "DOMAIN\user:(W)" /T
# 6. 断开继承并移除继承来的 ACE,只保留显式权限
C:\> icacls C:\data /inheritancelevel:r
# 7. 批量保存 ACL 到文件,再在相同基准目录恢复
C:\> icacls C:\data\* /save C:\backup\data-acl.txt /T /C
C:\> icacls C:\data\ /restore C:\backup\data-acl.txt /C
/grant:r 会替换该 SID 原有的显式允许项,不加 :r 才是追加;升级权限或降权前先想清楚是覆盖还是累加。/deny 会移除同一权限的显式允许(官方说明);要撤销拒绝,用 /remove:d 而不是再 /grant。/t 加 /reset 或 /inheritancelevel:r 会让整棵子树改权,可能锁死服务账号;先 /save,在小目录验证,再分批执行。/inheritancelevel:r 只保留显式 ACE,若目录原本完全靠继承,执行后可能只剩所有者能访问。Everyone 等名称可能不同;用 *S-1-... 形式的 SID 更稳定。/save 与 /restore 的路径相对调用目录解析;恢复时在同一基准目录执行,移动过位置或删除过文件会报错,/c 可跳过错误继续。合上页面,先回答,再展开对照。
/grant 和 /grant:r 的区别是什么?/reset /t 前应该做哪两件事?:r 是追加显式允许,:r 会替换该 SID 原有的显式允许。/remove:d 移除拒绝项,而不是再授予允许。/save 备份 ACL,并在小目录上验证恢复流程。
小程序版
微信扫码,随时查命令