Takeown、Cacls、Icacls-文件、文件夹夺权用法

本文详细介绍如何使用takeown、cacls和icacls等命令行工具在Windows系统中管理和修改文件及文件夹的权限,包括获取所有权、修改访问控制列表(ACL)、设置用户权限等关键操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

常用示例如下:

takeown   /f 文件名          

获取该文件的所属权

takeown /f /r /d n 文件夹      

获取整个文件夹及其下面子目录文件的所属权

takeown /f * /a /r /d y

强制将当前目录下的所有文件及文件夹、子文件夹下的所有者更改为管理员组(administrators)

cacls d:\file1\*.* /T /G administrators:F

将所有d:\file1目录下的文件、子文件夹的NTFS权限修改为仅管理员组(administrators)完全控制(删除原有NTFS权限设置)

cacls d:\file1\*.* /T /E /G administrators:F

在原有d:\file1目录下的文件、子文件夹的NTFS权限上添加管理员组(administrators)完全控制权限(不删除原有NTFS权限设置):

icacls c:\windows\* /save AclFile /T

将 c:\windows 及其子目录下所有文件的ACL 保存到 AclFile。

icacls c:\windows\ /restore AclFile

将还原 c:\windows 及其子目录下存在的 AclFile 内所有文件的 ACL。

icacls file /grant Administrator:(D,WDAC)

将授予用户对文件删除和写入 DAC 的管理员权限。

icacls file /grant *S-1-1-0:(D,WDAC)

将授予由 sid S-1-1-0 定义的用户对文件删除和写入 DAC 的权限。


C:\Windows\system32>takeown /?
TAKEOWN [/S system [/U username [/P [password]]]]
        /F filename [/A] [/R [/D prompt]]
描述:
    该工具以重新分配文件所有权的方式允许管理员重新获取先前被拒绝访问的文件访问权。
参数列表:
    /S           system          指定要连接到的远程系统。
    /U           [domain\]user   指定用户上下文,命令在此上下文中执行。
    /P           [password]      指定给定用户上下文的密码。如果省略,提示输入。
    /F           filename        指定文件名或目录名模式。可以用通配符 "*"指定模式。允许共享名\文件名。
    /A                           将所有权给于管理员组,而不是当前用户。
    /R                           递归: 指示工具运行于指定的目录和子目录里的文件上。
    /D           prompt          当前用户在一个目录里没有“列出文件夹”权限时,使用默认答案。当在子目录里进行递归 (/R) 操作时会发生这种情况。用有效值 "Y" 获取所有权或用 "N" 跳过。
    /SKIPSL                      不遵循符号链接。仅适用于 /R。
    /?                           显示此帮助消息。
    注意: 1) 如果未指定 /A,文件所有权会将被授予当前登录的用户。
          2) 不支持用 "?" 和 "*" 的混合模式。
          3) /D 用于抑制确认提示。
示例:
    TAKEOWN /?
    TAKEOWN /F lostfile
    TAKEOWN /F \\system\share\lostfile /A
    TAKEOWN /F directory /R /D N
    TAKEOWN /F directory /R /A
    TAKEOWN /F *
    TAKEOWN /F C:\Windows\System32\acme.exe
    TAKEOWN /F %windir%\*.txt
    TAKEOWN /S system /F MyShare\Acme*.doc
    TAKEOWN /S system /U user /F MyShare\MyBinary.dll
    TAKEOWN /S system /U domain\user /P password /F share\filename
    TAKEOWN /S system /U user /P password /F Doc\Report.doc /A
    TAKEOWN /S system /U user /P password /F Myshare\*
    TAKEOWN /S system /U user /P password /F Home\Logon /R
    TAKEOWN /S system /U user /P password /F Myshare\directory /R /A
 

