[VbScript] Rechten op share via script

Pagina: 1
Acties:
  • 678 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • supernova
  • Registratie: Augustus 2000
  • Laatst online: 22-09 11:00

supernova

Zabbix specialist 7 ;-)

Topicstarter
Ik probeer via het volgende script op een share rechten te zetten. Alleen loopt hij op de regel 45 vast en geeft alleen als error 80041002.
Dit zegt dus eigenlijk niet veel.
Het gedeelte om een group rechten te geven op de share werkt wel, maar bij een gebruiker loopt hij vast.
Kan het niet vinden waarom, misschien dat iemand van jullie een suggestie heeft.

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
Const MAXIMUM_CONNECTIONS = 5
Const strDomain = "yourdomain.com"
Const PERM_READ = 1179817
Const PERM_MODIFY = 1245631
Const PERM_FULL = 2032127

AdminServer = "\\London"
ShareName = LCase(Username) & "$"
FolderName = "D:\users\" & UserName
Admins = "domain admins"

Set Services = GetObject("WINMGMTS:{impersonationLevel=impersonate,(Security)}!" & AdminServer & "\root\cimv2")
Set SecDescClass = Services.Get("Win32_SecurityDescriptor")
Set SecDesc = SecDescClass.SpawnInstance_() 
Set Trustee = SetGroupTrustee(strDomain, admins) 'Use SetGroupTrustee for groups and SetAccountTrustee for users
Set ACE = Services.Get("Win32_Ace").SpawnInstance_
ACE.Properties_.Item("AccessMask") = PERM_FULL
ACE.Properties_.Item("AceFlags") = 3
ACE.Properties_.Item("AceType") = 0
ACE.Properties_.Item("Trustee") = Trustee
SecDesc.Properties_.Item("DACL") = Array(ACE)
Set Trustee = SetAccountTrustee(strDomain, UserName) 'Use SetGroupTrustee for groups and SetAccountTrustee for users
Set ACE = Services.Get("Win32_Ace").SpawnInstance_
ACE.Properties_.Item("AccessMask") = PERM_MODIFY
ACE.Properties_.Item("AceFlags") = 3
ACE.Properties_.Item("AceType") = 0
ACE.Properties_.Item("Trustee") = Trustee
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") = "Home Directory"
InParam.Properties_.Item("Name") = ShareName
InParam.Properties_.Item("Path") = FolderName
InParam.Properties_.Item("MaximumAllowed") = MAXIMUM_CONNECTIONS
InParam.Properties_.Item("Type") = 0
Share.ExecMethod_"Create", InParam


Function SetAccountTrustee(strDomain, strName)
Dim objTrustee
Dim account
Dim accountSID
set objTrustee = getObject("Winmgmts:{impersonationlevel=impersonate}!root/cimv2:Win32_Trustee").Spawninstance_
[u]set account = getObject("Winmgmts:{impersonationlevel=impersonate}!root/cimv2:Win32_Account.Name='" & strName & "',Domain='" & strDomain &"'")
[/u]set accountSID = getObject("Winmgmts:{impersonationlevel=impersonate}!root/cimv2:Win32_SID.SID='" & account.SID &"'")
objTrustee.Domain = strDomain
objTrustee.Name = strName
objTrustee.Properties_.item("SID") = accountSID.BinaryRepresentation
set accountSID = nothing
set account = nothing
set SetAccountTrustee = objTrustee
End Function

Function SetGroupTrustee(strDomain, strName)
Dim objTrustee
Dim account
Dim accountSID
set objTrustee = getObject("Winmgmts:{impersonationlevel=impersonate}!root/cimv2:Win32_Trustee").Spawninstance_
set account = getObject("Winmgmts:{impersonationlevel=impersonate}!root/cimv2:Win32_Group.Name='" & strName & "',Domain='" & strDomain &"'")
set accountSID = getObject("Winmgmts:{impersonationlevel=impersonate}!root/cimv2:Win32_SID.SID='" & account.SID &"'")
objTrustee.Domain = strDomain
objTrustee.Name = strName
objTrustee.Properties_.item("SID") = accountSID.BinaryRepresentation
set accountSID = nothing
set account = nothing
set SetGroupTrustee = objTrustee
End Function

[ Voor 1% gewijzigd door supernova op 02-08-2007 14:31 . Reden: [code]-tags ]

PS5 User ;-) ...


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • supernova
  • Registratie: Augustus 2000
  • Laatst online: 22-09 11:00

supernova

Zabbix specialist 7 ;-)

