icacls 是新版工具,适用于 Windows Vista 及更高版本,提供了更强大的权限控制、更细粒度的管理以及更多的操作选项。在 PowerShell 中, 下面是 icacls 命令和 PowerShell 对应命令的对比:
在 PowerShell 中,icacls
命令通常对应于 Get-Acl
、Set-Acl
、Add-AccessControlEntry
和 Remove-AccessControlEntry
等命令。下面是 icacls
命令和 PowerShell 对应命令的对比:
功能 | icacls 命令 |
PowerShell 对应命令 |
---|---|---|
查看文件或文件夹的权限 | icacls <文件路径> |
Get-Acl <文件路径> |
授予用户权限 | icacls <文件路径> /grant <用户>:<权限> |
Add-AccessControlEntry -Path <文件路径> -User <用户> -AccessType <权限> |
撤销用户权限 | icacls <文件路径> /remove <用户> |
Remove-AccessControlEntry -Path <文件路径> -User <用户> |
修改权限 | icacls <文件路径> /grant <用户>:<权限> |
Set-Acl <文件路径> -AclObject (Get-Acl <文件路径> |
备份权限 | icacls <文件路径> /save <文件> /t |
Get-Acl <文件路径> |
恢复权限 | icacls <文件路径> /restore <文件> |
Import-Clixml -Path <文件> |
删除指定文件夹的继承 | icacls <文件路径> /inheritance:r |
Set-Acl <文件路径> -AclObject (Get-Acl <文件路径> |
显示权限详细信息 | icacls <文件路径> /T |
Get-Acl <文件路径> |
说明:
Get-Acl
:用于查看文件或文件夹的权限(类似于icacls
的查看功能)。Set-Acl
:用于设置文件或文件夹的权限,可以结合Add-AccessControlEntry
或Remove-AccessControlEntry
来修改权限。Add-AccessControlEntry
:用于授予用户或组权限。Remove-AccessControlEntry
:用于删除用户或组的权限。Export-Clixml
和Import-Clixml
:用于备份和恢复权限。Remove-AccessControlInheritance
:用于移除权限继承。
示例:
-
查看文件的权限(
icacls
对应Get-Acl
):powershellCopy Codeicacls "C:\example\file.txt"
对应的 PowerShell 命令:
powershellCopy CodeGet-Acl "C:\example\file.txt"
-
授予用户权限(
icacls
对应Add-AccessControlEntry
):powershellCopy Codeicacls "C:\example\file.txt" /grant User:F
对应的 PowerShell 命令:
powershellCopy Code$acl = Get-Acl "C:\example\file.txt" $permission = "User", "FullControl", "Allow" $accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule $permission $acl.AddAccessRule($accessRule) Set-Acl "C:\example\file.txt" $acl
-
删除继承权限(
icacls
对应Set-Acl
和Remove-AccessControlInheritance
):powershellCopy Code$acl = Get-Acl "C:\example\file.txt" $acl.SetAccessRuleProtection($true, $false) # 禁用继承 Set-Acl "C:\example\file.txt" $acl
使用 PowerShell 时,你可以更细粒度地控制文件和文件夹的权限,通过脚本化实现自动化管理。
cacls
和 icacls
在版本上的差异对比表格:
特性 | cacls |
icacls |
---|---|---|
可用操作系统版本 | Windows XP及更早版本 | Windows Vista及之后版本 |
功能定位 | 基本的文件和文件夹权限管理工具 | 高级的文件和文件夹权限管理工具,支持更多功能 |
命令格式 | 简单的命令格式 | 更复杂、更灵活的命令格式 |
权限类型支持 | 基本的权限类型,如 r (读取)、w (写入)、f (完全控制) |
更细粒度的权限控制,包括 D (删除)、M (修改)等 |
继承权限管理 | 不支持继承权限管理 | 支持继承权限管理,可控制权限的继承关系 |
批量操作支持 | 不支持批量修改文件或文件夹权限 | 支持批量修改权限,可操作多个文件或文件夹 |
权限备份/恢复 | 不支持权限备份和恢复 | 支持权限的备份与恢复功能 |
命令的复杂性 | 简单,适合用于快速修改权限 | 更复杂,适用于需要精细控制权限的情况 |
支持的权限映射 | 不支持权限映射 | 支持权限映射,可以将权限从一个文件夹或文件传递到另一个 |
用户/组权限管理 | 基本支持用户和组权限设置 | 支持更细粒度的用户和组权限设置,包括详细的访问控制 |
命令行选项 | 选项较少,仅支持基本的权限操作 | 提供更多的命令选项,如 /grant 、/deny 、/setowner 等 |
总结:
cacls
是一个较老的工具,适用于旧版 Windows 操作系统,提供基本的权限管理功能,功能较为简单。icacls
是新版工具,适用于 Windows Vista 及更高版本,提供了更强大的权限控制、更细粒度的管理以及更多的操作选项。
cacls
和 icacls
都是用于管理 Windows 文件和文件夹权限的命令行工具,但它们有一些重要的差异。以下是它们之间的对比表格:
特性 | cacls |
icacls |
---|---|---|
可用版本 | 旧版(Windows XP及更早版本) | 新版(Windows Vista及之后版本) |
功能 | 用于查看和修改文件和文件夹的权限 | 用于查看、修改、备份和恢复文件夹和文件的权限 |
权限类型 | 只支持简单权限,如 r (读取)、w (写入)、f (完全控制) |
支持更复杂的权限控制,如 D (删除)、M (修改)等 |
支持继承权限 | 不支持继承权限的管理 | 支持继承权限设置,可以管理继承关系 |
权限备份/恢复 | 不支持权限备份和恢复 | 支持权限的备份和恢复功能 |
批量操作支持 | 不支持批量修改权限 | 支持批量修改权限,可以对多个文件/文件夹进行操作 |
支持的命令 | cacls <文件/文件夹> 、cacls <文件/文件夹> /E /P <用户>:<权限> |
icacls <文件/文件夹> 、icacls <文件/文件夹> /grant <用户>:<权限> 等 |
修改权限方式 | 只能修改现有权限 | 可以修改现有权限,也可以删除、备份和恢复权限 |
权限映射支持 | 不支持权限映射 | 支持权限映射,允许通过使用不同的权限来修改文件夹 |
命令复杂度 | 命令较简单,适合基础权限操作 | 命令更复杂,但提供了更多的功能和灵活性 |
支持的用户组和用户 | 基本支持用户组和用户权限控制 | 支持更细粒度的用户和组控制,包括允许对用户/组进行详细的权限分配 |
总结:
cacls
是一个较旧且简单的工具,适合用于一些基础的权限管理,但不支持更复杂的权限配置与继承设置。icacls
是一个功能更强大的工具,适用于较新的 Windows 系统,并且支持复杂的权限管理、权限备份与恢复以及批量操作等功能。
因此,如果您使用的是较新的操作系统,推荐使用 icacls
,它提供了更灵活和强大的功能。
ICACLS 命令语法及功能
1. 保存权限到文件
ICACLS 路径 /save 保存文件 [/T] [/C] [/L] [/Q]
-
功能: 将指定路径下文件/文件夹的 DACL(自主访问控制列表)保存到文件中(不包含 SACL、所有者或完整性标签)。
-
参数:
-
/T
: 递归处理所有子目录和文件。 -
/C
: 忽略错误继续操作。 -
/L
: 操作符号链接本身(而非目标)。 -
/Q
: 静默模式(不显示成功消息)。
-
2. 从文件恢复权限
ICACLS 目录路径 [/substitute 旧SID 新SID [...]] /restore 保存文件 [/C] [/L] [/Q]
-
功能: 将保存的 DACL 应用到指定目录下的文件。
-
参数:
-
/substitute
: 替换 SID(例如旧用户迁移到新用户)。 -
其他参数同上。
-
3. 修改所有者
ICACLS 路径 /setowner 用户 [/T] [/C] [/L] [/Q]
-
功能: 修改指定路径下所有匹配项的所有者(不强制更改所有权,需使用
takeown.exe
强制修改)。 -
参数: 同上。
4. 查找包含特定 SID 的 ACL
ICACLS 路径 /findsid SID [/T] [/C] [/L] [/Q]
-
功能: 查找所有包含显式提及指定 SID 的 ACL 的文件/文件夹。
5. 验证 ACL 规范性
ICACLS 路径 /verify [/T] [/C] [/L] [/Q]
-
功能: 检查 ACL 是否符合规范格式或 ACE 条目数量是否一致。
6. 重置为默认继承权限
ICACLS 路径 /reset [/T] [/C] [/L] [/Q]
-
功能: 将所有匹配项的 ACL 替换为默认继承权限。
7. 授予/拒绝/移除权限
ICACLS 路径 [/grant[:r] SID:权限[...]]
[/deny SID:权限 [...]]
[/remove[:g|:d] SID[...]] [/T] [/C] [/L] [/Q]
[/setintegritylevel 级别:策略[...]]
-
功能: 直接修改权限或设置完整性级别。
-
参数:
-
/grant[:r]
:-
:r
表示替换现有显式权限,否则追加权限。 -
示例:
/grant Administrator:(F)
授予管理员完全控制。
-
-
/deny
: 显式拒绝指定权限(添加拒绝 ACE 并移除相同权限的允许 ACE)。 -
/remove[:g|:d]
:-
:g
移除所有允许权限,:d
移除所有拒绝权限。
-
-
/setintegritylevel
:-
设置完整性级别(
L
低、M
中、H
高),可选继承标记(OI)(CI)
。 -
示例:
/setintegritylevel (CI)(OI)L
对目录应用低完整性级别。
-
-
8. 继承设置
/inheritance:e|d|r
-
功能: 控制权限继承。
-
e
: 启用继承。 -
d
: 禁用继承并复制现有 ACE。 -
r
: 删除所有继承的 ACE。
-
关键参数说明
-
SID 格式:
-
可使用友好名称(如
Administrators
)或数值形式(需以*
开头,如*S-1-5-32-544
)。
-
-
权限 (
perm
) 格式:-
简单权限:
F
(完全控制)、M
(修改)、RX
(读执行)、D
(删除)等。 -
详细权限列表: 逗号分隔,如
(DE,WDAC)
表示删除和修改 DAC。 -
继承标记: 如
(OI)
(对象继承)、(CI)
(容器继承)、(NP)
(不传播继承)等。
-
-
ACE 排序规则:
显式拒绝 → 显式允许 → 继承拒绝 → 继承允许。
示例
icacls c:\windows\* /save AclFile /T
- 将 c:\windows 及其子目录下所有文件的 ACL 保存到 AclFile。
icacls c:\windows\ /restore AclFile
- 从 AclFile 恢复 c:\windows 及其子目录下文件的 ACL。
icacls file.txt /grant Administrator:(D,WDAC)
- 授予管理员对 file.txt 的删除和修改 DAC 权限。
icacls file.txt /grant *S-1-1-0:(D,WDAC)
- 授予 SID 为 S-1-1-0 的用户删除和修改 DAC 权限。
注意事项
-
管理员权限: 修改系统级路径需以管理员身份运行命令提示符。
-
备份 ACL: 操作前建议使用
/save
备份原始权限。 -
符号链接: 使用
/L
操作符号链接本身(默认操作目标)。 -
错误处理: 使用
/C
忽略错误并继续执行。
通过此命令,可精细控制 Windows 系统的文件和目录权限。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
2024-03-05 DNAT 目标网络地址转换(Destination Network Address Translation) 修改正在传输的数据包的目标地址 进行端口映射通常需要使用网络地址转换(NAT)规则或端口转发来实现。New-NetNat 进行配置和管理;Add-NetNatStaticMapping 命令的常用参数和功能分类表;Get-NetNatStaticMapping 命令
2024-03-05 在PowerShell中下载文件是一项常见的任务,可以通过多种方法完成。下面我将介绍使用Invoke-WebRequest、New-Object和Start-BitsTransfer命令来下载文件的方法
2024-03-05 SMB(Server Message Block)协议配置信息的位置
2024-03-05 Windows 操作系统中,Internet 协议版本 4 (TCP/IPv4) 的配置信息通常是保存在注册表中
2024-03-05 科幻:Windows内核攻击是指针对Windows操作系统内核的恶意攻击行为
2024-03-05 科幻故事:Windows内核主动向外攻击
2024-03-05 AI蠕虫是一种虚构的概念,结合了人工智能(AI)和计算机病毒蠕虫(worm)两个概念