Obtenir la liste des permissions de sécurité d'un répertoire

Le
Olivier
Bonjour à tous,

Depuis à certain nombre d'heure, je recherche une solution en VBScript pour
réaliser la chose suivante :

J'aimerais faire un script, pour un utilisateur, qui va rechercher les
permissions sur des répertoire réseaux. Par exemple, j'aimerais avoir une
liste d'utilisateur qui ont une autorisation sur W:GroupeIT et savoir si
c'est un accès Read ou R/W. Cela affin d'exporter les résultats dans un
fichier Excell. J'arrive à voir les listes des utilisateurs qui ont accès sur
un répertoire mais je ne vois pas les droits.

J'ai trouvé sur MSDN le code suivante :

*******************************************

On Error Resume Next
' The folder named "testfolder" must exist on the C: drive.

Set wmiFileSecSetting = GetObject( _
"winmgmts:Win32_LogicalFileSecuritySetting.path='c:\testfolder'")

RetVal = wmiFileSecSetting. _
GetSecurityDescriptor(wmiSecurityDescriptor)
If Err <> 0 Then
WScript.Echo "GetSecurityDescriptor failed" _
& VBCRLF & Err.Number & VBCRLF & Err.Description
WScript.Quit
Else
WScript.Echo "GetSecurityDescriptor succeeded"
End If

' Retrieve the DACL array of Win32_ACE objects.
DACL = wmiSecurityDescriptor.DACL

For each wmiAce in DACL

wscript.echo "Access Mask: " & wmiAce.AccessMask
wscript.echo "ACE Type: " & wmiAce.AceType

' Get Win32_Trustee object from ACE
Set Trustee = wmiAce.Trustee
wscript.echo "Trustee Domain: " & Trustee.Domain
wscript.echo "Trustee Name: " & Trustee.Name

' Get SID as array from Trustee
SID = Trustee.SID
strsid = join(SID, ",")
wscript.echo "Trustee SID: {" & strsid & "}"

Next

****************************************************

Mais cela ne résoud pas mon problème. Est-ce que quelqu'un peut m'aider pour
résoudre ce problème ? Je sais qu'il existe le script XCACLS mais je m'y perd
un peux dans ce script.

En vous remerciant d'avance de votre aide,
Olivier
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Thierry DEMAN [MVP]
Le #673755
Bonsoir,

Voici un lien sur un petit script qui réalise cela :
http://base.faqexchange.info/documents%20partages/Scripting/VbScript/showperms.vbs.TXT

C'est cette partie-ci qui te donnera les droits de chaque "entrée".

Set oDacl = oSD.DiscretionaryAcl
For each wmiAce in oDACL

' Trustee = wmiAce.Trustee
select Case int(wmiAce.AccessMask)
case 2032127
droits="FULL"
case 1179817
droits="RX"
case -1610612736
droits="RXe"
case 1245631
droits="RWX"
case 268435456
droits="FULL SUB ONLY"
case else
droits=Cstr(wmiAce.AccessMask)
end select
wscript.echo "Perms="&Droits&" Account=" & wmiAce.Trustee&"
level="&Cstr(Level)
Next

A+
--
Thierry DEMAN-BARCELÒ
Exchange MVP, MCSE2003+M,MCSE2003+S,MCDBA,MCITP dba&Dev
http://base.faqexchange.info http://www.faqexchange.info
http://ISAFirewalls.org

"Olivier" news:
Bonjour à tous,

Depuis à certain nombre d'heure, je recherche une solution en VBScript
pour
réaliser la chose suivante :

J'aimerais faire un script, pour un utilisateur, qui va rechercher les
permissions sur des répertoire réseaux. Par exemple, j'aimerais avoir une
liste d'utilisateur qui ont une autorisation sur W:GroupeIT et savoir si
c'est un accès Read ou R/W. Cela affin d'exporter les résultats dans un
fichier Excell. J'arrive à voir les listes des utilisateurs qui ont accès
sur
un répertoire mais je ne vois pas les droits.

J'ai trouvé sur MSDN le code suivante :

*******************************************

On Error Resume Next
' The folder named "testfolder" must exist on the C: drive.

Set wmiFileSecSetting = GetObject( _
"winmgmts:Win32_LogicalFileSecuritySetting.path='c:\testfolder'")

RetVal = wmiFileSecSetting. _
GetSecurityDescriptor(wmiSecurityDescriptor)
If Err <> 0 Then
WScript.Echo "GetSecurityDescriptor failed" _
& VBCRLF & Err.Number & VBCRLF & Err.Description
WScript.Quit
Else
WScript.Echo "GetSecurityDescriptor succeeded"
End If

