Comment gérer les autorisations ACL à l'aide de PowerShell
- Types de permissions NTFS dans PowerShell
-
Utiliser la commande
Get-Acl
pour obtenir l’ACL des dossiers et fichiers dans PowerShell -
Utiliser la commande
Set-Acl
pour définir l’ACL pour les fichiers et dossiers dans PowerShell -
Utiliser le paramètre
-RemoveAccessRule
pour supprimer les permissions des utilisateurs dans PowerShell - Désactiver ou activer l’héritage des permissions dans PowerShell
-
Utiliser la méthode
SetOwner
pour changer la possession des fichiers et dossiers dans PowerShell

Les administrateurs système configurent les listes de contrôle d’accès NTFS ACLs
en ajoutant des entrées de contrôle d’accès ACEs
sur les serveurs de fichiers NTFS pour mettre en œuvre un modèle de moindre privilège.
Cet article apprendra les différents types de permissions et comment interroger, modifier et supprimer des ACL sur des fichiers et dossiers en utilisant PowerShell.
Types de permissions NTFS dans PowerShell
Il existe des permissions NTFS à la fois avancées et de base. Par exemple, vous pouvez définir chaque permission sur Refuser
ou Autoriser
.
Contrôle total
: Les utilisateurs ayant cette permission peuvent modifier, ajouter, déplacer et supprimer des fichiers et des répertoires, ainsi que leurs propriétés associées. De plus, les utilisateurs ayant cette permission peuvent modifier les paramètres de permissions pour tous les sous-répertoires et fichiers.Modifier
: Les utilisateurs ayant cette permission peuvent voir et modifier des fichiers et des propriétés de fichier, y compris ajouter et supprimer des fichiers d’un répertoire ou des propriétés de fichier à un fichier.Lire et exécuter
: Les utilisateurs ayant cette permission peuvent exécuter des fichiers exécutables, y compris des scripts.Lire
: Les utilisateurs peuvent voir des fichiers, des propriétés de fichier et des répertoires avec cette permission.Écrire
: Les utilisateurs ayant cette permission peuvent écrire dans un fichier et ajouter des fichiers à des répertoires.
Voici la liste des permissions avancées :
Traverser le dossier
ouExécuter le fichier
: Les utilisateurs ayant cette permission avancée peuvent naviguer dans les dossiers pour atteindre d’autres dossiers ou fichiers, même s’ils n’ont pas de permissions pour ces fichiers ou dossiers. Les utilisateurs ayant cette permission avancée peuvent également exécuter des fichiers exécutables. La permissionTraverser le dossier
est effective lorsque l’utilisateur ou le groupe n’a pas le droit dePasser le contrôle de traversée
dans le composant Group Policy.Lister le dossier
ouLire les données
: Les utilisateurs ayant cette permission avancée peuvent voir une liste de fichiers et de sous-dossiers dans le dossier ainsi que le contenu des fichiers.Lire les attributs
: Les utilisateurs ayant cette permission avancée peuvent voir les attributs d’un dossier ou d’un fichier, comme s’il est caché ou en lecture seule.Écrire les attributs
: Les utilisateurs ayant cette permission avancée peuvent changer les attributs d’un fichier ou d’un dossier.Lire les attributs étendus
: Les utilisateurs ayant cette permission avancée peuvent voir les attributs étendus d’un dossier ou d’un fichier, tels que les permissions et les heures de création et de modification.Écrire les attributs étendus
: Les utilisateurs ayant cette permission avancée peuvent changer les attributs étendus d’un dossier ou d’un fichier.Créer des fichiers
ouÉcrire des données
: La permissionCréer des fichiers
permettra aux utilisateurs de créer des fichiers dans le dossier avec cette permission avancée.Cette permission s'applique uniquement aux dossiers.
La permissionÉcrire des données
permettra aux utilisateurs ayant cette permission avancée de modifier le fichier et de remplacer le contenu existant. Cette permission ne s’applique qu’aux fichiers.Créer des dossiers
ouAjouter des données
: La permissionCréer des dossiers
permet aux utilisateurs de créer des dossiers dans un dossier avec cette permission avancée.Cette permission s'applique uniquement aux dossiers.
La permissionAjouter des données
permettra aux utilisateurs ayant cette permission avancée de modifier la fin du fichier, mais ils ne peuvent pas changer, remplacer ou supprimer des données existantes. Cette permission ne s’applique qu’aux fichiers.Supprimer
: Les utilisateurs ayant cette permission avancée peuvent supprimer le dossier ou le fichier. Si les utilisateurs n’ont pas la permission deSupprimer
sur un dossier ou un fichier, ils peuvent tout de même supprimer un objet s’ils ont la permission deSupprimer les sous-dossiers et les fichiers
sur le dossier parent.Lire les permissions
: Les utilisateurs ayant cette permission avancée peuvent lire les permissions d’un dossier ou d’un fichier, commeContrôle total
,Lire
etÉcrire
.Changer les permissions
: Les utilisateurs ayant cette permission avancée peuvent changer les permissions d’un fichier ou d’un dossier.Prendre possession
: Les utilisateurs ayant cette permission avancée peuvent prendre possession du fichier ou du dossier. Le propriétaire du fichier ou du dossier peut toujours changer ses permissions, indépendamment de toutes permissions existantes qui protègent le fichier ou le dossier.Synchroniser
: Les utilisateurs ayant cette permission avancée peuvent utiliser l’objet pour la synchronisation. Cette permission permettra à un thread d’attendre jusqu’à ce que l’objet soit dans l’état signalé. Cette permission n’est pas présentée dans l’éditeur ACL.
Nous pouvons trouver toutes les informations sur ces permissions utilisateur en exécutant le script PowerShell suivant :
[System.Enum]::GetNames([System.Security.AccessControl.FileSystemRights])
Les permissions NTFS peuvent être explicites ou héritées. Les permissions explicites sont configurées individuellement, tandis que les permissions héritées proviennent du dossier parent.
La hiérarchie des permissions est la suivante :
- Refuser explicite
- Autoriser explicite
- Refuser hérité
- Autoriser hérité
Utiliser la commande Get-Acl
pour obtenir l’ACL des dossiers et fichiers dans PowerShell
La première commande PowerShell utilisée pour gérer les permissions de fichiers et de dossiers est Get-Acl
; elle liste toutes les permissions des objets.
Get-Acl \\fs1\shared\hr | fl
Un utilisateur doit posséder à la fois les dossiers cible et source pour copier les permissions.
Get-Acl \\fs1\shared\hr | Set-Acl \\fs1\shared\hr
Utiliser la commande Set-Acl
pour définir l’ACL pour les fichiers et dossiers dans PowerShell
La commande PowerShell Set-Acl
est utilisée pour changer le descripteur de sécurité d’un élément spécifié, tel qu’un fichier, un dossier ou une clé de registre ; en d’autres termes, elle est utilisée pour modifier les permissions de fichiers ou de dossiers.
$acl = Get-Acl \\fs1\shared\hr
$AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule("ENTERPRISE\User01", "FullControl", "Allow")
$acl.SetAccessRule($AccessRule)
$acl | Set-Acl \\fs1\shared\hr
Utiliser le paramètre -RemoveAccessRule
pour supprimer les permissions des utilisateurs dans PowerShell
$acl = Get-Acl \\fs1\shared\hr
$AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule("ENTERPRISE\User01", "FullControl", "Allow")
$acl.RemoveAccessRule($AccessRule)
$acl | Set-Acl \\fs1\shared\hr
Désactiver ou activer l’héritage des permissions dans PowerShell
Pour gérer une héritage, nous pouvons utiliser la méthode SetAccessRuleProtection
. La méthode a deux paramètres :
- Le premier paramètre est responsable du blocage de l’héritage du dossier parent. Il renvoie des états booléens :
$true
et$false
. - Le second paramètre est utilisé pour savoir si les permissions héritées actuelles sont supprimées ou conservées. Il renvoie également des états booléens :
$true
et$false
.
$acl = Get-Acl \\fs1\shared\hr
$acl.SetAccessRuleProtection($true, $false)
$acl | Set-Acl \\fs1\shared\hr
Revenons à ce changement et activons à nouveau l’héritage pour le dossier :
$acl = Get-Acl \\fs1\shared\hr
$acl.SetAccessRuleProtection($false, $true)
$acl | Set-Acl \\fs1\shared\hr
Utiliser la méthode SetOwner
pour changer la possession des fichiers et dossiers dans PowerShell
Si nous voulons définir un propriétaire pour un dossier, vous devez exécuter la méthode SetOwner
.
$acl = Get-Acl \\fs1\shared\hr
$object = New-Object System.Security.Principal.Ntaccount("ENTERPRISE\User01")
$acl.SetOwner($object)
$acl | Set-Acl \\fs1\shared\hr
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn