Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] VBS права на общую папку (http://forum.oszone.net/showthread.php?t=296948)

A-n_G_e-L 15-03-2015 15:46 2482992

VBS права на общую папку
 
Вложений: 2
Доброго времени суток, подскажите как программно с помощью vbs менять у конкретного пользователя права как показанно на рисунках.Файл 123290

Файл 123291

Dreamer_UFA 15-03-2015 16:06 2483004

Использование сценария Xcacls.vbs для изменения разрешений NTFS

Основные SIDы в Windows

Iska 15-03-2015 16:56 2483026

Сценарий Create a Shared Folder and Assign Share Permissions

A-n_G_e-L 15-03-2015 17:54 2483039

Вложений: 2
прошу прощения Xcalcs меняет разрешения во вкладке http://forum.oszone.net/attachment.p...1&d=1426431111 а мне нада http://forum.oszone.net/attachment.p...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 2483061

Цитата:

Цитата A-n_G_e-L
выдаёт ошибку на set account = getObject("Winmgmts:{impersonationlevel=impersonate}!root/cimv2:Win32_Group.Name='" & strName & "',Domain='" & strDomain &"'") »

Какую? Существует ли указанная группа безопасности в указанном домене?

Цитата:

Цитата A-n_G_e-L
если поставить on error resume nex папку создаёт а права недаёт, непойму в чем дело »

Именно потому, что поставили «on error resume next».

A-n_G_e-L 15-03-2015 18:50 2483070

разобрался со скриптом, но он опять же делает права не втой вкладке (

Iska 15-03-2015 21:28 2483129

Цитата:

Цитата A-n_G_e-L
разобрался со скриптом, но он опять же делает права не втой вкладке ( »

Почему у меня в той?!

Скрытый текст
Код:


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


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



В данном случае — локальная группа и имя машины: по причине отсутствия домена.

A-n_G_e-L 16-03-2015 20:21 2483562

Помогите разобраться(
кода вызываю на локальном коспе так: 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 2483613

Цитата:

Цитата A-n_G_e-L
Помогите разобраться( »

Разберитесь с тем кодом, ссылку на который я приводил выше.

Цитата:

Цитата A-n_G_e-L
кода вызываю на локальном коспе так: fnSetNewShare ".","C:\local foder","folder","des" всё фурыкает на локальном компе всё создаёт меняет назначает, »

Не верю. В функции пять формальных параметров:
Цитата:

Код:

Function fnSetNewShare(sComp,sFN,sUsr,sDesc,sShareN)

а Вы якобы вызываете её с четырьмя фактическими параметрами.

Цитата:

Цитата A-n_G_e-L
// ничего непроисходит »

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

Update: Ну, и до кучи — бред с:
Код:

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

A-n_G_e-L 17-03-2015 08:01 2483697

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

Iska 17-03-2015 08:22 2483703

В оригинале указывается не пользователь, а, как и положено, группа безопасности. Причём иначе:
Код:


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 2483741

Спасибо Iska ваши идеии подталкнули на написания своего скрипта гуляющего по всем компам в домене и меняющи разрешения с полного доступа только на чтение, осталось разобраться как добавить нескольких пользователей с разными разрешениями, но боюсь тот мне этого ответа не найти. так что тему можно считать закрытой.
Спасибо всем участникам!


Время: 05:48.

Время: 05:48.
© OSzone.net 2001-