Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1339 connectés 

  FORUM HardWare.fr
  Systèmes & Réseaux Pro
  Stockage

  [Résolu] Script powershell - Héritage

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Résolu] Script powershell - Héritage

n°178879
Lanstack
Posté le 22-08-2023 à 22:01:00  profilanswer
 

Bonjour,
 
Je souhaite désactiver l'héritage d'un dossier et Convertir les autorisations hérités en autorisations explicites sur cet objet avec un script Powershell
 
Ayant un niveau n-1 en powershell, j'ai demandé à ChatGPT de me créer un script powershell
 
# Chemin complet du dossier "Compta1"
$folderPath = "D:\Compta1"
 
# Désactiver l'héritage des autorisations
$acl = Get-Acl -Path $folderPath
$acl.SetAccessRuleProtection($true, $false)  # Désactive l'héritage et supprime les autorisations héritées
Set-Acl -Path $folderPath -AclObject $acl
 
# Supprimer toutes les autorisations héritées du dossier et appliquer les nouvelles autorisations
$groupName = "Tokiwa.lan\Employés de Nantes"
$accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule($groupName, "Read", "Allow" )
 
$childItems = Get-ChildItem -Path $folderPath -Recurse
foreach ($item in $childItems) {
    $itemAcl = Get-Acl -Path $item.FullName
    $itemAcl.SetAccessRuleProtection($true, $false)  # Désactive l'héritage et supprime les autorisations héritées
    $itemAcl.Access | ForEach-Object {
        $itemAcl.RemoveAccessRule($_)  # Supprime toutes les autorisations héritées
    }
    $itemAcl.AddAccessRule($accessRule)  # Ajoute la nouvelle autorisation
    Set-Acl -Path $item.FullName -AclObject $itemAcl
}

 
Write-Host "L'héritage des autorisations a été désactivé, les autorisations héritées ont été supprimées et les nouvelles autorisations ont été appliquées pour le dossier $folderPath et ses éléments."
 
L'héritage est désactivé, sauf les droits NTFS ne s'applique plus d'au dossier seulement (voir mes 2 images pour comprendre mon problème)
 
https://zupimages.net/up/23/34/0xhm.png
 
https://zupimages.net/up/23/34/csg6.png


Message édité par Lanstack le 23-08-2023 à 22:14:00

---------------
« Mais j'vous jure, y'a dix minutes, ça marchait très bien... »  
mood
Publicité
Posté le 22-08-2023 à 22:01:00  profilanswer
 

n°178880
Ryo-Ohki
10th Rabbit
Posté le 22-08-2023 à 22:27:58  profilanswer
 

bon j'ai les yeux qui se croisent un peu à cette heure et j'ai l'impression d'être au taff alors que c'est les vacances  :o  J'ai pas totalement compris où est ton problème par contre, mes remarques :
 
Si tu veux désactiver l'héritage et conserver les droits existants en tant que droits explicites sur $folderPath, seule la partie jusqu'à la ligne commentée "# Supprimer toutes les autorisations héritées du dossier..." suffit.
 
La partie après avec la boucle désactive l'héritage sur chaque objet enfant, y compris chaque fichier individuel ça va être cauchemardesque à gérer.
 
ChatGPT c'est bien mais bon il fait de l'excès de zèle là.
 
Ensuite tu peux juste rajouter les droits de ton groupe sur $folderPath avec :
 
$groupName = "Tokiwa.lan\Employés de Nantes"
$accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule($groupName, "Read", "Allow" )  
$acl = Get-Acl -Path $folderPath
$acl.AddAccessRule($accessRule)
Set-Acl -Path $folderPath -AclObject $acl  
 
Et là ton groupe "employés de Nantes" aura le droit Read sur le dossier et tout ce qu'il y a en dessous.

Message cité 1 fois
Message édité par Ryo-Ohki le 22-08-2023 à 22:30:22

---------------
The Lapin, reloaded  |  "Anything can happen in Formula One, and it usually does." -- Murray Walker
n°178881
Lanstack
Posté le 22-08-2023 à 23:46:13  profilanswer
 

Ryo-Ohki a écrit :

bon j'ai les yeux qui se croisent un peu à cette heure et j'ai l'impression d'être au taff alors que c'est les vacances  :o  J'ai pas totalement compris où est ton problème par contre, mes remarques :
 
Si tu veux désactiver l'héritage et conserver les droits existants en tant que droits explicites sur $folderPath, seule la partie jusqu'à la ligne commentée "# Supprimer toutes les autorisations héritées du dossier..." suffit.
 