C:\Windows\system32>cacls /?
 注意: 不推荐使用 Cacls,请使用 Icacls。
 显示或者修改文件的访问控制列表(ACL)
 CACLS filename [/T] [/M] [/L] [/S[:SDDL]] [/E] [/C] [/G user:perm]
        [/R user [...]] [/P user:perm [...]] [/D user [...]]
    filename      显示 ACL。
    /T            更改当前目录及其所有子目录中指定文件的 ACL。
    /L            对照目标处理符号链接本身
    /M            更改装载到目录的卷的 ACL
    /S            显示 DACL 的 SDDL 字符串。
    /S:SDDL       使用在 SDDL 字符串中指定的 ACL 替换 ACL。(/E、/G、/R、/P 或 /D 无效)。
    /E            编辑 ACL 而不替换。
    /C            在出现拒绝访问错误时继续。
    /G user:perm  赋予指定用户访问权限。
                  Perm 可以是: R  读取
                               W  写入
                               C  更改(写入)
                               F  完全控制
    /R user       撤销指定用户的访问权限(仅在与 /E 一起使用时合法)。
    /P user:perm  替换指定用户的访问权限。
                  Perm 可以是: N  无
                               R  读取
                               W  写入
                               C  更改(写入)
                               F  完全控制
    /D user       拒绝指定用户的访问。
 在命令中可以使用通配符指定多个文件。
 也可以在命令中指定多个用户。
缩写:
    CI - 容器继承。ACE 会由目录继承。
    OI - 对象继承。ACE 会由文件继承。
    IO - 只继承。ACE 不适用于当前文件/目录。
    ID - 已继承。ACE 从父目录的 ACL 继承。

C:\Windows\system32>icacls /?
ICACLS name /save aclfile [/T] [/C] [/L] [/Q]
    将匹配名称的文件和文件夹的 DACL 存储到 aclfile 中以便将来与 /restore 一起使用。请注意,未保存 SACL、所有者或完整性标签。
ICACLS directory [/substitute SidOld SidNew [...]] /restore aclfile
                 [/C] [/L] [/Q]
    将存储的 DACL 应用于目录中的文件。
ICACLS name /setowner user [/T] [/C] [/L] [/Q]
    更改所有匹配名称的所有者。该选项不会强制更改所有身份;使用 takeown.exe 实用程序可实现该目的。
ICACLS name /findsid Sid [/T] [/C] [/L] [/Q]
    查找包含显式提及 SID 的 ACL 的所有匹配名称。
ICACLS name /verify [/T] [/C] [/L] [/Q]
    查找其 ACL 不规范或长度与 ACE计数不一致的所有文件。
ICACLS name /reset [/T] [/C] [/L] [/Q]
    为所有匹配文件使用默认继承的 ACL 替换 ACL。
ICACLS name [/grant[:r] Sid:perm[...]]
       [/deny Sid:perm [...]]
       [/remove[:g|:d]] Sid[...]] [/T] [/C] [/L] [/Q]
       [/setintegritylevel Level:policy[...]]
    /grant[:r] Sid:perm 授予指定的用户访问权限。如果使用 :r,这些权限将替换以前授予的所有显式权限。如果不使用 :r,这些权限将添加到以前授予的所有显式权限。
    /deny Sid:perm 显式拒绝指定的用户访问权限。
        将为列出的权限添加显式拒绝 ACE,并删除所有显式授予的权限中的相同权限。
    /remove[:[g|d]] Sid 删除 ACL 中所有出现的 SID。使用
        :g,将删除授予该 SID 的所有权限。使用:d,将删除拒绝该 SID 的所有权限。
    /setintegritylevel [(CI)(OI)]级别将完整性 ACE 显式
        添加到所有匹配文件。要指定的级别为以下级别之一:
             L[ow]
             M[edium]
             H[igh]
        完整性 ACE 的继承选项可以优先于级别,但只应用于目录。
    /inheritance:e|d|r
        e - 启用继承
        d - 禁用继承并复制 ACE
        r - 删除所有继承的 ACE