Topicstarter
Sorry, Ben er zo mee bezig omdat het niet lukt... Even vergeten het goed te doen en te lezen van hoe en wat....

PS5 User ;-) ...


Acties:
  • 0 Henk 'm!

  • alt-92
  • Registratie: Maart 2000
  • Niet online

alt-92

ye olde farte

Ok, maar heb je je script ook al zelf een keer debugged?

Douw er eens een Wscript.Echo tussen op die plekken waar het mis gaat om te controleren of er uberhaupt wel een waarde meegegeven wordt?

code:
1
Code 80041002 :Object not Found


oftewel: er is iets niet of niet goed gedeclareerd, of het wordt niet gevonden.

http://www.computerperfor...on/code/code_80041002.htm

(2 minuten google overigens...)

[ Voor 38% gewijzigd door alt-92 op 02-08-2007 11:49 ]

ik heb een 864 GB floppydrive! - certified prutser - the social skills of a thermonuclear device


Acties:
  • 0 Henk 'm!

  • supernova
  • Registratie: Augustus 2000
  • Laatst online: 22-09 11:00

supernova

Zabbix specialist 7 ;-)

Topicstarter
alt-92 schreef op donderdag 02 augustus 2007 @ 11:45:
Ok, maar heb je je script ook al zelf een keer debugged?

Douw er eens een Wscript.Echo tussen op die plekken waar het mis gaat om te controleren of er uberhaupt wel een waarde meegegeven wordt?

code:
1
Code 80041002 :Object not Found


oftewel: er is iets niet of niet goed gedeclareerd, of het wordt niet gevonden.

http://www.computerperfor...on/code/code_80041002.htm

(2 minuten google overigens...)
Tja... Ben zelf met een debugger bezig en die code vond ik ook... Alleen de verklaring waarom hij iets niet kan vinden is vreemd... Bij de group trustee gaat het wel goed en alleen als ik een user wil gebruiken gaat het fout..

PS5 User ;-) ...


Acties:
  • 0 Henk 'm!

  • alt-92
  • Registratie: Maart 2000
  • Niet online

alt-92

ye olde farte

Overigens... waarom met share rechten klooien?
NTFS ACLs met de juiste ACE 's zijn stuk-ken beter.

Je maakt het jezelf en collegabeheerders alleen maar moeilijker door op twee plaatsen permissies in te gaan stellen...

ik heb een 864 GB floppydrive! - certified prutser - the social skills of a thermonuclear device


Acties:
  • 0 Henk 'm!

  • supernova
  • Registratie: Augustus 2000
  • Laatst online: 22-09 11:00

supernova

Zabbix specialist 7 ;-)

Topicstarter
alt-92 schreef op donderdag 02 augustus 2007 @ 11:57:
Overigens... waarom met share rechten klooien?
NTFS ACLs met de juiste ACE 's zijn stuk-ken beter.

Je maakt het jezelf en collegabeheerders alleen maar moeilijker door op twee plaatsen permissies in te gaan stellen...
Dit is van oudsher al zo ingesteld door de oudere systeembeheerders hier en zo willen ze het ook houden.
Er is natuurlijk niets mis mee, maar voor beheer is het inderdaag handiger om het zo simple mogelijk te houden.. Maar oude gewoontens roesten wel eens vast. _/-\o_

Maar voor mij is het nu een uitdaging om het toch aan de gang te krijgen.. Vooral omdat het group gedeelte wel goed werkt...

PS5 User ;-) ...


Acties:
  • 0 Henk 'm!

  • SKiLLa
  • Registratie: Februari 2002
  • Niet online

SKiLLa

Byte or nibble a bit ?

Eigenlijk heel simpel:

" root/cimv2:Win32_Account " bestaat niet, volgens mij moet dat zijn:
" root/cimv2:Win32_SystemAccount " :+

'Political Correctness is fascism pretending to be good manners.' - George Carlin


Acties:
  • 0 Henk 'm!

  • supernova
  • Registratie: Augustus 2000
  • Laatst online: 22-09 11:00

supernova

Zabbix specialist 7 ;-)

Topicstarter
SKiLLa schreef op donderdag 02 augustus 2007 @ 12:14:
Eigenlijk heel simpel:

" root/cimv2:Win32_Account " bestaat niet, volgens mij moet dat zijn:
" root/cimv2:Win32_SystemAccount " :+
Ehm... Als ik via google kijk is het overal Win32_Account en niet met SystemAccount.
Heb het natuurlijk wel eerst geprobeerd :o... Maar helaas geen resultaat.. Ja error code 80041002.
En die is toch al zo onduidelijk.. :)

