icacls 是新版工具,适用于 Windows Vista 及更高版本,提供了更强大的权限控制、更细粒度的管理以及更多的操作选项。在 PowerShell 中, 下面是 icacls 命令和 PowerShell 对应命令的对比:

在 PowerShell 中,icacls 命令通常对应于 Get-AclSet-AclAdd-AccessControlEntryRemove-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:用于移除权限继承。

示例:

  1. 查看文件的权限icacls 对应 Get-Acl):

    powershellCopy Code
    icacls "C:\example\file.txt"

    对应的 PowerShell 命令:

    powershellCopy Code
    Get-Acl "C:\example\file.txt"
  2. 授予用户权限icacls 对应 Add-AccessControlEntry):

    powershellCopy Code
    icacls "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
  3. 删除继承权限icacls 对应 Set-AclRemove-AccessControlInheritance):

    powershellCopy Code
    $acl = Get-Acl "C:\example\file.txt"
    $acl.SetAccessRuleProtection($true, $false)  # 禁用继承
    Set-Acl "C:\example\file.txt" $acl

使用 PowerShell 时,你可以更细粒度地控制文件和文件夹的权限,通过脚本化实现自动化管理。


caclsicacls 在版本上的差异对比表格:

特性 cacls icacls
可用操作系统版本 Windows XP及更早版本 Windows Vista及之后版本
功能定位 基本的文件和文件夹权限管理工具 高级的文件和文件夹权限管理工具,支持更多功能
命令格式 简单的命令格式 更复杂、更灵活的命令格式
权限类型支持 基本的权限类型,如 r (读取)、w (写入)、f (完全控制) 更细粒度的权限控制,包括 D (删除)、M (修改)等
继承权限管理 不支持继承权限管理 支持继承权限管理,可控制权限的继承关系
批量操作支持 不支持批量修改文件或文件夹权限 支持批量修改权限,可操作多个文件或文件夹
权限备份/恢复 不支持权限备份和恢复 支持权限的备份与恢复功能
命令的复杂性 简单,适合用于快速修改权限 更复杂,适用于需要精细控制权限的情况
支持的权限映射 不支持权限映射 支持权限映射,可以将权限从一个文件夹或文件传递到另一个
用户/组权限管理 基本支持用户和组权限设置 支持更细粒度的用户和组权限设置,包括详细的访问控制
命令行选项 选项较少,仅支持基本的权限操作 提供更多的命令选项,如 /grant/deny/setowner

总结:

  • cacls 是一个较老的工具,适用于旧版 Windows 操作系统,提供基本的权限管理功能,功能较为简单。
  • icacls 是新版工具,适用于 Windows Vista 及更高版本,提供了更强大的权限控制、更细粒度的管理以及更多的操作选项。

caclsicacls 都是用于管理 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. 保存权限到文件

cmd
复制
ICACLS 路径 /save 保存文件 [/T] [/C] [/L] [/Q]
  • 功能: 将指定路径下文件/文件夹的 DACL(自主访问控制列表)保存到文件中(不包含 SACL、所有者或完整性标签)。

  • 参数:

    • /T: 递归处理所有子目录和文件。

    • /C: 忽略错误继续操作。

    • /L: 操作符号链接本身(而非目标)。

    • /Q: 静默模式(不显示成功消息)。


2. 从文件恢复权限

cmd
复制
ICACLS 目录路径 [/substitute 旧SID 新SID [...]] /restore 保存文件 [/C] [/L] [/Q]
  • 功能: 将保存的 DACL 应用到指定目录下的文件。

  • 参数:

    • /substitute: 替换 SID(例如旧用户迁移到新用户)。

    • 其他参数同上。


3. 修改所有者

cmd
复制
ICACLS 路径 /setowner 用户 [/T] [/C] [/L] [/Q]
  • 功能: 修改指定路径下所有匹配项的所有者(不强制更改所有权,需使用 takeown.exe 强制修改)。

  • 参数: 同上。


4. 查找包含特定 SID 的 ACL

cmd
复制
ICACLS 路径 /findsid SID [/T] [/C] [/L] [/Q]
  • 功能: 查找所有包含显式提及指定 SID 的 ACL 的文件/文件夹。


5. 验证 ACL 规范性

cmd
复制
ICACLS 路径 /verify [/T] [/C] [/L] [/Q]
  • 功能: 检查 ACL 是否符合规范格式或 ACE 条目数量是否一致。


6. 重置为默认继承权限

cmd
复制
ICACLS 路径 /reset [/T] [/C] [/L] [/Q]
  • 功能: 将所有匹配项的 ACL 替换为默认继承权限。


7. 授予/拒绝/移除权限

cmd
复制
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. 继承设置

cmd
复制
/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 排序规则:
    显式拒绝 → 显式允许 → 继承拒绝 → 继承允许。


示例

cmd
复制
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 权限。

注意事项

  1. 管理员权限: 修改系统级路径需以管理员身份运行命令提示符。

  2. 备份 ACL: 操作前建议使用 /save 备份原始权限。

  3. 符号链接: 使用 /L 操作符号链接本身(默认操作目标)。

  4. 错误处理: 使用 /C 忽略错误并继续执行。

通过此命令,可精细控制 Windows 系统的文件和目录权限。


 

posted @   suv789  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 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)两个概念
点击右上角即可分享
微信分享提示