解釋:
Cacls:顯示或修改文件的訪問控制列表(ACL)
ICACLS:顯示或修改自由訪問控制表(Dacl) 上指定的文件,並指定目錄中的文件應用於存儲的 Dacl。
總結:顯示或修改文件訪問控制權限
相關術語:
一個DACL(Discretionary Access Control List),其指出了允許和拒絕某用戶或用戶組的存取控制列表,當一個進程需要訪問安全對象,系統就會檢查DACL來決定進程的訪問權。如果一個對象沒有DACL,則說明任何人對這個對象都可以擁有完全的訪問權限。
一個SACL(System Acess Control List),其指出了在該對象上的一組存取方式(如:讀,謝,運行等)的存取控制權限細節的列表
DACL和SACL構成了整個存取控制列表Access Control List,簡稱ACL,ACL中的每一項我們叫做ACE(Acess Control Entry)
以上是對DACL,SACL,ACL,ACE等相關術語的簡要介紹。
Cacls使用格式:
Cacls 文件名 [/T] [/E] [/C] [/G user:perm] [/R user [...]] [/P user:perm [...]] [/D user [...]]
Filename——顯示訪問控制列表(以下簡稱ACL);
/T——更改當前目錄及其所有子目錄中指定文件的 ACL;
/E—— 編輯 ACL 而不替換;
/C——在出現拒絕訪問錯誤時繼續;
/G user:perm——賦予指定用戶訪問權限。Perm 可以是R(讀取)、W(寫入)、C(更改,寫入)、F (完全控制);
/R user——撤銷指定用戶的訪問權限(僅在與 /E 一起使用);
/P user:perm——替換指定用戶的訪問權限;
/D user——拒絕指定用戶的訪問
實例:以Windows系統為例
1.查看目錄和ACL
在E:\>提示符下輸入“Cacls 文件名”命令,接着就會列出Windows系統中用戶組和用戶對文件名目錄的訪問控制權限項目。如果想查看CCE目錄中所有文件訪問控制權限,輸入“Cacls 文件名\?.?”命令即可。
2.修改目錄和ACL:file(文件名) user(用戶名)
設置用戶訪問權限:我們經常要修改目錄和文件的訪問權限,使用Cacls命令就很容易做到。下面要賦予本機用戶user對E盤下file目錄及其所有子目錄中的文件有完全控制權限。在命令提示符對話框中輸入“Cacls file /t /e /c /g user:f ”命令即可。
替換用戶訪問權限:將本機用戶user的完全控制權限替換為只讀權限。在命令提示符對話框中輸入“ Cacls file /t /e /c /p user:r ”命令即可。
撤銷用戶訪問權限:要想撤銷本機用戶user對該目錄的完全控制權限也很容易,在命令提示符中運行“Cacls file /t /e /c /r user ”即可。
拒絕用戶訪問:要想拒絕用戶user訪問file目錄及其所有子目錄中的文件,運行“Cacls file /t /e /c /d user”即可。
某病毒調用calcs命令例子如下:
病毒進程: c:\documents andsettings\administrator\local settings\temp\tp5.tmp
行為:創建新進程
目標: c:\windows\system32\cacls.exe
命令行: cacls.exeC:\WINDOWS\system32\cmd.exe /e /t /g everyone:F
意思就是給everyone用戶組(所有人)cmd.exe的完全控制
ICacls使用格式:(下列參數詳見表格)
ICacls 文件名 /save Tofile [/T] [/C] [/L] [/Q]:將匹配名稱的文件的DACL存儲到Tofile中,以便將來與 /restore一起使用。
ICacls directory [/substitute SidOld SidNew [...]] /restore Tofile:將存儲的DACL應用於目錄中的文件。
ICacls 文件名 /reset [/T] [/G] [/L] [/Q]:更改所有匹配名稱的所有者,該選項不會強制更改所有身份,使用takeown.exe實用程序可實現該目的。
ICacls 文件名 /findsid Sid [/T] [/C] [/L] [/Q]:查找包含顯式SID的ACL的所有匹配名稱。
ICacls 文件名 /verify [/T] [/C] [/L] [/Q]:查找其ACL不規范或長度與ACE計數不一致的所有文件
ICacls 文件名 /reset [/T] [/C] [/L] [/Q]:為所有匹配文件使用默認繼承的ACL替換ACL
ICACLS 文件名 [/grant[:r] Sid:perm[...]]
[/deny Sid:perm [...]]
[/remove[:g|:d]] Sid[...]] [/T] [/C] [/L]
[/setintegritylevel Level:policy[...]]
/grant[:r] Sid:perm 授予指定的用戶訪問權限。如果使用 :r,
這些權限將替換以前授予的所有顯式權限。
如果不使用 :r,這些權限將添加到以前授予的所有顯式權限。
/deny Sid:perm 顯式拒絕指定的用戶訪問權限。
將為列出的權限添加顯式拒絕 ACE,
並刪除所有顯式授予的權限中的相同權限。
/remove[:[g|d]] Sid 刪除 ACL 中所有出現的 SID。使用
:g,將刪除授予該 SID 的所有權限。使用
:d,將刪除拒絕該 SID 的所有權限。
/setintegritylevel [(CI)(OI)] 級別將完整性 ACE 顯式添加到所有
匹配文件。要指定的級別為以下級別之一:
L[ow]
M[edium]
H[igh]
完整性 ACE 的繼承選項可以優先於級別,但只應用於
目錄。
/inheritance:e|d|r
e - 啟用繼承
d - 禁用繼承並復制 ACE
r - 刪除所有繼承的 ACE
注意:Sid 可以采用數字格式或友好的名稱格式。如果給定數字格式,那么請在 SID 的開頭添加一個 *。
/T 指示在以該名稱指定的目錄下的所有匹配文件/目錄上執行此操作。
/C 指示此操作將在所有文件錯誤上繼續進行。仍將顯示錯誤消息。
/L 指示此操作在符號鏈接本身而不是其目標上執行。
/Q 指示 icacls 應該禁止顯示成功消息。
ICACLS 保留 ACE 項的規范順序:
顯式拒絕
顯式授予
繼承的拒絕
繼承的授予
注意:
在括號中以逗號分隔的特定權限列表:
perm 是權限掩碼,可以兩種格式之一指定:
簡單權限序列:
F - 完全訪問權限
M - 修改權限
RX - 讀取和執行權限
R - 只讀權限
W - 只寫權限
繼承權限可以優先於每種格式,但只應用於
目錄:
(OI) - 對象繼承
(CI) - 容器繼承
(IO) - 僅繼承
(NP) - 不傳播繼承
示例:
icacls c:\windows\* /save AclFile /T
- 將 c:\windows 及其子目錄下所有文件的
ACL 保存到 AclFile。
icacls c:\windows\ /restore AclFile
- 將還原 c:\windows 及其子目錄下存在的 AclFile 內
所有文件的 ACL
icacls file /grant Administrator:(D,WDAC)
- 將授予用戶對文件刪除和寫入 DAC 的管
理員權限
icacls file /grant *S-1-1-0:(D,WDAC)
- 將授予由 sid S-1-1-0 定義的用戶對文件刪
除和寫入 DAC 的權限
1、強制將當前目錄下的所有文件及文件夾、子文件夾下的所有者更改為管理員組(administrators)命令:
takeown /f * /a /r /d y
2、將所有d:\documents目錄下的文件、子文件夾的NTFS權限修改為僅管理員組(administrators)完全控制(刪除原有所有NTFS權限設置):
cacls d:\documents\*.* /T /G administrators:F
3、在原有d:\documents目錄下的文件、子文件夾的NTFS權限上添加管理員組(administrators)完全控制權限(並不刪除原有所有NTFS權限設置):
cacls d:\documents\*.* /T /E /G administrators:F
4、取消管理員組(administrators)完全控制權限(並不刪除原有所有NTFS權限設置):
cacls \\Server\Documents\%username%\我的文檔 /t /e /r "mddq\domain admins"
cacls \\Server\Documents\%username%\桌面 /t /e /r "mddq\domain admins"