[Windows] 使用 icacls 指令 與 accesschk 工具檢查/設定檔案存取權限

[Windows] 使用 icacls 指令 與 accesschk 工具檢查/設定檔案存取權限

最近遇到一個問題,

程式在某些人的機器上沒辦法寫入檔案~

去查了一下,原來是檔案和目錄的權限問題…

 

原本我通常都是用人工的方式在看每個檔案和目錄的權限,

可是這樣子相當的麻煩,需要一個個去點檔案 > 右鍵內容來看…

舉例來說,如果我想看 C:inetpub 這個目錄,與所有子目錄和檔案的權限,

必須像下面這樣做:

perm  

 

當檔案與目錄很多的時候,這就變得相當麻煩。

尤其是當這問題是發生在別人的電腦上的話,光是做這些動作就會佔掉許多時間,

客戶很可能會等的不耐煩…

 

今天在 Windows 7 上學到一個新的 command line 指令 icacls(從這裡學到的),

這個指令可以顯示某目錄下所有的檔案權限,而且還可以設定權限!

真的是相當方便的指令~~

舉例來說,如果我想顯示 C:Inetpub 目錄和所有子目錄與檔案的權限,

只需要這樣做:

icacls c:inetpub /t

 

就會顯示出 C:Inetpub 目錄和其所有子目錄下檔案的權限:

icacls1  

 

出現的畫面中,會有許多 (F)(RX)(OI)… 之類的東西,

只要直接執行 icacls 指令,就可以看到這些權限縮寫的說明如下:

分類 縮寫  代表意義 
簡單權限 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 從父容器繼承的權限

 

假設我想要讓 Users 這個群組對 C:awdchapter7 目錄下的檔案都加上「寫入」的權限,可以這樣做:

icacls c:awdchapter7 /grant Users:(W) /t

 

執行後的結果如下:

icacls2  

 

另外一種方式,是使用 SysInternal 出的 AccessChk 工具,

它也可以將某個目錄下的檔案權限,用一種簡易的方式表達出來~

舉例來說,假設我想看 C:awdchapter7 下檔案的權限狀況,可以用:

accesschk.exe c:awdchapter7

 

執行結果就像下面這樣:

accesschk1  

(本頁面已被瀏覽過 3,623 次)

4 thoughts on “[Windows] 使用 icacls 指令 與 accesschk 工具檢查/設定檔案存取權限

  1. icacls c:awdchapter7 /grant Users:(W) /t
    请仔细看看这个命令的使用方法 目录后面不能接 grant参数,这句话根本就不会起作用
    版主回覆:(08/24/2015 02:30:15 PM)
    目錄後面可以接 grant 參數喔,已經在 Windows 7 上測試過了。
    請仔細看看 /t 這個參數的說明,它代表的是把符合的檔案/目錄下所有的檔案,都設定成指定的權限~
    "/T indicates that this operation is performed on all matching files/directories below the directories specified in the name"

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料