Windows命令批量修改文件所属用户及用户访问权限

By | 2012 年 09 月 02 日

takeown 命令(修改文件所属用户):

——————————————————————————–
E:\pic\运动会>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” 跳过。

/?                           显示此帮助消息。
注意: 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\foo.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

cacls命令(修改用户文件访问权限):

——————————————————————————–
E:\pic\运动会>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 继承。

Icacls命令(修改用户文件访问权限),这个命令貌似功能更强大些:

——————————————————————————–
C:\Users\Administrator>Icacls
ICACLS name /save aclfile [/T] [/C] [/L] [/Q]
将匹配名称的文件和文件夹的 DACL 存储到 aclfile 中以便将来与
/restore 一起使用。请注意,未保存 SACL、所有者或完整性标签。

ICACLS directory [/s stitute 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]
[/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) – 从父容器继承的权限

示例:

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 的权限。

 

实例:
E:\pic\运动会文件目录下的照片无法访问,发现没有所属用户,也没用访问权限,完全打不开,执行以下两个命令即可解决:

——————————————————————————–
E:\pic\运动会>takeown /f * /a /r

成功: 此文件(或文件夹): “E:\pic\运动会\10_yundonghui.jpg” 现在由管理员组所有。
成功: 此文件(或文件夹): “E:\pic\运动会\10_yundonghui2.jpg” 现在由管理员组所有。
成功: 此文件(或文件夹): “E:\pic\运动会\1_yundonghui.jpg” 现在由管理员组所有。
成功: 此文件(或文件夹): “E:\pic\运动会\2_yundonghui.jpg” 现在由管理员组所有。
成功: 此文件(或文件夹): “E:\pic\运动会\3_yundonghui.jpg” 现在由管理员组所有。
成功: 此文件(或文件夹): “E:\pic\运动会\4_yundonghui.jpg” 现在由管理员组所有。
成功: 此文件(或文件夹): “E:\pic\运动会\5_yundonghui.jpg” 现在由管理员组所有。
成功: 此文件(或文件夹): “E:\pic\运动会\6_yundonghui.jpg” 现在由管理员组所有。
成功: 此文件(或文件夹): “E:\pic\运动会\7_yundonghui.jpg” 现在由管理员组所有。
成功: 此文件(或文件夹): “E:\pic\运动会\8_yundonghui.jpg” 现在由管理员组所有。
成功: 此文件(或文件夹): “E:\pic\运动会\9_yundonghui.jpg” 现在由管理员组所有。
成功: 此文件(或文件夹): “E:\pic\运动会\IMG_0289.JPG” 现在由管理员组所有。
成功: 此文件(或文件夹): “E:\pic\运动会\Thumbs.db” 现在由管理员组所有。
成功: 此文件(或文件夹): “E:\pic\运动会\yundonghui_me.jpg” 现在由管理员组所有。

E:\pic\运动会>cacls * /G administrator:r /e /c /t
处理的文件: E:\pic\运动会\10_yundonghui.jpg
处理的文件: E:\pic\运动会\10_yundonghui2.jpg
处理的文件: E:\pic\运动会\1_yundonghui.jpg
处理的文件: E:\pic\运动会\2_yundonghui.jpg
处理的文件: E:\pic\运动会\3_yundonghui.jpg
处理的文件: E:\pic\运动会\4_yundonghui.jpg
处理的文件: E:\pic\运动会\5_yundonghui.jpg
处理的文件: E:\pic\运动会\6_yundonghui.jpg
处理的文件: E:\pic\运动会\7_yundonghui.jpg
处理的文件: E:\pic\运动会\8_yundonghui.jpg
处理的文件: E:\pic\运动会\9_yundonghui.jpg
处理的文件: E:\pic\运动会\IMG_0289.JPG
处理的文件: E:\pic\运动会\Thumbs.db
处理的文件: E:\pic\运动会\yundonghui_me.jpg

E:\pic\运动会>

发表评论

电子邮件地址不会被公开。 必填项已用*标注