[Windows] 使用 icacls 指令 與 accesschk 工具檢查/設定檔案存取權限
最近遇到一個問題,
程式在某些人的機器上沒辦法寫入檔案~
去查了一下,原來是檔案和目錄的權限問題…
原本我通常都是用人工的方式在看每個檔案和目錄的權限,
可是這樣子相當的麻煩,需要一個個去點檔案 > 右鍵內容來看…
舉例來說,如果我想看 C:inetpub 這個目錄,與所有子目錄和檔案的權限,
必須像下面這樣做:
當檔案與目錄很多的時候,這就變得相當麻煩。
尤其是當這問題是發生在別人的電腦上的話,光是做這些動作就會佔掉許多時間,
客戶很可能會等的不耐煩…
今天在 Windows 7 上學到一個新的 command line 指令 icacls(從這裡學到的),
這個指令可以顯示某目錄下所有的檔案權限,而且還可以設定權限!
真的是相當方便的指令~~
舉例來說,如果我想顯示 C:Inetpub 目錄和所有子目錄與檔案的權限,
只需要這樣做:
icacls c:inetpub /t
就會顯示出 C:Inetpub 目錄和其所有子目錄下檔案的權限:
出現的畫面中,會有許多 (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
執行後的結果如下:
另外一種方式,是使用 SysInternal 出的 AccessChk 工具,
它也可以將某個目錄下的檔案權限,用一種簡易的方式表達出來~
舉例來說,假設我想看 C:awdchapter7 下檔案的權限狀況,可以用:
accesschk.exe c:awdchapter7
執行結果就像下面這樣:
(本頁面已被瀏覽過 3,762 次)
4 thoughts on “[Windows] 使用 icacls 指令 與 accesschk 工具檢查/設定檔案存取權限”
很棒的文章,多謝分享!
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"
謝謝分享
不客氣~ 🙂