現在越來越多的用戶使用NTFS文件系統來增強Windows系統的安全性。通常是在圖形用戶界面(GUI)的「安全」選項卡中對文件或目錄訪問控制權限進行設置。還有一種設置方式大家可能很少使用,這就是Cacls命令。雖然它是一個基於命令行的命令,使用起來有點繁瑣,但只要你合理利用,也會在提高系統安全性方面起到很好的效果。Cacls命令使用格式如下:
Cacls filename [/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——拒絕指定用戶的訪問。
1. 查看目錄和ACL
以Windows XP系統為例,筆者使用Cacls命令查看E盤CCE目錄訪問控制權限。點擊「開始→運行」,在運行對話框中輸入「CMD」命令,彈出命令提示符對話框,在「E:\>」提示符下輸入「Cacls CCE」命令,接著就會列出Windows XP系統中用戶組和用戶對CCE目錄的訪問控制權限項目。如果想查看CCE目錄中所有文件訪問控制權限,輸入「Cacls cce\.」命令即可。
2. 修改目錄和ACL
設置用戶訪問權限:我們經常要修改目錄和文件的訪問權限,使用Cacls命令就很容易做到。下面要賦予本機用戶Chenfeng對E盤下CCE目錄及其所有子目錄中的文件有完全控制權限。在命令提示符對話框中輸入「Cacls CCE /t /e /c /g Chenfeng:f 」命令即可。
替換用戶訪問權限:將本機用戶Chenfeng的完全控制權限替換為只讀權限。在命令提示符對話框中輸入「 Cacls CCE /t /e /c /p Chenfeng:r 」命令即可。
撤銷用戶訪問權限:要想撤銷本機用戶Chenfeng對該目錄的完全控制權限也很容易,在命令提示符中運行「Cacls CCE /t /e /c /r Chenfeng 」即可。
拒絕用戶訪問:要想拒絕用戶Chenfeng訪問CCE目錄及其所有子目錄中的文件,運行「Cacls CCE /t /e /c /d Chenfeng」即可。
以上只是簡單介紹Cacls命令的使用,建議大家親自嘗試一下,你會發現它還有很多奇妙的功能。
說明
cacls.exe 是用來管理 ACL 的工具, ACL 翻成中文是「存取控制清單」。 ACL 的功用是列出哪些使用者對電腦上的哪些資源有哪些權限,當使用者要存取某個資源的時候,就可以透過 ACL 檢查這個存取動作是否合法。這個資源可能是檔案、資料夾或印表機……等,而權限可以是讀取、寫入、執行……等。在 ACL 裡面包含了許多 ACE ,而每個 ACE 就代表某個使用者對某項資源具有哪些權限。
在 Windows 平台上只有 NTFS 的磁區具有 ACL 的功能,如果在 NTFS 磁區上的某個檔案(資料夾)上按下滑鼠右鍵 → 內容 → 安全性,就可以看到這個檔案(資料夾)的 ACL ,大約是這個樣子:
資料夾
- WPG2 Plugin Not Validated *
檔案
- WPG2 Plugin Not Validated *
資料夾的權限種類比檔案多了一種「清單資料夾內容」。
使用方式
cacls.exe 的語法如下:
cacls filename [/T] [/E] [/C] [/G user:perm [...]] [/R user [...]]
[/P user:perm [...]] [/D user [...]]
參數說明如下:
/T
變更目錄及其子目錄下所有指定檔案的 ACL 。例如用
> cacls test/*.txt /t
可以指定 test 目錄及其子目錄下所有的純文字文件檔。
/E
編輯 ACL 而非取代。不加上 /E 的話會先將 ACL 清空,再將指定的使用者權限加上去。
/C
忽略錯誤並繼續執行。
/G user:perm
授與 (Grant) 使用者權限。 perm 的值可以是下面其中一個:
perm
描述
允許
拒絕
| r |
讀取 |
讀取及執行、清單資料夾內容、讀取 |
無 |
| w |
寫入 |
寫入 |
無 |
| c |
變更 |
修改、讀取及執行、清單資料夾內容、讀取、寫入 |
無 |
| f |
完全控制 |
完全控制、修改、讀取及執行、清單資料夾內容、讀取、寫入 |
無 |
/R user
撤銷 (Revoke) 指定使用者的權限,需和 /E 同時使用。
/P user:perm
取代 (Replace) 指定使用者的權限。 perm 的值可以是下面其中一個:
perm
描述
允許
拒絕
| n |
沒有權限 |
無 |
完全控制、修改、讀取及執行、清單資料夾內容、讀取、寫入 |
| r |
讀取 |
讀取及執行、清單資料夾內容、讀取 |
無 |
| w |
寫入 |
寫入 |
無 |
| c |
變更 |
修改、讀取及執行、清單資料夾內容、讀取、寫入 |
無 |
| f |
完全控制 |
完全控制、修改、讀取及執行、清單資料夾內容、讀取、寫入 |
無 |
/D user
拒絕 (Deny) 指定使用者存取,相當於 /P user:n
權限說明
完全控制
具有所有的權限。
修改
選擇「修改」會自動加上「讀取及執行」、「讀取」、「寫入」權限,此外「修改」還可以刪除、重新命名檔案。
讀取及執行
讀取與執行檔案,選擇這一個權限會自動加上「清單資料夾內容」與「讀取」這兩個權限。
清單資料夾內容
僅限瀏覽資料夾裡面的檔案清單。
讀取
讀取檔案/資料夾。
寫入
新增檔案或變更已存在的檔案內容(不包括重新命名)。
範例
新增權限
讓 Guest 帳號可以寫入 test 目錄:
> cacls test /e /g Guest:w
變更 ACL
將 test 目錄變更成只有 Administrators 可以完全控制:
> cacls test /g Administrators:f
顯示權限
顯示 ACL :
> cacls test
結果可能為
C:\\test BUILTIN\\Administrators:(OI)(CI)F
輸出結果裡面的 (OI) 、 (CI) 、 (IO) 代表意思如下:
輸出
ACE 套用到
| OI |
此資料夾及檔案。 |
| CI |
此資料夾及子資料夾。 |
| IO |
ACE 不套用到目前的檔案/目錄。 |
| 無輸出訊息 |
只有此資料夾。 |
| (IO)(CI) |
此資料夾、子資料夾及檔案。 |
| (OI)(CI)(IO) |
只有子資料夾及檔案。 |
| (CI)(IO) |
只有子資料夾。 |
| (OI)(IO) |
只有檔案。 |
注意事項
永遠的控制者
擁有者的設定超越於 ACL ,也就是對於妳所建立的檔案或資料夾,妳永遠有所有的權限。那麼怎麼看檔案或擁有者是誰呢?在檔案或資料夾上按滑鼠右鍵 → 內容 → 安全性 → 進階 → 擁有者,就可以看到該項資源的擁有者。
- WPG2 Plugin Not Validated *
誰可以變更 ACL
具有「完全控制」權限的使用者才可以變更 ACL 。
使用於批次檔
在沒有加上 /E 選項時,會出現以下詢問:
您是否確定 (Y/N)?
並等待使用者輸入 Y 或 N 並按下 Enter 。如果要在批次檔裡面使用的話,可以使用 pipe ,範例如下:
echo y| cacls test /t /g "Administrators":f
值得注意的是 echo y 與 | 之間不可以有任何空白。
權限之繼承
一般來說資料夾 A 下的子資料夾或檔案會繼承 A 的 ACL 。例如下圖的「從父項繼承套用到子物件的權限項目,包括明確定義於此的項目」:
- WPG2 Plugin Not Validated *
如果不想繼承,而想為該資料夾或檔案特別設定不一樣的 ACL ,可以將該選項取消掉。
文章定位: