2021年12月1日

CALCS .vs. ICALCS

 微軟建議以 iCacls 取代 Cacls ,icacls 可以設置各別檔案與目錄非繼承的權限,但是 iCacls 無法建立可被繼承的權限


若是需要目錄下的權限被子目錄、檔案繼承,需要以 CACLS 設置目錄權限。

[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


                  (不能搭配 /E、/G、/R、/P 或 /D 使用)。


    /E            編輯 ACL 而不是取代 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 - 已繼承。


         從父目錄的 ACL 繼承 ACE。


[ICACLS]


ICACLS name /save aclfile [/T] [/C] [/L] [/Q]

    將符合名稱之檔案與資料夾的 DACL 儲存至 aclfile,以供稍後與

    /restore 搭配使用。請注意,這不會儲存 SACL、擁有者或完整

    性標籤。


ICACLS directory [/substitute 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] [/Q]

       [/setintegritylevel Level:policy[...]]


    /grant[:r] Sid:perm 授與指定的使用者存取權限。若加上 :r,該權限便會取代先前授與的明確權限。若不加上 :r,則會將權限加入先前授與的任何明確權限。


    /deny Sid:perm 明確拒絕指定的使用者存取權限。對指定的權限新增明確拒絕的 ACL,並將任何明確授與中的相同權限移除。


    /remove[:[g|d]] Sid 會移除 ACL 中 Sid 的所有符合項目。若加上 :g,會將授

        與該 Sid 之權限的所有符合項目移除。若加上 :d,則會將拒絕該 Sid 之權

        限的所有符合項目移除。


    /setintegritylevel [(CI)(OI)]Level 明確地新增完整性 ACE 至所有符合的檔

        案。可指定下列層級的其中一個:

            L[ow]

            M[edium]

            H[igh]

        完整性 ACE 的繼承選項具有高於層級的優先性,且只會套用到目錄。


    /inheritance:e|d|r

        e - 啟用繼承

        d - 停用繼承並複製 ACE

        r - 移除所有繼承的 ACE



注意:

    Sid 的格式可以是數字或好記的名稱。如果指定使用數字格式,請在 SID 的開頭

    加上 *。


    /T 指示要在 name 指定之目錄下的所有相符檔案/目錄上執行此操作。


    /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

        - 會還原 AclFile 之中每個檔案的 Acl,而 AclFile 位於 c:\windows 

          及其子目錄下。


        icacls file /grant Administrator:(D,WDAC)

        - 會將檔案的刪除和寫入 DAC 權限授與使用者 Administrator。


        icacls file /grant *S-1-1-0:(D,WDAC)

        - 會將檔案的刪除和寫入 DAC 權限授與 sid S-1-1-0 所定義的使用者。




沒有留言: