首页 > 代码库 > 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 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