La partie après avec la boucle désactive l'héritage sur chaque objet enfant, y compris chaque fichier individuel ça va être cauchemardesque à gérer.
 
ChatGPT c'est bien mais bon il fait de l'excès de zèle là.
 
Ensuite tu peux juste rajouter les droits de ton groupe sur $folderPath avec :
 
$groupName = "Tokiwa.lan\Employés de Nantes"
$accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule($groupName, "Read", "Allow" )  
$acl = Get-Acl -Path $folderPath
$acl.AddAccessRule($accessRule)
Set-Acl -Path $folderPath -AclObject $acl  
 
Et là ton groupe "employés de Nantes" aura le droit Read sur le dossier et tout ce qu'il y a en dessous.


 
 
Je te remercie de m'aider...
Ca ne fonctionne pas.... Voir mon image pour comprendre
 
https://zupimages.net/up/23/34/ujd9.png
 
 


---------------
« Mais j'vous jure, y'a dix minutes, ça marchait très bien... »  
n°178882
Ryo-Ohki
10th Rabbit
Posté le 23-08-2023 à 08:43:31  profilanswer
 

Alors déjà petite correction (j'avais bien dit que les yeux se croisaient)
 
Pour casser l'héritage ET préserver les droits existants en tant que permissions explicites c'est :
 
SetAccessRuleProtection($true, $true)
 
Si on met $false à cet endroit les droits existants sont effectivement purgés.
 
Pour la propagation sur "this folder, subfolder and files" tu dois transformer ton access rule en :
 
$accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule($groupName, "ReadAndExecute", "ContainerInherit, ObjectInherit","None","Allow" )
 
Met aussi "ReadAndExecute" comme ci dessus, Read tout court ne suffit pas (ça ne te permet que de lister les dossiers, les fichiers seront pas accessibles)
 
 
Repart depuis le début sur un nouveau dossier pour pas trainer les résultats de tes tests précédents
 
Voilà ce que ça donne chez moi (j'ai rajouté le groupe Everyone sur le dossier, Administrators, SYSTEM et Users sont récupérés du dossier parent et transformés en droits explicites)
 
https://i.imgur.com/QgItW1P.jpg

Message cité 1 fois
Message édité par Ryo-Ohki le 23-08-2023 à 08:47:54

---------------
The Lapin, reloaded  |  "Anything can happen in Formula One, and it usually does." -- Murray Walker
n°178886
Lanstack
Posté le 23-08-2023 à 22:13:33  profilanswer
 

Ryo-Ohki a écrit :

Alors déjà petite correction (j'avais bien dit que les yeux se croisaient)
 
Pour casser l'héritage ET préserver les droits existants en tant que permissions explicites c'est :
 
SetAccessRuleProtection($true, $true)
 
Si on met $false à cet endroit les droits existants sont effectivement purgés.
 
Pour la propagation sur "this folder, subfolder and files" tu dois transformer ton access rule en :
 
$accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule($groupName, "ReadAndExecute", "ContainerInherit, ObjectInherit","None","Allow" )
 
Met aussi "ReadAndExecute" comme ci dessus, Read tout court ne suffit pas (ça ne te permet que de lister les dossiers, les fichiers seront pas accessibles)
 
 
Repart depuis le début sur un nouveau dossier pour pas trainer les résultats de tes tests précédents
 
Voilà ce que ça donne chez moi (j'ai rajouté le groupe Everyone sur le dossier, Administrators, SYSTEM et Users sont récupérés du dossier parent et transformés en droits explicites)
 
https://i.imgur.com/QgItW1P.jpg


 
 
Merci


---------------
« Mais j'vous jure, y'a dix minutes, ça marchait très bien... »  
n°178887
nebulios
Posté le 24-08-2023 à 11:06:35  profilanswer
 

Bien plus simple, tu passes par le module NTFS Access.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Systèmes & Réseaux Pro
  Stockage

  [Résolu] Script powershell - Héritage

 

Sujets relatifs
[Résolu] Création d'un partage en powershell - ErreurUtilisateurs invités via PowerShell dans Office365 avec ID Employé
Module Active Directory PowershellWS 2019 / NTFS, héritage et droits fichiers/dossiers
Commande Powershell - MPIORécupérer un serveur DHCP avec powershell
Powershell, ExecutionPolicy et script à la fermeture de session.PowerShell Gallery - Entreprise
Plus de sujets relatifs à : [Résolu] Script powershell - Héritage


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR