Comment gérer les ACL du système de fichiers avec des scripts PowerShell

Types d’autorisations NTFS pour les fichiers et dossiers

Il existe des autorisations NTFS de base et avancées. Vous pouvez définir chacune des autorisations sur « Autoriser » ou ”Refuser ». Voici les autorisations de base:

  • Contrôle total: Les utilisateurs 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 peuvent modifier les paramètres d’autorisations pour tous les fichiers et sous-répertoires.
  • Modifier: Les utilisateurs peuvent afficher et modifier les fichiers et leurs propriétés, notamment en supprimant et en ajoutant des fichiers à un répertoire ou des propriétés de fichier à un fichier.
  • Lire &Exécuter: Les utilisateurs peuvent exécuter des fichiers exécutables, y compris le script
  • Lire: Les utilisateurs peuvent afficher les fichiers, les propriétés des fichiers et les répertoires.
  • Écriture: Les utilisateurs peuvent écrire dans un fichier et ajouter des fichiers dans des répertoires.

Voici la liste des autorisations avancées :

  • Parcourir le dossier / Exécuter le fichier: Les utilisateurs peuvent naviguer dans les dossiers pour accéder à d’autres fichiers ou dossiers, même s’ils n’ont aucune autorisation pour ces fichiers ou dossiers. Les utilisateurs peuvent également exécuter des fichiers exécutables. L’autorisation de dossier Traverse ne prend effet que lorsque le groupe ou l’utilisateur n’a pas le droit de  » Contourner la vérification de traverse ” dans le composant logiciel enfichable de stratégie de groupe.
  • Dossier de liste / Données de lecture: Les utilisateurs peuvent afficher une liste de fichiers et de sous-dossiers dans le dossier ainsi que le contenu des fichiers.
  • Attributs de lecture : Les utilisateurs peuvent afficher les attributs d’un fichier ou d’un dossier, par exemple s’il est en lecture seule ou masqué.
  • Attributs d’écriture : Les utilisateurs peuvent modifier les attributs d’un fichier ou d’un dossier.
  • Lire les attributs étendus : Les utilisateurs peuvent afficher les attributs étendus d’un fichier ou d’un dossier, tels que les autorisations et les temps de création et de modification.
  • Écrire des attributs étendus : Les utilisateurs peuvent modifier les attributs étendus d’un fichier ou d’un dossier.
  • Créer des fichiers / Écrire des données: L’autorisation « Créer des fichiers » permet aux utilisateurs de créer des fichiers dans le dossier. (Cette autorisation s’applique uniquement aux dossiers.) L’autorisation « Écrire des données » permet aux utilisateurs d’apporter des modifications au fichier et d’écraser le contenu existant. (Cette autorisation s’applique uniquement aux fichiers.)
  • Créer des dossiers /Ajouter des données : L’autorisation « Créer des dossiers » permet aux utilisateurs de créer des dossiers dans un dossier. (Cette autorisation s’applique uniquement aux dossiers.) L’autorisation « Ajouter des données » permet aux utilisateurs d’apporter des modifications à la fin du fichier, mais ils ne peuvent pas modifier, supprimer ou écraser les données existantes. (Cette autorisation s’applique uniquement aux fichiers.)
  • Supprimer: Les utilisateurs peuvent supprimer le fichier ou le dossier. (Si les utilisateurs n’ont pas l’autorisation ”Supprimer » sur un fichier ou un dossier, ils peuvent toujours le supprimer s’ils ont l’autorisation ”Supprimer les sous-dossiers et les fichiers » sur le dossier parent.)
  • Autorisations de lecture : Les utilisateurs peuvent lire les autorisations d’un fichier ou d’un dossier, telles que « Contrôle total”, « Lecture” et « Écriture”.
  • Modifier les autorisations : Les utilisateurs peuvent modifier les autorisations d’un fichier ou d’un dossier.
  • S’approprier : Les utilisateurs peuvent s’approprier le fichier ou le dossier. Le propriétaire d’un fichier ou d’un dossier peut toujours modifier ses autorisations, quelles que soient les autorisations existantes qui protègent le fichier ou le dossier.
  • Synchroniser : Les utilisateurs peuvent utiliser l’objet pour la synchronisation. Cela permet à un thread d’attendre que l’objet soit dans l’état signalé. Ce droit n’est pas présenté dans l’éditeur ACL. Vous pouvez en savoir plus à ce sujet ici.

Vous pouvez trouver toutes ces autorisations utilisateur en exécutant le script PowerShell suivant :

::getnames()

Les autorisations NTFS peuvent être explicites ou héritées. Les autorisations explicites sont des autorisations configurées individuellement, tandis que les autorisations héritées sont héritées du dossier parent. La hiérarchie des autorisations est la suivante :

  • Refus explicite
  • Autorisation explicite
  • Refus hérité
  • Autorisation héritée

Maintenant que nous savons que les autorisations NTFS le sont, explorons comment les gérer.

Get ACL pour les fichiers et dossiers

