OVH Cloud OVH Cloud

script autorisations dans AD

2 réponses
Avatar
fabricel
bonjour,
je recherche le moyen de modifier la liste des autorisations avancés dans AD
par un script :
exemple :
ajouter sur une OU existante le groupe "responsables" avec des droits de
l"ire et écrire la propriété members" des objets de type groupe

à la souris c'est facile mais en script....
--
fabrice

2 réponses

Avatar
Gilles LAURENT
"fabricel" a écrit dans le message de
news:
| bonjour,

Bonjour,

| je recherche le moyen de modifier la liste des autorisations avancés
| dans AD par un script :
| exemple :
| ajouter sur une OU existante le groupe "responsables" avec des droits
| de l"ire et écrire la propriété members" des objets de type groupe
|
| à la souris c'est facile mais en script....

Ci-dessous le script VBScript vous permettant d'automatiser cette
délégation :

-- Coupez ici : delegateOU.vbs --

Option Explicit

' déclaration des variables
Dim oOU, oSD, oDACL, oAce
Dim strOU, strGroup

' définition des constantes
Const ADS_ACETYPE_ACCESS_ALLOWED_OBJECT = &H5
Const ADS_RIGHT_DS_READ_PROP = &H10
Const ADS_RIGHT_DS_WRITE_PROP = &H20
Const ADS_FLAG_OBJECT_TYPE_PRESENT = &H1
Const ADS_FLAG_INHERITED_OBJECT_TYPE_PRESENT = &H2
Const ADS_ACEFLAG_INHERIT_ACE = &H2

' lecture des arguments DN de l'OU et groupe
strOU = WScript.Arguments(0)
strGroup = WScript.Arguments(1)

' initialisation
Set oOU = GetObject ("LDAP://" & strOU)
Set oSD = oOU.Get ("ntSecurityDescriptor")

' lecture des droits actuels sur l'objet OU
Set oDACL = oSD.DiscretionaryACL

' construction d'une nouvelle Ace
Set oAce = CreateObject ("AccessControlEntry")
oAce.Trustee = strGroup
oAce.AceFlags = ADS_ACEFLAG_INHERIT_ACE
oAce.AceType = ADS_ACETYPE_ACCESS_ALLOWED_OBJECT
oAce.Flags = ADS_FLAG_OBJECT_TYPE_PRESENT OR _
ADS_FLAG_INHERITED_OBJECT_TYPE_PRESENT
oAce.ObjectType = "{bf9679c0-0de6-11d0-a285-00aa003049e2}"
oACE.InheritedObjectType = "{bf967a9c-0de6-11d0-a285-00aa003049e2}"
oAce.AccessMask = ADS_RIGHT_DS_READ_PROP OR _
ADS_RIGHT_DS_WRITE_PROP

' ajout de l'Ace dans l'ACL
oDACL.AddAce oAce

' mise à jour du SD
oSD.DiscretionaryAcl = oDACL

' sauvegarde des nouveaux droits d'accès dans l'annuaire
oOU.Put "ntSecurityDescriptor", oSD
oOU.SetInfo

-- Coupez ici : delegateOU.vbs --

Syntaxe :
cscript delegateOU.vbs "OU" "domainegroupe_ou utilisateur"

Par exemple, pour autoriser le groupe "domaineresponsables" à lire et
ajouter des membres aux groupes présents dans l'OU
"ou=mon_ou,dc=domaine,dc=local" alors :
>cscript delegateOU.vbs "ou=mon_ou,dc=domaine,dc=local"
"domaineresponsables"

--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Avatar
fabricel
merci je vais tester
"Gilles LAURENT" a écrit dans le message de news:
%
"fabricel" a écrit dans le message de
news:
| bonjour,

Bonjour,

| je recherche le moyen de modifier la liste des autorisations avancés
| dans AD par un script :
| exemple :
| ajouter sur une OU existante le groupe "responsables" avec des droits
| de l"ire et écrire la propriété members" des objets de type groupe
|
| à la souris c'est facile mais en script....

Ci-dessous le script VBScript vous permettant d'automatiser cette
délégation :

-- Coupez ici : delegateOU.vbs --

Option Explicit

' déclaration des variables
Dim oOU, oSD, oDACL, oAce
Dim strOU, strGroup

' définition des constantes
Const ADS_ACETYPE_ACCESS_ALLOWED_OBJECT = &H5
Const ADS_RIGHT_DS_READ_PROP = &H10
Const ADS_RIGHT_DS_WRITE_PROP = &H20
Const ADS_FLAG_OBJECT_TYPE_PRESENT = &H1
Const ADS_FLAG_INHERITED_OBJECT_TYPE_PRESENT = &H2
Const ADS_ACEFLAG_INHERIT_ACE = &H2

' lecture des arguments DN de l'OU et groupe
strOU = WScript.Arguments(0)
strGroup = WScript.Arguments(1)

' initialisation
Set oOU = GetObject ("LDAP://" & strOU)
Set oSD = oOU.Get ("ntSecurityDescriptor")

' lecture des droits actuels sur l'objet OU
Set oDACL = oSD.DiscretionaryACL

' construction d'une nouvelle Ace
Set oAce = CreateObject ("AccessControlEntry")
oAce.Trustee = strGroup
oAce.AceFlags = ADS_ACEFLAG_INHERIT_ACE
oAce.AceType = ADS_ACETYPE_ACCESS_ALLOWED_OBJECT
oAce.Flags = ADS_FLAG_OBJECT_TYPE_PRESENT OR _
ADS_FLAG_INHERITED_OBJECT_TYPE_PRESENT
oAce.ObjectType = "{bf9679c0-0de6-11d0-a285-00aa003049e2}"
oACE.InheritedObjectType = "{bf967a9c-0de6-11d0-a285-00aa003049e2}"
oAce.AccessMask = ADS_RIGHT_DS_READ_PROP OR _
ADS_RIGHT_DS_WRITE_PROP

' ajout de l'Ace dans l'ACL
oDACL.AddAce oAce

' mise à jour du SD
oSD.DiscretionaryAcl = oDACL

' sauvegarde des nouveaux droits d'accès dans l'annuaire
oOU.Put "ntSecurityDescriptor", oSD
oOU.SetInfo

-- Coupez ici : delegateOU.vbs --

Syntaxe :
cscript delegateOU.vbs "OU" "domainegroupe_ou utilisateur"

Par exemple, pour autoriser le groupe "domaineresponsables" à lire et
ajouter des membres aux groupes présents dans l'OU
"ou=mon_ou,dc=domaine,dc=local" alors :
>cscript delegateOU.vbs "ou=mon_ou,dc=domaine,dc=local"
"domaineresponsables"

--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD