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
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