1

Тема: VBScript: скрипт, которые получает права доступа для папки

Нужно получить права доступа (чтение, редактирование, удаление) на указанную папку для определенного пользователя, в домене, как на закладке безопасность.

Например:
Пользователь: Юзер 1
Папка: Мои документы
Чтения: Истина
Редактирование: Истина
Удаление: Ложь

Пользователь: Юзер 1
Папка: Мои документы
Чтения: Истина
Редактирование: Ложь
Удаление: Ложь

Спасибо.

2 (изменено: jite, 2010-11-14 03:32:19)

Re: VBScript: скрипт, которые получает права доступа для папки

WMI
Альтернатива: отдельная утилита SetACL см. example 1.1 для "Юзер 1"
(в out русские буквы - вопросиками, но делает все хорошо)

Это может понадобиться Хорошо известные идентификаторы безопасности в операционных системах Windows

3

Re: VBScript: скрипт, которые получает права доступа для папки

jite пишет:

Альтернатива: отдельная утилита SetACL...

Раз уж речь зашла об альтернативных сценариям утилитах, то в первую очередь следует упомянуть стандартную CACLS.EXE, а также рекомендуемую на портале MS XCACLS.EXE (см. сюда: http://support.microsoft.com/kb/318754/ru).

4 (изменено: jite, 2010-11-15 16:07:53)

Re: VBScript: скрипт, которые получает права доступа для папки

в первую очередь следует упомянуть стандартную CACLS.EXE

Может и следует, но не очень добрым словом. Наследование нормально после него не наследуется. Кроме того эта консольная утилита "любит" пообщаться интерактивно (помнится, с ключом /t): точно хотите переписать? - и никакой возможности это пропустить авторами не предусмотрено (upd извернулись).

Про xcacls писали, что рекурсия у нее "мелкая" - на внучатых папках наследование может не продлиться. Не помню, честно говоря, проверял ли истинность этого. И нормальной правки (/E) не получалось, чтобы наследовалось имеющимися и создаваемыми. В результате исследований от использования отказался.

Под Win7 есть icacls, но тогда чем пользоваться под XP, если нужно?

Словом, я бы не рекомендовал пользоваться данными утилитами от MS по упомянутым, а также некоторым иным причинам.

subinacl - оказалась уровня MS-утилит, не умеет нормально работать с наследованием, причем делает вид, что умеет. Хотя на вид синтаксис несложный и даже приятный, работает как с файлами, так и с реестром.

А про SetACL из недостатков пока числю только дико страшный - с непривычки - синтаксис, ну и вопросики вместо русских букв в сообщениях. Зато хорошо работает! (Покрайней мере пока глюков не наблюдал. Кстати, если знаете таковые, отпишитесь пожалуйста.)

Вот это, например, причесать папке (со всеми входящими) наследование, посбрасывать все прочее + Админам full, а Всем read+exec ():

SetACL.exe -on "%~1" -ot file -actn ace -ace "n:S-1-5-32-544;p:full;s:y" -ace "n:S-1-5-18;p:full;s:y" -ace "n:S-1-1-0;p:read_ex;s:y" -actn clear -clr "dacl" -actn rstchldrn -rst "dacl"

А это - сделать Админов владельцами дерева (конечно тоже со всеми входящими, и не как через GUI "Оп-па, а у вас нет прав! Давайте еще раз!")

SetACL.exe -on "%~1" -ot file -actn setprot -op "dacl:np" -rec cont_obj -actn setowner -ownr "n:S-1-5-32-544;s:y"

Просто берет и делает. И между прочим в реестре тоже. И права аудита. Вне зависимости от локали и версии Win.

Есть конечно же еще и PowerShell и WMI (Dmitrii, ты титан! Такое накатать... Спасибо, теперь есть с чем разбираться!)
Но выглядит сложновато, честно говоря, для такой с виду простой операции как назначение прав.

5

Re: VBScript: скрипт, которые получает права доступа для папки

OFF:

jite пишет:

Может и следует, но не очень добрым словом...

Тем не менее, они, так сказать, "родные" (особенно CACLS.EXE), хотя, увы, и работают с ошибками (тут уж спору нет).

jite пишет:

... выглядит сложновато, честно говоря, для такой с виду простой операции как назначение прав.

Сложновато, конечно, но уж очень много нюансов требуется учесть.