本文补充下常用的文件、文件夹夺权或者夺取所有者的方法,涉及Takeown、Cacls、Icacls用法。
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[/Ssystem[/Uusername[/P[password]]]] /Ffilename[/A][/R[/Dprompt]] 描述: 该工具以重新分配文件所有权的方式允许管理员重新获取先前被拒绝访问的文件访问权。 参数列表: /Ssystem指定要连接到的远程系统。 /U[domain\]user指定用户上下文,命令在此上下文中执行。 /P[password]指定给定用户上下文的密码。如果省略,提示输入。 /Ffilename指定文件名或目录名模式。可以用通配符"*"指定模式。允许共享名\文件名。 /A将所有权给于管理员组,而不是当前用户。 /R递归:指示工具运行于指定的目录和子目录里的文件上。 /Dprompt当前用户在一个目录里没有“列出文件夹”权限时,使用默认答案。当在子目录里进行递归(/R)操作时会发生这种情况。用有效值"Y"获取所有权或用"N"跳过。 /SKIPSL不遵循符号链接。仅适用于/R。 /显示此帮助消息。 注意:1)如果未指定/A,文件所有权会将被授予当前登录的用户。 2)不支持用"?"和"*"的混合模式。 3)/D用于抑制确认提示。 示例: TAKEOWN/ TAKEOWN/Flostfile TAKEOWN/F\\system\share\lostfile/A TAKEOWN/Fdirectory/R/DN TAKEOWN/Fdirectory/R/A TAKEOWN/F* TAKEOWN/FC:\Windows\System32\acme.exe TAKEOWN/F%windir%\*.txt TAKEOWN/Ssystem/FMyShare\Acme*.doc TAKEOWN/Ssystem/Uuser/FMyShare\MyBinary.dll TAKEOWN/Ssystem/Udomain\user/Ppassword/Fshare\filename TAKEOWN/Ssystem/Uuser/Ppassword/FDoc\Report.doc/A TAKEOWN/Ssystem/Uuser/Ppassword/FMyshare\* TAKEOWN/Ssystem/Uuser/Ppassword/FHome\Logon/R TAKEOWN/Ssystem/Uuser/Ppassword/FMyshare\directory/R/A
C:\Windows\system32>cacls/? 注意:不推荐使用Cacls,请使用Icacls。 显示或者修改文件的访问控制列表(ACL) CACLSfilename[/T][/M][/L][/S[:SDDL]][/E][/C][/Guser:perm] [/Ruser[...]][/Puser:perm[...]][/Duser[...]] filename显示ACL。 /T更改当前目录及其所有子目录中指定文件的ACL。 /L对照目标处理符号链接本身 /M更改装载到目录的卷的ACL /S显示DACL的SDDL字符串。 /S:SDDL使用在SDDL字符串中指定的ACL替换ACL。(/E、/G、/R、/P或/D无效)。 /E编辑ACL而不替换。 /C在出现拒绝访问错误时继续。 /Guser:perm赋予指定用户访问权限。 Perm可以是:R读取 W写入 C更改(写入) F完全控制 /Ruser撤销指定用户的访问权限(仅在与/E一起使用时合法)。 /Puser:perm替换指定用户的访问权限。 Perm可以是:N无 R读取 W写入 C更改(写入) F完全控制 /Duser拒绝指定用户的访问。 在命令中可以使用通配符指定多个文件。 也可以在命令中指定多个用户。 缩写: CI-容器继承。ACE会由目录继承。 OI-对象继承。ACE会由文件继承。 IO-只继承。ACE不适用于当前文件/目录。 ID-已继承。ACE从父目录的ACL继承。
C:\Windows\system32>icacls/? ICACLSname/saveaclfile[/T][/C][/L][/Q] 将匹配名称的文件和文件夹的DACL存储到aclfile中以便将来与/restore一起使用。请注意,未保存SACL、所有者或完整性标签。 ICACLSdirectory[/substituteSidOldSidNew[...]]/restoreaclfile [/C][/L][/Q] 将存储的DACL应用于目录中的文件。 ICACLSname/setowneruser[/T][/C][/L][/Q] 更改所有匹配名称的所有者。该选项不会强制更改所有身份;使用takeown.exe实用程序可实现该目的。 ICACLSname/findsidSid[/T][/C][/L][/Q] 查找包含显式提及SID的ACL的所有匹配名称。 ICACLSname/verify[/T][/C][/L][/Q] 查找其ACL不规范或长度与ACE计数不一致的所有文件。 ICACLSname/reset[/T][/C][/L][/Q] 为所有匹配文件使用默认继承的ACL替换ACL。 ICACLSname[/grant[:r]Sid:perm[...]] [/denySid:perm[...]] [/remove[:g|:d]]Sid[...]][/T][/C][/L][/Q] [/setintegritylevelLevel:policy[...]] /grant[:r]Sid:perm授予指定的用户访问权限。如果使用:r,这些权限将替换以前授予的所有显式权限。如果不使用:r,这些权限将添加到以前授予的所有显式权限。 /denySid: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)-从父容器继承的权限