La première applet de commande PowerShell utilisée pour gérer les autorisations de fichiers et de dossiers est « get-acl » ; elle répertorie toutes les autorisations d’objet. Par exemple, obtenons la liste de toutes les autorisations pour le dossier avec le chemin d’objet « \\fs1\shared\sales »:

get-acl \\fs1\shared\sales | fl

Si vous souhaitez obtenir un rapport complet sur les autorisations NTFS via PowerShell, vous pouvez suivre cette procédure simple sur l’exportation des autorisations NTFS au format CSV.

Copier les autorisations de fichier et de dossier

Pour copier les autorisations, un utilisateur doit posséder à la fois les dossiers source et cible. La commande suivante copiera les autorisations du dossier « Comptabilité » dans le dossier « Ventes »:

get-acl \\fs1\shared\accounting | Set-Acl \\fs1\shared\sales

Comme on peut le voir sur la sortie des commandes « get-acl” avant et après la copie des autorisations, les autorisations du dossier partagé « Sales” ont été modifiées.

Définir les autorisations de fichier et de dossier

L’applet de commande PowerShell « set-acl” est utilisée pour modifier 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 autorisations de fichier ou de dossier. Le script suivant définit l’autorisation ”FullControl » sur ”Autoriser » pour l’utilisateur « ENTERPRISE\T.Simpson”dans le dossier « Sales”:

Si vous souhaitez définir d’autres autorisations pour les utilisateurs ou les groupes de sécurité, choisissez-les dans le tableau ci-dessous :

Il existe également des ensembles d’autorisations de droits d’accès de base qui peuvent être appliqués :

”>

Supprimer les autorisations utilisateur

Pour supprimer une autorisation, utilisez le paramètre « RemoveAccessRule ». Supprimons l’autorisation ”Allow FullControl » pour T.Simpson dans le dossier ”Sales » :

Notez que T.Simpson a toujours la permission de « Refuser le contrôle complet ». Pour le supprimer, utilisons la commande « PurgeAccessRules », qui effacera complètement les autorisations de T.Simpson dans le dossier ”Sales »:

Notez que ”PurgeAccessRules » ne fonctionne pas avec un nom d’utilisateur de chaîne; il ne fonctionne qu’avec les SID. Par conséquent, nous avons utilisé la classe « Ntaccount” pour convertir le nom du compte utilisateur d’une chaîne en SID. Notez également que « PurgeAccessRules » ne fonctionne qu’avec des autorisations explicites; il ne purge pas celles héritées.

Désactiver ou Activer l’héritage des autorisations

Pour gérer l’héritage, nous utilisons la méthode « SetAccessRuleProtection”. Il a deux paramètres:

  • Le premier paramètre est responsable du blocage de l’héritage du dossier parent. Il a deux états: « truevrai » et « falsefaux ».
  • Le deuxième paramètre détermine si les autorisations héritées actuelles sont conservées ou supprimées. Il a les deux mêmes états: « truevrai » et « falsefaux ».

Désactivons l’héritage pour le dossier « Ventes » et supprimons également toutes les autorisations héritées:

$acl = Get-Acl \\fs1\shared\sales$acl.SetAccessRuleProtection($true,$false)$acl | Set-Acl \\fs1\shared\sales

Nous n’avons plus qu’une seule autorisation d’accès (car elle a été ajoutée explicitement); toutes les autorisations héritées ont été supprimées.

Revenons à cette modification et activons à nouveau l’héritage pour le dossier « Sales”:

$acl = Get-Acl \\fs1\shared\sales$acl.SetAccessRuleProtection($false,$true)$acl | Set-Acl \\fs1\shared\sales

Modifier la propriété du fichier et du dossier

Si vous souhaitez définir un propriétaire pour un dossier, vous devez exécuter la méthode « SetOwner”. Faisons de ”ENTERPRISE\J.Carter » le propriétaire du dossier « Ventes”:

Notez que nous avons de nouveau utilisé la classe ”Ntaccount » pour convertir le nom de compte utilisateur d’une chaîne en SID.

Notez que la méthode ”SetOwner » ne vous permet pas de changer le propriétaire du compte de votre choix; le compte doit avoir les droits ”Prendre possession », ”Lire » et ”Modifier les autorisations ».

Comme vous pouvez le voir, il est très facile de gérer les autorisations NTFS avec PowerShell. Mais n’oubliez pas d’auditer également les autorisations NTFS — il est essentiel pour la sécurité de suivre toutes les modifications apportées à vos serveurs de fichiers afin de réduire les fuites de données et de lutter contre la menace interne et les autres risques de sécurité informatique. Voici un guide de base sur la façon d’auditer les autorisations NTFS avec PowerShell.

Jeff est Directeur de l’Ingénierie des solutions mondiales chez Netwrix. Il est un blogueur, conférencier et présentateur de Netwrix de longue date. Sur le blog Netwrix, Jeff partage des astuces, des trucs et astuces qui peuvent améliorer considérablement votre expérience d’administration système.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.