首页 > 代码库 > DOS命令——calcs和icacls
DOS命令——calcs和icacls
有些人反对使用 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 name /save aclfile [/T] [/C] [/L] [/Q]
将所有匹配名称的 ACL 存储到 aclfile 中以便将来用于 /restore。
ICACLS directory [/substitute SidOld SidNew [...]] /restore aclfile
[/C] [/L] [/Q]
将存储的 ACL 应用于目录中的文件。
ICACLS name /setowner user [/T] [/C] [/L] [/Q]
更改所有匹配名称的所有者。
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 是权限掩码,可以两种格式之一指定:
简单权限序列:
F - 完全访问权限
M - 修改权限
RX - 读取和执行权限
R - 只读权限
W - 只写权限
在括号中以逗号分隔的特定权限列表:
D - 删除
RC - 读取控制
WDAC - 写入 DAC
WO - 写入所有者
S - 同步
AS - 访问系统安全性
MA - 允许的最大值
GR - 一般性读取
GW - 一般性写入
GE - 一般性执行
GA - 全为一般性
RD - 读取数据/列出目录
WD - 写入数据/添加文件
AD - 附加数据/添加子目录
REA - 读取扩展属性
WEA - 写入扩展属性
X - 执行/遍历
DC - 删除子项
RA - 读取属性
WA - 写入属性
继承权限可以优先于每种格式,但只应用于
目录:
(OI) - 对象继承
(CI) - 容器继承
(IO) - 仅继承
(NP) - 不传播继承
示例:
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 的权限
======================================================================
1、强制将当前目录下的所有文件及文件夹、子文件夹下的所有者更改为管理员组(administrators)命令:
takeown /f * /a /r /d y2、将所有d:\documents目录下的文件、子文件夹的NTFS权限修改为仅管理员组(administrators)完全控制(删除原有所有NTFS权限设置):
cacls d:\documents\*.* /T /G administrators:F
3、在原有d:\documents目录下的文件、子文件夹的NTFS权限上添加管理员组(administrators)完全控制权限(并不删除原有所有NTFS权限设置):
cacls d:\documents\*.* /T /E /G administrators:F
4、取消管理员组(administrators)完全控制权限(并不删除原有所有NTFS权限设置):
cacls \\Server\Documents\%username%\我的文档 /t /e /r "mddq\domain admins"
cacls \\Server\Documents\%username%\桌面 /t /e /r "mddq\domain admins"
=================================================================
刪除一個卷訪問權限的方法:
直接把該卷 的 "高級安全設置" 窗口的 "權限" 選顯卡列出的權限全部刪除即可.
恢復訪問權限步驟:
01. 選中被刪除訪問權限的本地磁盤(卷).
02. 按鼠標右鍵彈出上下文菜單.
03. 選擇 "屬性(R)" 菜單項.
04. 在彈出的 "本地磁盤(E:) 屬性" 窗口中選擇 "安全" 選項卡.
注:
E: 為虛擬機中被刪除訪問權限的卷名.
05. 單擊 "高級(V)" 按鈕.
06. 彈出 "本地磁盤 (E:) 的高級安全設置" 窗口.
07. 選擇 "所有者" 選項卡.
08. 單擊 "編輯(E)..." 按鈕(需要 UAC 提升權限).
09. 在 "將所有者更為(O)" 標簽下, 選擇 "Administrators" (組) 為所有者.
10. 單擊 "本地磁盤 (E:) 的高級安全設置" 窗口的 "確定" 按鈕.
11. 出現 "如果您剛獲得此對象的所有權, 在查看或更改權限之前, 您將需要關閉并重新打開此對象的屬性" 消息框後, 單擊 "確定" 按鈕.
12. 再次單擊 "本地磁盤 (E:) 的高級安全設置" 窗口的 "確定" 按鈕.
13. 關閉 "本地磁盤(E:) 屬性" 窗口.
15. 以管理員身份運行命令提示符并執行下面的命令:
cacls e:\ /s:"D:(A;;FA;;;BA)(A;OICIIO;GA;;;BA)(A;;FA;;;SY)(A;OICIIO;GA;;;SY)(A;;0x1301bf;;;AU)(A;OICIIO;SDGXGWGR;;;AU)(A;;0x1200a9;;;BU)(A;OICIIO;GXGR;;;BU)"
注:
如果是系統卷(指安裝了 Windows 的卷), 那么請執行下列命令:
cacls e:\ /s:"D:PAI(A;;FA;;;BA)(A;OICIIO;GA;;;BA)(A;;FA;;;SY)(A;OICIIO;GA;;;SY)(A;OICI;0x1200a9;;;BU)(A;OICIIO;SDGXGWGR;;;AU)(A;;LC;;;AU)"
16. 執行命令以回復默認的所有者 SYSTEM.
icacls e: /setowner system
注:
如果該卷是系統卷(指安裝了 Windows 的卷), 那么默認所有者為 TrustedInstaller.
通過下面三個命令進行恢復:
a. 先指定所有者為 SYSMTEM
icacls e: /setowner system
之所以有這步, 是因為只之前的測試中, 直接將所有者設置為 TrustedInstaller, 被告知 "帐户名与安全标识间无任何映射完成。".
b. 獲取 TrustedInstaller 的 SID:
sc showsid TrustedInstaller
名称:TrustedInstaller
服务 SID:S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464
c. 設置所有者為 TrustedInstaller
icacls e:\ /setowner *S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464
18. 權限恢復完成.
C:\zero>icacls e:\
e:\ BUILTIN\Administrators:(F)
BUILTIN\Administrators:(OI)(CI)(IO)(F)
NT AUTHORITY\SYSTEM:(F)
NT AUTHORITY\SYSTEM:(OI)(CI)(IO)(F)
NT AUTHORITY\Authenticated Users:(M)
NT AUTHORITY\Authenticated Users:(OI)(CI)(IO)(M)
BUILTIN\Users:(RX)
BUILTIN\Users:(OI)(CI)(IO)(GR,GE)
已成功处理 1 个文件; 处理 0 个文件时失败
待整理:
参考来自:http://yvqvan.blog.163.com/blog/static/254151032011410102014306/
http://www.toxingwang.com/windows-server/winserver/355.html
http://social.microsoft.com/Forums/de-DE/13fc28bb-d3bd-4660-87a3-ea7a0527ba87/win7-c?forum=window7betacn