[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  

(本頁面已被瀏覽過 1,282 次)

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 如何處理網站訪客的留言資料