1

Тема: VBS: Win32_Trustee class

Добрый день. Хочу написать скрипт, который будет для троих пользователей расшаривать диск p:\ на полный доступ , и для одного на чтение.
Нашел пример

 Const PERM_READ           = 1179817
Const PERM_MODIFY         = 1245631
Const PERM_FULL           = 2032127
 
ShareName = "ShareName"
SharePath = "D:\Install"
ShareDescription = "Description"
 
Set objWMIService = GetObject("WINMGMTS:{impersonationLevel=impersonate,(Security)}!\\.")
 
Set objSecDescClass = objWMIService.Get("Win32_SecurityDescriptor")
Set objSecDesc = objSecDescClass.SpawnInstance_()
Set objTrustee = objWMIService.Get("Win32_Trustee").SpawnInstance_
objTrustee.Domain = Null
objTrustee.Name = "User"
objTrustee.Properties_.Item("SID") = Array(1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0)
Set objACE = objWMIService.Get("Win32_Ace").SpawnInstance_
objACE.Properties_.Item("AccessMask") = PERM_READ
objACE.Properties_.Item("AceFlags") = 3
objACE.Properties_.Item("AceType") = 0
objACE.Properties_.Item("Trustee") = objTrustee
objSecDesc.Properties_.Item("DACL") = Array(objACE)
 
Set objShare = objWMIService.Get("Win32_Share")
 
Set objInParam = objShare.Methods_("Create").InParameters.SpawnInstance_()
objInParam.Properties_.Item("Access") = objSecDesc
objInParam.Properties_.Item("Description") = ShareDescription
objInParam.Properties_.Item("Name") = ShareName
objInParam.Properties_.Item("Path") = SharePath
objInParam.Properties_.Item("Type") = 0
set objMy = objShare.ExecMethod_("Create", objInParam)

Но не все моменты понятны...
Например, вот это

objTrustee.Properties_.Item("SID") = Array(1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0)

? Подскажите, пжалуста, что здесь задается?

зы\ только не отправляйте читать про класс win32_Trustee, читал, не помогло

2

Re: VBS: Win32_Trustee class

Помнится уважаемый Dmitrii эту тему подробно осветил.

3

Re: VBS: Win32_Trustee class

уууу, спасибо! иду читать

4 (изменено: НеОчень, 2012-07-27 15:29:19)

Re: VBS: Win32_Trustee class

Прочитал, много в чем разобрался и много чего интересного узнал, но все равно непонятно что это :

objTrustee.Properties_.Item("SID") = Array(1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0)
?

5

Re: VBS: Win32_Trustee class

но все равно непонятно что это :

Win32_Trustee class:

SID

    Data type: uint8 array
    Access type: Read/write
    Qualifiers: WritePrivileges (SeSecurityPrivilege, SeRestorePrivilege)

    SID that uniquely identifies a user or group.

6 (изменено: alexii, 2012-07-27 16:25:14)

Re: VBS: Win32_Trustee class

Ну так то да, это тож читал.
Тогда подробнее вот это Array(1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0) , что за множество?
Как тогда преобразовать SIDString в SID?

7

Re: VBS: Win32_Trustee class

НеОчень, спросите там, где Вы нашли его. А я рекомендую посмотреть это.

8

Re: VBS: Win32_Trustee class

спасибо!!!

9

Re: VBS: Win32_Trustee class

НеОчень, здесь есть ещё один пример, который, возможно, будет полезен.

10 (изменено: Евген, 2012-07-30 14:28:00)

Re: VBS: Win32_Trustee class

Dmitrii приветствую !
Есть вопрос по четвёртому сценарию, он у меня на XP SP3 не работает. Ввожу "Все", выбираю корень диска C:\ ,затем 12, затем 2, потом выводит "Успешное завершение"
Но в просмотре прав только появляется учётка "Все" без прав
Что делаю не так ?

Времени не хватает... :-(

11

Re: VBS: Win32_Trustee class

Здравствуйте, Евген!
У меня сценарий №4 на указанной ОС и с указанными входными данными работает исправно.
Вы смотрели DACL только на вкладке "Безопасность" или заглядывали ещё и в раздел "Дополнительно"?
Дело в том, что при такой области действия обобщённый статус ACE (вне зависимости от маски) обозначается как "Особые разрешения" и иногда, попросту говоря, бывает "не по глазам". Я сам попадал в такую ситуацию.

12

Re: VBS: Win32_Trustee class

Не обращал внимания, завтра обязательно гляну...

Времени не хватает... :-(

13

Re: VBS: Win32_Trustee class

И ведь точно - как часики всё работает !
Видать я не там смотрел наличие прав...

Времени не хватает... :-(