PS5 User ;-) ...


Acties:
  • 0 Henk 'm!

  • SKiLLa
  • Registratie: Februari 2002
  • Niet online

SKiLLa

Byte or nibble a bit ?

Je hebt gelijk, Win32_SystemAccount is alleen voor 'system accounts', ik bedoelde eigenlijk:
Win32_UserAccount, beetje stom :X Win32_AccountSID bestaat wel, maar Win32_Account bestaat niet op m'n workstation. Misschien op een DC wel, maar dat kan ik nu niet controleren ...

Mocht Win32_UserAccount niet werken, ga dan ff met Scriptomatic v2 van MS aan de slag, is wel makkelijk namespaces & properties queryen ...

'Political Correctness is fascism pretending to be good manners.' - George Carlin


Acties:
  • 0 Henk 'm!

  • supernova
  • Registratie: Augustus 2000
  • Laatst online: 22-09 11:00

supernova

Zabbix specialist 7 ;-)

Topicstarter
SKiLLa schreef op donderdag 02 augustus 2007 @ 12:55:
Je hebt gelijk, Win32_SystemAccount is alleen voor 'system accounts', ik bedoelde eigenlijk:
Win32_UserAccount, beetje stom :X Win32_AccountSID bestaat wel, maar Win32_Account bestaat niet op m'n workstation. Misschien op een DC wel, maar dat kan ik nu niet controleren ...

Mocht Win32_UserAccount niet werken, ga dan ff met Scriptomatic v2 van MS aan de slag, is wel makkelijk namespaces & properties queryen ...
Thnks, ga het direct uit proberen.. Laat het wel weten.

PS5 User ;-) ...


Acties:
  • 0 Henk 'm!

  • supernova
  • Registratie: Augustus 2000
  • Laatst online: 22-09 11:00

supernova

Zabbix specialist 7 ;-)

Topicstarter
SKiLLa schreef op donderdag 02 augustus 2007 @ 12:55:
Je hebt gelijk, Win32_SystemAccount is alleen voor 'system accounts', ik bedoelde eigenlijk:
Win32_UserAccount, beetje stom :X Win32_AccountSID bestaat wel, maar Win32_Account bestaat niet op m'n workstation. Misschien op een DC wel, maar dat kan ik nu niet controleren ...

Mocht Win32_UserAccount niet werken, ga dan ff met Scriptomatic v2 van MS aan de slag, is wel makkelijk namespaces & properties queryen ...
Het is inderdaad UserAccount.. Alleen nu dan kijken hoe het wil gaan werken...

PS5 User ;-) ...


Acties:
  • 0 Henk 'm!

  • supernova
  • Registratie: Augustus 2000
  • Laatst online: 22-09 11:00

supernova

Zabbix specialist 7 ;-)

Topicstarter
Het is wel leuk dat volgens mijn gegevens, dus van de maker waar ik gedeeltes uit gehaald hebt, het wel zou moeten werken onder win2k en win2k3.

Maar met scriptomatic kom ik dus Win32_Account.name niet tegen onder Xp en Win2k3...
Alleen dus UserAccount.

Als ik het nu dus in het script aanpas dan werkt het nog steeds niet...
Om kwaad op te worden... :(

PS5 User ;-) ...


Acties:
  • 0 Henk 'm!

  • SKiLLa
  • Registratie: Februari 2002
  • Niet online

SKiLLa

Byte or nibble a bit ?

Nog steeds zelfde error ? En wat als je in ScriptoMatic die regel 45 query uitvoert met een bestaande account & domain ingevuld ?

'Political Correctness is fascism pretending to be good manners.' - George Carlin


Acties:
  • 0 Henk 'm!

  • supernova
  • Registratie: Augustus 2000
  • Laatst online: 22-09 11:00

supernova

Zabbix specialist 7 ;-)

Topicstarter
SKiLLa schreef op donderdag 02 augustus 2007 @ 13:48:
Nog steeds zelfde error ? En wat als je in ScriptoMatic die regel 45 query uitvoert met een bestaande account & domain ingevuld ?
Krijg ik error 80041002.

Kom er niet uit.. Als ik een query uitvoer zoals scriptomatic het doet, dan krijg ik dus wel een uitvoer.

Dit is wat Scriptomatic er van maakt en heb dus mijn regel er tussen gezet om te kijken wat hij doet.
Regel 12 komt dus uit mijn andere script.

[ Voor 138% gewijzigd door supernova op 02-08-2007 17:00 . Reden: Code niet van belang ]

PS5 User ;-) ...


