Аудит прав доступа к каталогам файлового сервера

Зачастую становится задача не просто проанализировать права доступа к файловым ресурсам сервера но и составить реестр этих прав с последующим утверждением у руководства.
Приведенный ниже скрипт является переработкой XCACLS.VBS от Microsoft. Он выводит больше информации и при этом сразу формирует отчет в формате MS Excel.
При формировании отчета я использую технологию формирования документа MS Excel через текстовый файл (описал тут http://webveter.blogspot.com/2007/10/ms-office-ms-office.html).
Запуск скрипта выполняется из командной строки с параметром указывающим на сканируемый каталог (полный путь к каталогу). Например: facl.vbs c:\inetpub\ftproot
При этом сканируется вся иерархия подкаталогов.
Сам отчет формируется в файл folder_acl.xls. По окончании формирования отчета выдается сообщение.
Вес архива 3 К.
Сам архив со скриптом http://depositfiles.com/files/1200436
 

8 комментариев:

Анонимный комментирует...

Класный скрипт.
Но как можно ограничить глубину сканирования...? Допустим ограничится только сканированием до третьего подкаталога?

webveter комментирует...

Изменить скрипт :)
Передавать в функцию ProcessFolder еще один параметр "Level" и внутри функции его инкрементировать и если LevelЮ3 заканчивать парсинг.

Анонимный комментирует...

Она же рекурсивно вызывается...
Что-то недопонимать куда счетчик ставить куда условие...
Мож ProcessFolder запостить?

webveter комментирует...

вроде этого:
Function ProcessFolder(byVal strFolder, byVal Level)
Level=Level+1
If Level<4 Then
Dim folder, folders, subfolder
Call DisplayACL(strFolder)
Set folder = fso.GetFolder(strFolder)
Set folders = folder.SubFolders
For Each subfolder in folders
ProcessFolder(strFolder & "\" & subfolder.name, Level)
Next
End if
End Function

и первый вызов:
Call ProcessFolder(path, 0)

Анонимный комментирует...

Ругается на строчку
ProcessFolder(strFolder & "\" & subfolder.name, Level):
Microsoft VBScript compilation error: Cannot use parentheses when calling a Sub

webveter комментирует...

согласен. она должна выглядеть так:
ProcessFolder strFolder & "\" & subfolder.name, Level

Unknown комментирует...

Отличный скрипт!
Но есть проблема - если название группы очень длинное, то оно при выводе урезается - например,
Domain\Очень-очень-очень-длин...имя
Кстати, так же поступает и AccessEnum от Sysinternals
Как-то можно это победить?

Спасибо.

Анонимный комментирует...

Хорошая статья. Действительно было интересно почитать. Не часто такое и встречается та.Наверное стоит подписаться на ваше RSS