Windows小技巧:icacls檢查/變更目錄或檔案權限

摘要:Windows小技巧:icacls檢查/變更目錄或檔案權限

今天在網上看到一個不錯的小指令,因為現在接觸的大多是Linux部分,

所以對Windows之後的新玩意倒是沒啥研究了,

趁現在先記錄下來,也許以後會用的到。

 

以下為簡單的範例

icacls directory /t:檢視目錄底下子目錄及檔案的權限

 

其餘詳細部分就直接開啟command查看一下。

或者再往下看,我直接列出的部份。

 

以下為完整描述及範例:

1. ICACLS name /save aclfile [/T] [/C] [/L] [/Q]將符合名稱之檔案與資料夾的DACL 儲存至aclfile,以供稍後與

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

2. ICACLS directory [/substitute SidOld SidNew [...]] /restore aclfile [/C] [/L] [/Q]將儲存的DACL 套用到目錄

              中的檔案。

3. ICACLS name /setowner user [/T] [/C] [/L] [/Q]變更所有相符名稱的擁有者。此選項不會強制變更擁有權;

              如果要強制變更擁有權,請使用takeown.exe 公用程式。

4. ICACLS name /findsid Sid [/T] [/C] [/L] [/Q]尋找內含明確提及Sid 之ACL 的所有相符名稱。

5. ICACLS name /verify [/T] [/C] [/L] [/Q]尋找含有未使用標準格式的ACL 或長度與ACE 計數不一致的所有檔案。

6. ICACLS name /reset [/T] [/C] [/L] [/Q]針對所有符合的檔案,使用預設繼承的ACL 取代ACL。

7. ICACLS name [/grant[:r] Sid:perm[...]]

                               [/deny Sid:perm [...]]

                               [/remove[:g|:d]] Sid[...]] [/T] [/C] [/L] [/Q]

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

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

              :r,則會將權限加入先前授與的任何明確權限。

  b. /deny Sid:perm明確拒絕指定的使用者存取權限。對指定的權限新增明確拒絕的ACE,並將任何明確授與中

              的相同權限移除。

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

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

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

              可指定下列層級的其中一個:L[ow]M[edium]H[igh]

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

  e. /inheritance:e(啟用繼承)|d(停用繼承並複製ACE)|r(移除所有繼承的ACE)

 

注意:

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

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

3. /C:指示不論發生任何檔案錯誤,都繼續執行此操作。仍會顯示錯誤訊息。

4. /L:指示此操作會在符號連結(而非其目標) 上執行。

5. /Q:指示icacls 應隱藏成功訊息。

6. ICACLS 保留ACE 項目的標準順序:明確拒絕、明確授與、繼承拒絕、繼承授與

7. perm 是權限遮罩,可使用下列其中一種格式來指定:

  a. 一連串簡單權限:

      N - 不允許存取

      F - 完整存取權

      M - 修改存取權

      RX - 讀取和執行存取權

      R - 唯讀存取權

      W - 唯寫存取權

      D - 刪除存取權

  b. 在括號中以逗號分隔特定權限的清單:

      DE - 刪除

      RC - 讀取控制

      WDAC - 寫入DAC

      WO - 寫入擁有者

      S - 同步

      AS - 存取系統安全性

      MA - 允許的最大值

      GR - 一般讀取

      GW - 一般寫入

      GE - 一般執行

      GA - 一般所有權限

      RD - 讀取資料/列出目錄

      WD - 寫入資料/新增檔案

      AD - 附加資料/新增子目錄

      REA - 讀取擴充屬性

      WEA - 寫入擴充屬性

      X - 執行/周遊

      DC - 刪除子系

      RA - 讀取屬性

      WA - 寫入屬性

  c. 繼承權限的優先順序高於上述任一種格式,且僅套用到目錄:

      (OI) - 物件繼承

      (CI) - 容器繼承

      (IO) - 僅繼承

      (NP) - 不傳播繼承

      (I) - 從父容器繼承的權限

 

範例:

1. icacls c:\windows\* /save AclFile /T:會將c:\windows 及其子目錄下所有檔案的ACL 儲存到AclFile。

2. icacls c:\windows\ /restore AclFile:會還原AclFile 之中每個檔案的Acl,而AclFile 位於c:\windows及其子目錄

              下。

3. icacls file /grant Administrator:(D,WDAC):會將檔案的刪除和寫入DAC 權限授與使用者Administrator。

4. icacls file /grant *S-1-1-0:(D,WDAC):會將檔案的刪除和寫入DAC 權限授與sid S-1-1-0 所定義的使用者。

 

參考來源:

使用icacls指令與accesshk工具檢查/設定檔案權限

Windows管理員取得所有權,順利修改檔案、更改權限、刪除資料