PDA

Показать полную графическую версию : [решено] VBS права на общую папку


A-n_G_e-L
15-03-2015, 15:46
Доброго времени суток, подскажите как программно с помощью vbs менять у конкретного пользователя права как показанно на рисунках.123290

123291

Dreamer_UFA
15-03-2015, 16:06
Использование сценария Xcacls.vbs для изменения разрешений NTFS (http://support.microsoft.com/ru-ru/kb/825751)

Основные SIDы в Windows (http://support2.microsoft.com/default.aspx?scid=kb;EN-US;Q243330)

Iska
15-03-2015, 16:56
Сценарий Create a Shared Folder and Assign Share Permissions (https://gallery.technet.microsoft.com/scriptcenter/6309d93b-fcc3-4586-b102-a71415244712)

A-n_G_e-L
15-03-2015, 17:54
прошу прощения Xcalcs меняет разрешения во вкладке http://forum.oszone.net/attachment.php?attachmentid=123298&stc=1&d=1426431111 а мне нада http://forum.oszone.net/attachment.php?attachmentid=123299&stc=1&d=1426431111.

скрипт от Iska выдаёт ошибку на set account = getObject("Winmgmts:{impersonationlevel=impersonate}!root/cimv2:Win32_Group.Name='" & strName & "',Domain='" & strDomain &"'") если поставить on error resume nex папку создаёт а права недаёт, непойму в чем дело

Iska
15-03-2015, 18:33
выдаёт ошибку на set account = getObject("Winmgmts:{impersonationlevel=impersonate}!root/cimv2:Win32_Group.Name='" & strName & "',Domain='" & strDomain &"'") »
Какую? Существует ли указанная группа безопасности в указанном домене?

если поставить on error resume nex папку создаёт а права недаёт, непойму в чем дело »
Именно потому, что поставили «on error resume next».

A-n_G_e-L
15-03-2015, 18:50
разобрался со скриптом, но он опять же делает права не втой вкладке (

Iska
15-03-2015, 21:28
разобрался со скриптом, но он опять же делает права не втой вкладке ( »
Почему у меня в той?!


Call sharesec ("C:\Robot", "Robot", "SCOT SHARE", "Опытные пользователи")


Set Trustee = SetGroupTrustee("MachineName", account) 'Replace ACME with your domain name.



http://i.imgur.com/QwF5ut2.png
В данном случае — локальная группа и имя машины: по причине отсутствия домена.

A-n_G_e-L
16-03-2015, 20:21
Помогите разобраться(
кода вызываю на локальном коспе так: fnSetNewShare ".","C:\local foder","folder","des" всё фурыкает на локальном компе всё создаёт меняет назначает, но стоит ввести удалёную машину в домене : fnSetNewShare "asu35","C:\local foder","folder","des" // ничего непроисходит(((( где затуп ?

Function fnSetNewShare(sComp,sFN,sUsr,sDesc,sShareN)
Set Services = GetObject("winmgmts:{impersonationLevel=impersonate,(Security)}!\\"&sComp&"\root\cimv2")
Set SecDescClass = Services.Get("Win32_SecurityDescriptor")
Set SecDesc = SecDescClass.SpawnInstance_()
Set colWinAcc = Services.ExecQuery("SELECT * FROM Win32_ACCOUNT WHERE Name='" & sUsr & "'")
If colWinAcc.Count => 1 Then ' Wscript.echo("User " & sUsr & "Not Found - quitting") : wscript.quit
For Each refItem in colWinAcc : Set refSID = Services.Get("Win32_SID='" & refItem.SID & "'") : Next
Set refTrustee = Services.Get("Win32_Trustee").spawnInstance_()
refTrustee.Domain = refSID.ReferencedDomainName
refTrustee.Name = refSID.AccountName
refTrustee.SID = refSID.BinaryRepresentation
refTrustee.SidLength = refSID.SidLength
refTrustee.SIDString = refSID.SID
Set ACE = Services.Get("Win32_Ace").SpawnInstance_
ACE.Properties_.Item("AccessMask") = 1179817 '2032127
ACE.Properties_.Item("AceFlags") = 3
ACE.Properties_.Item("AceType") = 1 '0=allow access 1=deny access
ACE.Properties_.Item("Trustee") = refTrustee
SecDesc.Properties_.Item("DACL") = Array(ACE)
Set Share = Services.Get("Win32_Share")
Set InParam = Share.Methods_("Create").InParameters.SpawnInstance_()
InParam.Properties_.Item("Access") = SecDesc
InParam.Properties_.Item("Description") = sDesc
InParam.Properties_.Item("Name") = sShareN
InParam.Properties_.Item("Path") = "'" & sFN & "'"
InParam.Properties_.Item("Type") = 0
Set outParams=Share.ExecMethod_("Create", InParam)
End If
End Function

Iska
16-03-2015, 21:43
Помогите разобраться( »
Разберитесь с тем кодом, ссылку на который я приводил выше.

кода вызываю на локальном коспе так: fnSetNewShare ".","C:\local foder","folder","des" всё фурыкает на локальном компе всё создаёт меняет назначает, »
Не верю. В функции пять формальных параметров:
Function fnSetNewShare(sComp,sFN,sUsr,sDesc,sShareN)
а Вы якобы вызываете её с четырьмя фактическими параметрами.

// ничего непроисходит »
У Вас по-прежнему в коде присутствует «On Error Resume Next»?

Update: Ну, и до кучи — бред с:
InParam.Properties_.Item("Path") = "'" & sFN & "'"
Не пойдёт лошадь под землю, мил человек не будет исполняться такой код. Не нужны там обрамляющие одинарные кавычки для пути. От слова «совсем».

A-n_G_e-L
17-03-2015, 08:01
fnSetNewShare ".","C:\local foder","User domena","folder","des"
прошу прощения 1 параметр забыл сдесь написать...
в вашем примере я немогу догнать с построением Trustee
SetGroupTrustee("домен", "юзер доменный") - так?
если так то у меня несрабатывает(

Iska
17-03-2015, 08:22
В оригинале указывается не пользователь, а, как и положено, группа безопасности. Причём иначе:

Call sharesec ("C:\Robot", "Robot", "SCOT SHARE", "Опытные пользователи")


Set Trustee = SetGroupTrustee("domain", account) 'Replace ACME with your domain name.


т.е., группа указывается при вызове «sharesec()», а «account» в «SetGroupTrustee()» — это переменная, в которой уже содержится искомая группа.

A-n_G_e-L
17-03-2015, 10:30
Спасибо Iska ваши идеии подталкнули на написания своего скрипта гуляющего по всем компам в домене и меняющи разрешения с полного доступа только на чтение, осталось разобраться как добавить нескольких пользователей с разными разрешениями, но боюсь тот мне этого ответа не найти. так что тему можно считать закрытой.
Спасибо всем участникам!




© OSzone.net 2001-2012