Accéder à la SACL sous Windows Server 2003
Bonjour,
Je suis débutant en VBScript et j'ai un problème lorsque je veux accéder à la System ACL sous windows server 2003. Je n'ai par contre aucun problème pour la DACL.
Voici un bout de code (sale mais j'ai isolé le problème c'est tout) (/* J'ai enlevé toutes les constantes nécessaires...*/):
Code:
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
|
sub main
dim osd, osdutil, osace, osacl, ocontainer
dim satrustee
'Set ocontainer = GetObject("LDAP://ou=TF1,cn=vbscript,dc=ascotto,dc=test,dc=fr")
'ocontainer.SetOption ADS_OPTION_SECURITY_MASK, ADS_SECURITY_INFO_OWNER _
' Or ADS_SECURITY_INFO_GROUP Or ADS_SECURITY_INFO_DACL _
' Or ADS_SECURITY_INFO_SACL
set osdutil = CreateObject("ADsSecurityUtility") 'Création de l'objet ADsSecurity, permet entre autres de toucher aux droits
osdutil.SecurityMask = canReadSacl 'Par défaut la SACL != accessible dc on la rend accessible
set osd = osdutil.GetSecurityDescriptor("C:\Documents and Settings\Administrator\prog\vbscript", ADS_PATH_FILE, ADS_SD_FORMAT_IID)
'Set osd = ocontainer.Get("ntSecurityDescriptor")
set osacl = osd.SystemAcl
wscript.echo "group --> " & osd.Group & " control --> " & osd.Control & " owner --> " & osd.Owner
If (osd.Control And SE_SACL_PROTECTED) Then
Wscript.Echo "SACL is disabled."
Else
WScript.Echo "SACL is enabled."
end if
if (IsObject(osacl)) then
wscript.echo "osacl is object"
end if
wscript.echo "acecount --> " & osacl.acecount
for each osace in osacl
satrustee = osace.Trustee
wscript.echo "trustee " & satrustee
next
end sub |
Voici le résultat lorsque j'exécute le code:
Code:
1 2 3
|
C:\Documents and Settings\Administrator\prog\vbscript\lssacl.vbs(230, 1) (null):
A required privilege is not held by the client. |
Sachant que je suis sur un contrôleur de domaine et que je suis admin du domaine.
J'ai au début essayé en modifiant cette ligne:
Code:
1 2
|
set osd = osdutil.GetSecurityDescriptor("C:\Documents and Settings\Administrator\prog\vbscript", ADS_PATH_FILE, ADS_SD_FORMAT_IID) |
par celle là:
Code:
1 2
|
set osd = osdutil.GetSecurityDescriptor("\\ma_machine\vbscript$", ADS_PATH_FILESHARE, ADS_SD_FORMAT_IID) |
Le $ est nécessaire puisque le partage est créé en $. et voici l'erreur que j'ai eu:
Code:
1 2 3
|
C:\Documents and Settings\Administrator\prog\vbscript\lssacl.vbs(246, 1) Microso
ft VBScript runtime error: Object required: 'osacl' |
Je sais que c'est réalisable par une chaîne LDAP comme réalisé ici: http://www.activexperts.com/activmon...ersgroups/ous/
Mais je veux absolument éviter cette méthode car mon programme est bien plus long et fonctionne avec le sharepath (\\serveur\share).
Voilà ça fait maintenant quelques jours que je bloque et de l'aide serait la bienvenue.
Merci d'avance...