' Retrieve the DACL array of Win32_ACE objects.
DACL = wmiSecurityDescriptor.DACL

For each wmiAce in DACL

wscript.echo "Access Mask: " & wmiAce.AccessMask
wscript.echo "ACE Type: " & wmiAce.AceType

' Get Win32_Trustee object from ACE
Set Trustee = wmiAce.Trustee
wscript.echo "Trustee Domain: " & Trustee.Domain
wscript.echo "Trustee Name: " & Trustee.Name

' Get SID as array from Trustee
SID = Trustee.SID
strsid = join(SID, ",")
wscript.echo "Trustee SID: {" & strsid & "}"

Next

****************************************************

Mais cela ne résoud pas mon problème. Est-ce que quelqu'un peut m'aider
pour
résoudre ce problème ? Je sais qu'il existe le script XCACLS mais je m'y
perd
un peux dans ce script.

En vous remerciant d'avance de votre aide,
Olivier


Olivier
Le #673754
C'est parfait, je vous remercie de votre aide. Maintenant je comprend bien
mieux.

"Thierry DEMAN [MVP]" wrote:

Bonsoir,

Voici un lien sur un petit script qui réalise cela :
http://base.faqexchange.info/documents%20partages/Scripting/VbScript/showperms.vbs.TXT

C'est cette partie-ci qui te donnera les droits de chaque "entrée".

Set oDacl = oSD.DiscretionaryAcl
For each wmiAce in oDACL

' Trustee = wmiAce.Trustee
select Case int(wmiAce.AccessMask)
case 2032127
droits="FULL"
case 1179817
droits="RX"
case -1610612736
droits="RXe"
case 1245631
droits="RWX"
case 268435456
droits="FULL SUB ONLY"
case else
droits=Cstr(wmiAce.AccessMask)
end select
wscript.echo "Perms="&Droits&" Account=" & wmiAce.Trustee&"
level="&Cstr(Level)
Next

A+
--
Thierry DEMAN-BARCELÒ
Exchange MVP, MCSE2003+M,MCSE2003+S,MCDBA,MCITP dba&Dev
http://base.faqexchange.info http://www.faqexchange.info
http://ISAFirewalls.org

"Olivier" news:
Bonjour à tous,

Depuis à certain nombre d'heure, je recherche une solution en VBScript
pour
réaliser la chose suivante :

J'aimerais faire un script, pour un utilisateur, qui va rechercher les
permissions sur des répertoire réseaux. Par exemple, j'aimerais avoir une
liste d'utilisateur qui ont une autorisation sur W:GroupeIT et savoir si
c'est un accès Read ou R/W. Cela affin d'exporter les résultats dans un
fichier Excell. J'arrive à voir les listes des utilisateurs qui ont accès
sur
un répertoire mais je ne vois pas les droits.

J'ai trouvé sur MSDN le code suivante :

*******************************************

On Error Resume Next
' The folder named "testfolder" must exist on the C: drive.

Set wmiFileSecSetting = GetObject( _
"winmgmts:Win32_LogicalFileSecuritySetting.path='c:\testfolder'")

RetVal = wmiFileSecSetting. _
GetSecurityDescriptor(wmiSecurityDescriptor)
If Err <> 0 Then
WScript.Echo "GetSecurityDescriptor failed" _
& VBCRLF & Err.Number & VBCRLF & Err.Description
WScript.Quit
Else
WScript.Echo "GetSecurityDescriptor succeeded"
End If

' Retrieve the DACL array of Win32_ACE objects.
DACL = wmiSecurityDescriptor.DACL

For each wmiAce in DACL

wscript.echo "Access Mask: " & wmiAce.AccessMask
wscript.echo "ACE Type: " & wmiAce.AceType

' Get Win32_Trustee object from ACE
Set Trustee = wmiAce.Trustee
wscript.echo "Trustee Domain: " & Trustee.Domain
wscript.echo "Trustee Name: " & Trustee.Name

' Get SID as array from Trustee
SID = Trustee.SID
strsid = join(SID, ",")
wscript.echo "Trustee SID: {" & strsid & "}"

Next

****************************************************

Mais cela ne résoud pas mon problème. Est-ce que quelqu'un peut m'aider
pour
résoudre ce problème ? Je sais qu'il existe le script XCACLS mais je m'y
perd
un peux dans ce script.

En vous remerciant d'avance de votre aide,
Olivier





Méta-MCI
Le #675702
Bonjour !

En invite de commande :
CACLS W:GroupeIT

On peut lancer la commande, depuis VBscript, avec RUN.
Le résultat peut être détourné sur un PIPE, ou dans un fichier.

@-salutations

Michel Claveau
Publicité
Poster une réponse
Anonyme