注意:
    Sid 可以采用数字格式或友好的名称格式。如果给定数字格式,那么请在 SID 的开头添加一个 *。
    /T 指示在以该名称指定的目录下的所有匹配文件/目录上执行此操作。
    /C 指示此操作将在所有文件错误上继续进行。仍将显示错误消息。
    /L 指示此操作在符号链接本身而不是其目标上执行。
    /Q 指示 icacls 应该禁止显示成功消息。
    ICACLS 保留 ACE 项的规范顺序:
            显式拒绝
            显式授予
            继承的拒绝
            继承的授予
    perm 是权限掩码,可以指定两种格式之一:
        简单权限序列:
                N - 无访问权限
                F - 完全访问权限
                M - 修改权限
                RX - 读取和执行权限
                R - 只读权限
                W - 只写权限
                D - 删除权限
        在括号中以逗号分隔的特定权限列表:
                DE - 删除
                RC - 读取控制
                WDAC - 写入 DAC
                WO - 写入所有者
                S - 同步
                AS - 访问系统安全性
                MA - 允许的最大值
                GR - 一般性读取
                GW - 一般性写入
                GE - 一般性执行
                GA - 全为一般性
                RD - 读取数据/列出目录
                WD - 写入数据/添加文件
                AD - 附加数据/添加子目录
                REA - 读取扩展属性
                WEA - 写入扩展属性
                X - 执行/遍历
                DC - 删除子项
                RA - 读取属性
                WA - 写入属性
        继承权限可以优先于每种格式,但只应用于
        目录:
                (OI) - 对象继承
                (CI) - 容器继承
                (IO) - 仅继承
                (NP) - 不传播继承
                (I) - 从父容器继承的权限

 

欢迎关注:yanxishe
欢迎关注:小温研习社
### 可能的原因分析 在处理 `takeown` `icacls` 命令时,如果遇到错误提示“系统找不到指定的文件”或“拒绝访问”,通常可能由以下几个原因引起: 1. 权限不足:运行这些命令需要管理员权限。如果没有以管理员身份运行命令提示符,则可能导致权限被拒。 2. 路径问题:目标文件或目录路径可能存在拼写错误或者不可达的情况。 3. 文件系统损坏:某些情况下,文件系统的元数据可能出现问题,导致无法正常操作特定文件或目录。 针对上述情况的具体解决方案如下: ### 解决方案 #### 方法一:确保以管理员身份运行命令提示符 确认当前使用的命令提示符是以管理员身份启动的。可以通过右键点击“开始菜单”中的“命令提示符”选项并选择“以管理员身份运行”。如果不具备足够的权限,即使输入了正确的命令也无法成功执行[^1]。 #### 方法二:验证路径准确性 仔细检查所提供的文件或目录路径是否完全正确无误,并注意区分大小写字母以及处理好其中含有的空格字符等问题。对于含有空格的路径名应加上双引号来包裹整个字符串表示法。 #### 方法三:修复文件所有权与权限设置 可以尝试先使用以下命令重新获取对象的所有权再调整其访问控制列表(ACLs): ```batch :: 获取文件/文件夹的所有权 takeown /f "C:\Path\To\FileOrFolder" /a /r /d y :: 修改NTFS安全权限允许用户读取执行 icacls "C:\Path\To\FileOrFolder" /grant Users:F /t /q /c ``` 这里 `/f` 参数指定了要更改的目标位置;`/a` 表示将所有者更改为 Administrators 组成员而不是单独某个账户;`/r` 是递归子级联应用到所有的子项上;而最后那个参数则会自动接受默认的回答即“Yes”。 另外还可以利用类似这样的语句赋予内置用户组充分的权利以便能够顺利地完成后续动作[^3]: ```batch icacls "%windir%\winsxs\temp\PendingRenames" /grant "BUILTIN\Users:(RX)" ``` 此例子特别适用于解决因待重命名队列里存在残留记录而导致的各种奇怪现象之一部分情形下有效果。 #### 方法四:扫描磁盘查找潜在错误 有时物理存储介质本身的状态不佳也会引发类似的异常状况。因此建议定期运用chkdsk工具检测硬盘健康状态: ```batch chkdsk C: /f /r /x ``` 这条指令会对选定分区进行全面深入的数据一致性核查同时还试图恢复受损扇区的内容。 ### 总结 综上所述,当面临Windows环境下关于takeownicacls的操作失败且伴随有诸如“系统找不到指定的文件。”或是“拒绝访问.”之类反馈的时候,可以从提升执行环境特权等级、校正涉及资源定位描述词串精确度这两个方面入手排查故障根源所在。与此同时也要留意底层硬件设施层面是否存在隐患因素干扰正常使用体验效果[^1]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值