以下都是摘录至其他网站。

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 y

2、将所有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
———————
作者:xuhuan_wh
来源:CSDN
原文:https://blog.csdn.net/xuhuan_wh/article/details/25647317
版权声明:本文为博主原创文章,转载请附上博文链接!

 

用icacls创建自动权限管理解决方案

作为一种管理工具,icacls是一把双刃剑。一方面,它的命令行界面有着让人难以置信的强大配置权限。有了它,你几乎可以完成IT行业可能遇到的所有权限管理任务。

但是,为了成为一种“万能”的解决方案,icacls已经演变得异常复杂。正如我在上一篇关于icacls基础的文章中提到,即便是设置最简单的权限也需要极其复杂的语句。只是对文件或文件夹配置基本的权限,语句就必须包括你想设置的权限以及继承信息。即便忘了小部分语法,也会出现意想不到的结果。

这就是为什么上一篇文章着重于一些特例的简单应用,只有这些特殊应用是远远不够的,你会发觉自己需要的是应用广泛的权限管理设置。

但是,回想一下,此系列是真正在致力创造一个“可审计的自动权限管理解决方案”。这里的关键词是解决方案,因为实际上,你最终想要的是单一的批处理文件。在批处理文件中,是你要为文件夹结构配置的权限,一行命令对应一个文件夹。

有了这样一种批处理文件,设置树中的每个权限就可以简单完成了……然后运行该批处理文件。同样也适用于固定权限。最后,当然也是最重要的,将批处理文件作为日常(最好是这样)计划任务来运行,可以每天晚上都能自动确保每个权限的正确性。

听起来太好了,似乎不像真的?这的确是真的,只是需要做一些准备工作。

第1项工作:Excel

首先要做的是列出文件夹结构。Microsoft Excel就是一款完成此任务的方便工具。进入文件夹结构中“主要”文件夹里的Excel电子表格。当用户从上到下浏览时,这些主要文件夹的权限结构会发生变化。对于每一个文件夹,都要包括你想要设置的权限。记住,在这里设置的每个权限都会被它的所有子文件夹所继承。

icacls具有一种可将这些权限可视化的机制。你可以获得每个文件和文件夹的报告并在C:/Public目录下使用下列语句: 
icacls C:/Public /T

就本人而言,我很讨厌这个报告。可以肯定的是,它很全面-实际上它过于全面了。你不用改变C:/Public目录下所有文件夹的权限,绝大多数都可以通过继承上层文件夹权限的简单方式来实现。正是由于这个原因,我不太喜欢用上面的命令来创建Excel电子表格,而是选择自己来创建的方式。

如果你的结构太复杂而无法独立完成此项任务,考虑下载Microsoft Sysinternals工具AccessEnum。这个免费的工具将有助你在复杂的结构中更好地可视化权限。我用它来帮助我找出与上层文件夹不同的子文件夹。

上述Excel电子表格的创建过程将需要一些时间,但要认识到,创建Excel电子表格的同时也创建了最后批处理文件的结构。你往电子表格写入的信息-文件夹路径、文件夹权限和权限继承——恰好也是icacls需要的信息。请让我再重复一次上述声明,因为它确实非常重要,一定要牢记:当用户从上到下浏览时,只有将需要做出权限改变的文件夹输入电子表格才能产生改变。继承的规则将适用于其它的所有文件夹。

第2项工作:Icacls

一旦做好了第1项工作,接下来要做的就只需要创建两个icacls命令结构了。第一个命令结构是在一个文件夹上直接配置权限。在结构顶层你会用到此权限。语句如下:
icacls C:/Public/ /grant:r “Domain Users”:(OI)(CI)M

这个语句上是为Domain Users组直接配置C:/Public目录下的文件夹修正权限,替换任何现有的访问控制列表(ACL)。同时,它还对继承C:/Public目录下的所有文件夹的的权限进行配置。

对于低于顶层的文件夹,要用第二个语句:

icacls C:/Public/Private /inheritance:r /grant:r “Finance Users”:(OI)(CI)M

回想一下,我们正在创建的解决方案开发就是一个批处理文件,并且马上就要运行这个批处理文件了。这意味着,一旦在顶层设置了权限,通过打破该文件夹的继承,下层的文件夹权限都将发生变化,先配置一个新的权限,然后再对下面的文件夹进行继承。这三个步骤确保继承的规则总是按树的顺序遵循的。一个命令行的命令语句就可以完成这三项任务了。

就是这样了!要创建自动化的解决方案,这两个命令都是必不可少的。需要在同一个文件夹上配置多个用户或组(具有或不具有不同的权限)的情况下,使用第二个语句的变体:

icacls C:/Public/Private /inheritance:r /grant:r “Finance Users”:(OI)(CI)M “Accounting Users”:(OI)(CI)R “IT Admins”:(OI)(CI)F

一旦创建好了批处理文件,将其复制到计划任务(Scheduled Tasks)服务器上并对其进行配置,以便可以在你选择的计划上运行。因为每次执行都能完成所有的任务,所以一遍又一遍地重新运行该批处理文件只是为了确保文件结构与脚本结构一直匹配。

对脚本非常重要的一点是:文件夹结构会随着时间的推移而演变。你需要在其它文件夹上添加文件夹或更改权限。当这些请求发生时,请务必更新解决方案。否则,下一次更新解决方案运行时你就会发现,权限已经被其脚本覆盖了。

一个四层文件夹的例子

下面我们将通过一个例子来看一下如何最简单地可视化批处理文件。在这个例子中,假设你的文件夹结构始于顶层的C:/Public。该文件夹下面有两个子文件夹为C:/Public/Marketing和C:/Public/Finance。域名用户(Domain Users)对这三个文件夹中的信息都应具有读取权限,而市场营销(Marketing)和财务(Finance)组应具有写入权限。

另外,这个结构中,第四个文件夹存有敏感信息,c:/Public/Finance/Sensitive。只有财务(Finance)组才能拥有这个文件夹的写入权限。其它组都没有此权限。

通过一个批处理文件创建此结构需要四行语句:

icacls C:/Public/ /grant:r “Domain Users”:(OI)(CI)R
icacls C:/Public/Marketing /inheritance:r /grant:r “Domain Users”:(OI)(CI)R “Marketing Users”:(OI)(CI)M
icacls C:/Public/Finance /inheritance:r /grant:r “Domain Users”:(OI)(CI)R “Finance Users”:(OI)(CI)M
icacls C:/Public/Finance/Sensitive /inheritance:r /grant:r “Finance Users”:(OI)(CI)M “Executive Users”:(OI)(CI)M

这样你就拥有了四行命令,而且文件夹也都准备好执行相应的命令了。

永远记住,继承可以成为你的朋友。有了像上述这种文件夹结构,就可以确保创建的文件夹与上层文件夹拥有相同的保护力度,这样金融(Finance)和市场营销(Marketing)用户就可以创建自己的子文件夹了。


0 条评论

发表评论

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