Question Propriétaire et droits sur dossier

Plus d'informations
il y a 15 ans 1 mois #8616 par vincent
Bonjour,

Je voudrais créer un script pour modifier des droits sur des dossiers.
J'aimerai mettre le groupe \"administrateurs\" propriétaire et le groupe \"utilisateurs\" avec les droits de lecture sur un dossier.
Je voudrais que ce script ne s'appliquent qu'aux dossiers dont le nom se termine par \"V2\", comment puis-je faire ?
Merci d'avance de votre aide.

Vincent

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 15 ans 1 mois #8622 par EROS
Réponse de EROS sur le sujet Re:Propriétaire et droits sur dossier
Bonjour,

- Etape 1 du script : lister les différents répertoires remplissant la condition souhaitée (en l'occurrence se terminant par \"v2\").

\"get-help get-childitem -detailed\" te mettra déjà bien sur la voie pour cette partie.

pour la prochaine étape, plusieurs options possibles s'ouvrent à toi:

-- Option 1: commande set-acl en se basant sur un répertoire possédant déjà les droits à appliquer sur l'ensemble de tes répertoires cibles

(remarque: en dehors de la commande set-acl, les commandes natives de powershell ne te permettront pas énormément de manipulation).

-- Option 2: Personnellement, pour ce type d'opération, je te conseillerai d'utiliser la commande cacls ou iacls.
=> il te suffira de faire un cacls /? en POSH ou console de commande

<==> - Etape 2 : appliquer les droits en utilisant ta commande cacls pour chaque élément de ta liste de l'étape 1.

voir ce post pour une étude du même type.

-- Option 3: passer par les commandes WMI.

bon courage :)<br><br>Message édité par: Khalim EROS, à: 29/01/11 23:02

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 15 ans 1 mois #8634 par EdouardG
Salut !
Petite contribution.
Si tu te base, comme je te le suggère, sur l'option 2 proposée par Khalim, tu peux incorporer directement dans ton script les commandes ICACLS suivantes :

[code:1]
&amp; C:\Windows\system32\icacls $strPath /setowner &lt;DOMAIN&gt;\$($user.SamAccountName) /T /C /Q
=&amp; C:\Windows\system32\icacls $strPath /grant &lt;DOMAIN&gt;\$($user.SamAccountName):`(OI`)`(CI`)F /T /C /Q
[/code:1]

$strPath étant le chemin du dossier à corriger
$User un utilisateur AD
&lt;DOMAIN&gt; doit être inscrit en dur, je n'ai pas réussi à utiliser une variable à ce niveau.
Retire /Q pour avoir un mode bavard.

La 1ere ligne rend $User propriétaire du répertoire $strPath, de ses sous répertoires et ses fichiers
La seconde lui donne le contrôle total.
Adapte le tout à ta sauce !

Bonne journée,
sarou

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 15 ans 1 mois #8637 par Jacques Barathon
Hello,

Voici une bonne question qui illustre parfaitement le tuto en deux parties que j'ai posté la semaine dernière :

Introduction aux ACL
Introduction aux ACL (suite)

Vu ton besoin, tu peux directement lire la 2e partie qui traite de la modification des ACL.

Le seul point que je n'ai pas encore abordé dans ce tuto et dont tu peux avoir besoin, c'est la notion d'héritage. Ca n'est guère compliqué, il suffit de savoir quels paramètres ajouter quand on crée une ACE. Tout est documenté dans les pages MSDN consacrées aux types .NET manipulés.

Pour reprendre ton besoin précis, voici un exemple sommaire qui peut te fournir un squelette sur lequel t'appuyer :

[code:1]
# Déclaration du groupe Administrateurs local (remplacer BUILTIN par le nom de domaine si on veut utiliser le groupe Administrateurs du domaine) :
$admins = new-object Security.Principal.NTAccount(\&quot;BUILTIN\Administrateurs\&quot;«»)

# Création d'une ACE (permission) donnant le droit de Lecture pour le groupe Utilisateurs du domaine MASOCIETE :
$ReadACE = new-object Security.AccessControl.FileSystemAccessRule(\&quot;MASOCIETE\Utilisateurs\&quot;, \&quot;ReadandExecute\&quot;, 3, 0, \&quot;Allow\&quot;«»)

# Parcours de tous les dossiers v2 du répertoire en cours :
dir *v2 | where {$_.PSIsContainer} | foreach {

# Lecture de l'ACL du dossier :
$acl = get-acl $_

# Assignation du groupe Administrateurs en tant que propriétaire :
$acl.SetOwner($admins)

# Ajout de la permission de lecture pour le groupe Utilisateurs :
$acl.AddAccessRule($ReadACE)

# Application de l'ACL modifiée sur le dossier :
set-acl $_.FullName $acl
}
[/code:1]

Le code ci-dessus ne retire aucune permission. Il ne fait qu'ajouter le droit de lecture au groupe Utilisateurs. Si tu veux retirer des permissions, il faut utiliser la méthode RemoveAccessRule() de l'objet $acl avant de le ré-appliquer au répertoire.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 15 ans 1 mois #8641 par vincent
Merci pour vos messages.
J'ai utilisé la méthode de janel et ca marche très bien.
Par contre ca ne change les droits que sur le dossier en question.
Comment faire pour ca change aussi les droits sur les dossiers et fichiers enfants ?
Merci d'avance.

vincent

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 15 ans 1 mois #8643 par Jacques Barathon
As-tu bien utilisé la valeur 3 en troisième paramètre à la création du FileSystemAccessRule ?

Le troisième paramètre précise les conditions d'héritage, et la valeur 3 indique que la permission doit s'appliquer aux sous-dossiers ET aux fichiers enfants.

Si ça ne marche pas comme prévu, vérifie éventuellement s'il n'y a pas blocage de l'héritage au niveau des sous-dossiers.

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.087 secondes
Propulsé par Kunena