PostRank

2008/07/11

如何導出Windows裡的文件夾權限清單


請問如何導出Windows裡的文件夾權限清單?!
整了一台Windows Server當作File Server,裡面建了一堆文件夾並設定各級用戶及讀寫權限,
現在要整個列出所有的權限清單進行查核,有什麼方式可以將此資料批量導出?!

C:\>cacls
顯示或修改檔案的存取控制清單 (ACL)

CACLS filename [/T] [/M] [/S[:SDDL]] [/E] [/C] [/G user:perm] [/R user [...]]
[/P user:perm [...]] [/D user [...]]
filename 顯示 ACL。
/T 變更指定檔案的 ACL 於
現有的目錄或所有子目錄中。
/M 變更掛載於目錄的磁碟區的 ACL。
/S 為 DACL 顯示 SDDL 字串。
/S:SDDL 以在 SDDL 字串中所指定的來替代 ACL
(和 /E、/G、/R、/P 或 /D 使用時無效)。
/E 編輯 ACL 而非將它取代。
/C 拒絕存取的錯誤繼續發生。
/G user:perm 授與指定的使用者存取權限。
Perm 的值可以是: R 讀取
C 變更 (寫入)
F 完全控制
/R user 撤銷已指定的使用者存取權限 (只有當 /E 存在時才有效)。
/P user:perm 取代已指定的使用者存取權限。
Perm 的值可以是: N 沒有權限
R 讀取
C 變更 (寫入)
F 完全控制
/D user 拒絕已指定的使用者存取。
您可以在命令中使用萬用字元一次指定數個檔案。
您可以在命令中指定數個使用者。
縮寫:
CI - 容器繼承。
ACE 將被目錄繼承。
OI - 物件繼承。
ACE 將被檔案繼承。
IO - 僅供繼承。
ACE 不可套用到目前的檔案/目錄。



譬如,將D盤下文件及文件夾權限列表列出:
cacls d:\*
將結果輸出到d盤1.txt:
>d:\1.txt

即是:
C:\>cacls d:\* >d:\1.txt

但只能列舉出D盤根目錄的文件及文件夾,子目錄下無法列出


rem mycacls.bat
@echo off
echo 列出指定目录下所有文件(含子目录)的权限
echo 使用格式:%0 目录
echo 使用范例:%0 d:\bt
echo 结果保存在当前目录下cacls.out文件中
if "%1"=="" goto MYEND
echo %0 %1 %date% >>cacls.out
for /R %1 %%I IN (.) do ( cacls %%I\* >>cacls.out)

:MYEND
echo on

沒有留言: