Vue normale

Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.
Aujourd’hui — 31 décembre 2025Flux principal

Gérer les permissions NTFS avec PowerShell sur Windows 11/10

Par : malekalmorte
31 décembre 2025 à 10:32

Sous Windows 11/10, les fichiers et dossiers stockés sur un disque NTFS possèdent des autorisations (ACL) qui définissent précisément quels utilisateurs peuvent lire, modifier ou supprimer leur contenu.
Si ces permissions peuvent être configurées via l’interface graphique, PowerShell permet d’aller beaucoup plus loin :
afficher, modifier et automatiser la gestion des droits d’accès à grande échelle.

Grâce aux cmdlets Get-Acl et Set-Acl, vous pouvez :

  • afficher les permissions d’un dossier ou d’un fichier,
  • ajouter ou retirer des autorisations,
  • appliquer les mêmes règles à plusieurs répertoires,
  • et même changer le propriétaire d’un dossier bloqué.

Cette approche est particulièrement utile pour les administrateurs ou utilisateurs avancés souhaitant :

  • automatiser la gestion des droits sur un serveur ou un poste multi-utilisateurs,
  • corriger des problèmes d’accès (“Accès refusé”) sans interface graphique,
  • ou déployer des permissions identiques sur plusieurs répertoires partagés.
👉 Pour comprendre en détail la différence entre les autorisations NTFS et les permissions de partage, consultez le guide complet : Autorisations et permissions NTFS : gérer les droits d’accès et le partage de dossiers sous Windows 11/10

Gérer les permissions avec PowerShell

Lister les permissions NTFS (Get-Acl)

Pour afficher la liste complète des autorisations appliquées à un dossier ou fichier :

Get-Acl "C:\Dossier"

Cette commande affiche les ACL (Access Control List) associées à l’élément.
Pour un affichage plus lisible :

Get-Acl "C:\Dossier" | Format-List

Exemple de sortie :

Path : Microsoft.PowerShell.Core\FileSystem::C:\Users\maill
Owner : NT-AUTORITÄT\SYSTEM
Group : NT-AUTORITÄT\SYSTEM
Access : NT-AUTORITÄT\SYSTEM Allow FullControl
VORDEFINIERT\Administratoren Allow FullControl
hp-MAC\maill Allow FullControl
S-1-15-3-65536-599108337-2355189375-1353122160-3480128286-3345335107-485756383-4087318168-230526575 Allow
ExecuteFile, Synchronize
Audit :
Sddl : O:SYG:SYD:P(A;OICI;FA;;;SY)(A;OICI;FA;;;BA)(A;OICI;FA;;;S-1-5-21-2373467495-3460344319-1749951908-1001)(A;;0x1
00020;;;S-1-15-3-65536-599108337-2355189375-1353122160-3480128286-3345335107-485756383-4087318168-230526575)

Ajouter une autorisation (AddAccessRule)

Pour accorder une permission spécifique à un utilisateur ou groupe, utilisez Set-Acl avec une nouvelle règle d’accès.

Exemple : donner le Contrôle total à l’utilisateur Paul sur le dossier C:\Partage

$acl = Get-Acl "C:\Partage"
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("Paul","FullControl","Allow")
$acl.AddAccessRule($rule)
Set-Acl "C:\Partage" $acl

Explications :

  • Get-Acl → récupère les permissions existantes.
  • New-Object …FileSystemAccessRule → crée une nouvelle règle d’accès.
  • AddAccessRule → ajoute la règle à la liste.
  • Set-Acl → applique la nouvelle configuration.

Vous pouvez remplacer "FullControl" par : "Read", "Write", "Modify", "ReadAndExecute" selon les besoins.

Supprimer une autorisation (RemoveAccessRule)

Pour supprimer une règle d’accès existante :

$acl = Get-Acl "C:\Partage"
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("Paul","FullControl","Allow")
$acl.RemoveAccessRule($rule)
Set-Acl "C:\Partage" $acl

La suppression nécessite d’utiliser exactement les mêmes paramètres que la règle initiale (même utilisateur, droit et type “Allow” ou “Deny”).

Modifier les permissions d’un dossier et de ses sous-dossiers (Set-Acl)

Pour appliquer les nouvelles autorisations à tous les sous-dossiers et fichiers :

$acl = Get-Acl "C:\Partage"
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("Paul","Modify","ContainerInherit,ObjectInherit","None","Allow")
$acl.SetAccessRule($rule)
Get-ChildItem "C:\Partage" -Recurse | Set-Acl -AclObject $acl

Explications :

  • Get-ChildItem -Recurse → parcourt récursivement toute l’arborescence.
  • ContainerInherit,ObjectInherit → applique la règle aux sous-dossiers et fichiers.
Cette commande réécrit les ACL de tous les sous-dossiers.
Utilisez-la avec prudence sur un volume contenant beaucoup de fichiers.

Supprimer toutes les autorisations personnalisées (réinitialiser les ACL)

Pour revenir à la configuration par défaut (héritée du dossier parent) :

icacls "C:\Partage" /reset /T

Cette commande supprime toutes les règles explicites et rétablit les permissions héritées.
Elle est utile pour corriger des erreurs “Accès refusé” ou des droits corrompus.

Changer le propriétaire d’un dossier (SetOwner)

Pour appliquer le changement de propriétaire à tout un dossier et ses sous-dossiers :

$path = "C:\Dossier"
$owner = [System.Security.Principal.NTAccount]"Administrateurs"
Get-ChildItem -Path $path -Recurse -Force | ForEach-Object {
    $acl = Get-Acl $_.FullName
    $acl.SetOwner($owner)
    Set-Acl $_.FullName $acl
}

Cette commande parcourt récursivement tous les fichiers et sous-dossiers.
Elle peut être longue sur un volume contenant de nombreux éléments.

👉Pour le guide complet sur le changement de propriétaire via l’interface graphique ou la ligne de commande :
Changer le propriétaire d’un dossier sous Windows 11/10

Vérifier le propriétaire actuel

Pour afficher le propriétaire d’un dossier ou fichier :

(Get-Acl "C:\Dossier").Owner

→ Renvoie le nom du compte ou groupe actuellement propriétaire du dossier.

Exemple de script complet : accorder des droits en masse

$users = @("Paul", "Jean", "ServiceRH")
$path = "C:\Dossiers\RH"

foreach ($user in $users) {
$acl = Get-Acl $path
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule($user,"Modify","ContainerInherit,ObjectInherit","None","Allow")
$acl.SetAccessRule($rule)
Set-Acl $path $acl
}

Ce script attribue automatiquement les permissions “Modifier” à plusieurs utilisateurs pour un même dossier.

PowerShell permet d’automatiser facilement des opérations complexes, comme appliquer des autorisations à plusieurs répertoires ou générer un rapport d’audit des droits.

Tableau récapitulatif des cmdlets PowerShell pour gérer les permissions NTFS

Cmdlet / CommandeFonction principaleSyntaxe de baseExemple d’utilisation
Get-AclAffiche la liste des autorisations (ACL) appliquées à un fichier ou dossier.Get-Acl "C:\Dossier"Affiche les permissions et le propriétaire du dossier.
Set-AclApplique ou met à jour des autorisations sur un fichier ou dossier.Set-Acl "C:\Dossier" $aclMet à jour les ACL selon les règles définies dans $acl.
New-Object System.Security.AccessControl.FileSystemAccessRuleCrée une nouvelle règle d’autorisation NTFS (utilisateur, droit, type).$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("Paul","Modify","Allow")Crée une règle donnant à Paul le droit de modifier le dossier.
AddAccessRule()Ajoute une nouvelle autorisation à une ACL existante.$acl.AddAccessRule($rule)Ajoute la règle $rule aux ACL existantes du dossier.
RemoveAccessRule()Supprime une autorisation spécifique.$acl.RemoveAccessRule($rule)Supprime la règle $rule précédemment définie.
SetOwner()Définit un nouveau propriétaire sur un dossier ou fichier.$acl.SetOwner([System.Security.Principal.NTAccount]"Administrateurs")Change le propriétaire pour le groupe Administrateurs.
Get-ChildItem -Recurse + Set-AclApplique des permissions à tous les sous-dossiers et fichiers.`Get-ChildItem « C:\Dossier » -RecurseSet-Acl -AclObject $acl`
**Get-AclFormat-List**Affiche les ACL dans un format lisible.`Get-Acl « C:\Dossier »
icacls (CMD) (complément)Réinitialise ou sauvegarde les ACL en ligne de commande.icacls "C:\Dossier" /reset /TRéinitialise toutes les permissions NTFS du dossier.
takeown (CMD) (complément)Reprend la propriété d’un dossier ou fichier.takeown /f "C:\Dossier" /r /d yAttribue la propriété au compte administrateur courant.

Notes importantes

  • Les cmdlets PowerShell (Get-Acl, Set-Acl, etc.) sont plus flexibles et scriptables que les commandes classiques (icacls, takeown).
  • Pour toute commande modifiant les ACL, il est recommandé d’exécuter PowerShell en tant qu’administrateur.
  • Avant de modifier massivement des droits, vous pouvez sauvegarder les ACL avec : icacls "C:\Dossier" /save C:\backup_acl.txt /T
PowerShell ne demande pas de confirmation avant d’appliquer une modification via Set-Acl.
Une erreur dans la variable $acl ou dans les permissions héritées peut supprimer des droits critiques.

Bonnes pratiques et précautions

  • Ne jamais appliquer un script sans sauvegarder les ACL : icacls "C:\Dossier" /save C:\Backup_ACL.txt /T
  • Utiliser la commande Test-Path pour vérifier les chemins avant exécution.
  • Toujours tester sur un dossier isolé avant d’appliquer sur un volume complet.
  • Exécuter PowerShell en mode Administrateur.
Une mauvaise manipulation des ACL peut rendre un dossier ou un disque inaccessible.
Pensez à sauvegarder vos permissions avant toute modification en masse.

Ressources utiles et articles liés

L’article Gérer les permissions NTFS avec PowerShell sur Windows 11/10 est apparu en premier sur malekal.com.

❌
❌