Comment gérer les autorisations ACL à l'aide de PowerShell

  1. Types de permissions NTFS dans PowerShell
  2. Utiliser la commande Get-Acl pour obtenir l’ACL des dossiers et fichiers dans PowerShell
  3. Utiliser la commande Set-Acl pour définir l’ACL pour les fichiers et dossiers dans PowerShell
  4. Utiliser le paramètre -RemoveAccessRule pour supprimer les permissions des utilisateurs dans PowerShell
  5. Désactiver ou activer l’héritage des permissions dans PowerShell
  6. Utiliser la méthode SetOwner pour changer la possession des fichiers et dossiers dans PowerShell
Comment gérer les autorisations ACL à l'aide de 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 ou Exé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 permission Traverser le dossier est effective lorsque l’utilisateur ou le groupe n’a pas le droit de Passer le contrôle de traversée dans le composant Group Policy.
  • Lister le dossier ou Lire 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 permission Cré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 ou Ajouter des données : La permission Cré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 permission Ajouter 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 de Supprimer sur un dossier ou un fichier, ils peuvent tout de même supprimer un objet s’ils ont la permission de Supprimer 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, comme Contrô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
Vous aimez nos tutoriels ? Abonnez-vous à DelftStack sur YouTube pour nous aider à créer davantage de tutoriels vidéo de haute qualité. Abonnez-vous
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn