Question
Propriétaire et droits sur dossier
- vincent
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 23
- Remerciements reçus 0
il y a 15 ans 1 mois #8616
par vincent
Propriétaire et droits sur dossier a été créé 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
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.
- EROS
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 15
- Remerciements reçus 0
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
- 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
Connexion ou Créer un compte pour participer à la conversation.
- EdouardG
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 19
- Remerciements reçus 0
il y a 15 ans 1 mois #8634
par EdouardG
Réponse de EdouardG sur le sujet Re:Propriétaire et droits sur dossier
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]
& C:\Windows\system32\icacls $strPath /setowner <DOMAIN>\$($user.SamAccountName) /T /C /Q
=& C:\Windows\system32\icacls $strPath /grant <DOMAIN>\$($user.SamAccountName):`(OI`)`(CI`)F /T /C /Q
[/code:1]
$strPath étant le chemin du dossier à corriger
$User un utilisateur AD
<DOMAIN> 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
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]
& C:\Windows\system32\icacls $strPath /setowner <DOMAIN>\$($user.SamAccountName) /T /C /Q
=& C:\Windows\system32\icacls $strPath /grant <DOMAIN>\$($user.SamAccountName):`(OI`)`(CI`)F /T /C /Q
[/code:1]
$strPath étant le chemin du dossier à corriger
$User un utilisateur AD
<DOMAIN> 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.
- Jacques Barathon
- Hors Ligne
- Administrateur
-
Réduire
Plus d'informations
- Messages : 576
- Remerciements reçus 0
il y a 15 ans 1 mois #8637
par Jacques Barathon
Réponse de Jacques Barathon sur le sujet Re:Propriétaire et droits sur dossier
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(\"BUILTIN\Administrateurs\"«»)
# Création d'une ACE (permission) donnant le droit de Lecture pour le groupe Utilisateurs du domaine MASOCIETE :
$ReadACE = new-object Security.AccessControl.FileSystemAccessRule(\"MASOCIETE\Utilisateurs\", \"ReadandExecute\", 3, 0, \"Allow\"«»)
# 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.
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(\"BUILTIN\Administrateurs\"«»)
# Création d'une ACE (permission) donnant le droit de Lecture pour le groupe Utilisateurs du domaine MASOCIETE :
$ReadACE = new-object Security.AccessControl.FileSystemAccessRule(\"MASOCIETE\Utilisateurs\", \"ReadandExecute\", 3, 0, \"Allow\"«»)
# 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.
- vincent
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 23
- Remerciements reçus 0
il y a 15 ans 1 mois #8641
par vincent
Réponse de vincent sur le sujet Re:Propriétaire et droits sur dossier
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
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.
- Jacques Barathon
- Hors Ligne
- Administrateur
-
Réduire
Plus d'informations
- Messages : 576
- Remerciements reçus 0
il y a 15 ans 1 mois #8643
par Jacques Barathon
Réponse de Jacques Barathon sur le sujet Re:Propriétaire et droits sur dossier
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.
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.078 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Propriétaire et droits sur dossier