Acties:
  • 0 Henk 'm!

  • supernova
  • Registratie: Augustus 2000
  • Laatst online: 22-09 11:00

supernova

Zabbix specialist 7 ;-)

Topicstarter
Ok.. Ben er achter.. ik heb als domain yourdomain.com staan..
Dit gaat dus niet goed zag ik op het internet.. Het moet gewoon yourdomain zijn.

Nu werkt hij wel... Nu alleen voor mij verder uitzoeken hoe ik zowel een users als groep kan toevoegen, nu doet hij zoals mijn script nu staat alleen de user en de groep gooit hij weg... Zal wel een instelling zijn, alleen even zoeken welke..

/Edit

Klein stukje verder.
Als je de volg orde bekijkt, dan geeft hij eerst de domain admin rechten daarna doet hij de gebruiker, maar dan is het probleem er. Hij gooit eerst alles weg en dan voegt hij de nieuwe toe.
Ik wil eigenlijk dat de eerste, dus de groep, toegevoegd wordt als enige.
Daarna moet hij de gebruiker erbij zetten.
Via dit script krijg ik het nog niet voor elkaar.. Als iemand een idee heeft graag.

ben nu even de kluts kwijt. :o

[ Voor 36% gewijzigd door supernova op 02-08-2007 16:19 ]

PS5 User ;-) ...


Acties:
  • 0 Henk 'm!

  • alt-92
  • Registratie: Maart 2000
  • Niet online

alt-92

ye olde farte

Jup :)
Tip 1: in grotere netwerken nooit losse accounts in een ACE gebruiken, alleen groepen (of rollen).
Tip 2: kijk goed naar de volgorde van je script, en de opbouw van de ACE's die uiteindelijk worden weggeschreven ;)

Het script doet namelijk precies wat je 'm laat doen :P

code:
1
SecDesc.Properties_.Item("DACL") = Array(ACE)

Hint:
als je die twee keer gebruikt wordt de laatst gevulde waarde genomen, niet cumulatief

[ Voor 23% gewijzigd door alt-92 op 02-08-2007 17:03 ]

ik heb een 864 GB floppydrive! - certified prutser - the social skills of a thermonuclear device


Acties:
  • 0 Henk 'm!

  • supernova
  • Registratie: Augustus 2000
  • Laatst online: 22-09 11:00

supernova

Zabbix specialist 7 ;-)

Topicstarter
alt-92 schreef op donderdag 02 augustus 2007 @ 16:53:
[...]


Jup :)
Tip 1: in grotere netwerken nooit losse accounts in een ACE gebruiken, alleen groepen (of rollen).
Tip 2: kijk goed naar de volgorde van je script, en de opbouw van de ACE's die uiteindelijk worden weggeschreven ;)
De volgorde heb ik al een paar keer aangepast.. En het lukt nog steeds niet.. Kijk vast ergens over heen, alleen wil de bal niet vallen... 8)7

Maar het is de bedoeling om wel losse accounts te gebruiken, anders was ik al klaar geweest.
Jammer maar helaas...

Maar ik zal er nog eens vanavond of anders morgen met een frisse blik naar kijken.

[ Voor 6% gewijzigd door supernova op 02-08-2007 17:02 ]

PS5 User ;-) ...


Acties:
  • 0 Henk 'm!

  • alt-92
  • Registratie: Maart 2000
  • Niet online

alt-92

ye olde farte

Zie edit :)

ik heb een 864 GB floppydrive! - certified prutser - the social skills of a thermonuclear device


Acties:
  • 0 Henk 'm!

  • supernova
  • Registratie: Augustus 2000
  • Laatst online: 22-09 11:00

supernova

Zabbix specialist 7 ;-)

Topicstarter
Sorry voor de late reaktie... Was even onder het mes geweest.. :'(

Maar ik zal het morgen eens gaan bekijken en kijken of ik er uit kan komen, hoe ik het dan precies kan gebruiken.. Ben er nog niet zo heel handig in... Beertje roestig kan ik wel zeggen, telang geleden dat ik er mee bezig ben geweest.

PS5 User ;-) ...


Acties:
  • 0 Henk 'm!

  • supernova
  • Registratie: Augustus 2000
  • Laatst online: 22-09 11:00

supernova

Zabbix specialist 7 ;-)

Topicstarter
Thnks.

Je heb me op de juiste weg geholpen... Mijn scriptje draait nu perfect. NU nog even uitzoeken of ik ook lokale accounts rechten kan geven, dan zou het helemaal perfect zijn...

Maar dit is al een goede start _/-\o_ 8)

PS5 User ;-) ...

Pagina: 1