Menu Fermer

Comment utiliser ICACLS pour voir et modifier les autorisations de fichiers et dossiers

La commande ICACLS permet d’afficher ou de modifier les listes de contrôle d’accès (ACL) pour les fichiers et les dossiers du système de fichiers. Le prédécesseur de l’utilitaire icacls.exe est la commande cacls.exe (qui a été utilisée dans Windows XP).

Dans ce guide complet, je vous montre toutes les utilisations ICALCS à travers de multiples exemples.
Comment lister les autorisations, comment modifier les autorisations d’un fichier ou dossier et comment changer le propriétés d’un dossier.
En fin de tutoriel, nous verrons comment sauvegarder et restaurer les permissions.

Comment utiliser ICACLS pour voir et modifier les autorisations de fichiers et dossiers

Comment lister les autorisations de fichiers et de dossiers à l’aide de la commande ICACLS

Pour le fonctionnement global des permissions sur Windows, lire ce guide :

Pour répertorier les autorisations NTFS actuelles sur un dossier spécifique (par exemple, C: \Temp), ouvrez une invite de commande et exécutez la commande :

PS C:\Users\MaK> icacls C:\temp

Cette commande renvoie une liste de tous les utilisateurs et groupes qui se voient attribuer des autorisations à ce répertoire. Essayons de comprendre la syntaxe de la liste des autorisations renvoyée par la commande ICACLS :

C:\temp Tout le monde:(F)
        MSI\MaK:(M)
        BUILTIN\Administrateurs:(I)(OI)(CI)(F)
        AUTORITE NT\Système:(I)(OI)(CI)(F)
        BUILTIN\Utilisateurs:(I)(OI)(CI)(RX)
        AUTORITE NT\Utilisateurs authentifiés:(I)(M)
        AUTORITE NT\Utilisateurs authentifiés:(I)(OI)(CI)(IO)(M)

1 fichiers correctement traités ; échec du traitement de 0 fichiers
Comment lister les autorisations de fichiers et de dossiers à l'aide de la commande ICACLS

Le niveau d’accès à l’objet est spécifié devant chaque groupe ou utilisateur. Les autorisations d’accès sont indiquées à l’aide des abréviations. Considérez les autorisations pour l’utilisateur corp \ someername. Les autorisations suivantes sont attribuées à cet utilisateur:

  • (Oi) – Héritage d’objet
  • (CI) – Héritage du conteneur
  • (M) – modifier l’accès

Cela signifie que cet utilisateur a le droit d’écrire et de modifier les objets du système de fichiers dans ce répertoire. Ces autorisations NTFS sont héritées de tous les objets enfants (imbriqués) dans ce répertoire.

Vous trouverez ci-dessous une liste complète des autorisations qui peuvent être définies à l’aide de l’utilitaire ICACLS.

Les droits d’héritage peuvent précéder n’importe quelle forme et ne sont appliqués qu’aux répertoires :

  • (OI) – Héritage d’objet
  • (CI) – Héritage de conteneur
  • (IO) – Héritage uniquement
  • (NP) – Ne pas transmettre l’héritage
  • (I) – Autorisation héritée du conteneur parent

Liste des autorisations d’accès de base :

  • N – Aucun accès
  • F – Accès complet
  • M – Accès en modification
  • RX – Accès en lecture et exécution
  • R – Accès en lecture seule
  • W – Accès en écriture seule
  • D – Accès en suppression

Autorisations spéciales :

  • DE – Suppression
  • RC – Contrôle en lecture
  • WDAC – Accès en écriture à la liste de contrôle d’accès
  • WO – Accès en écriture du propriétaire
  • S – Synchronisation
  • AS – Accès à la sécurité système
  • MA – Maximum autorisé
  • GR – Lecture générique
  • GW – Écriture générique
  • GE – Exécution générique
  • GA – Générique pour tout
  • RD – Lecture de données/Liste du répertoire
  • WD – Écriture de données/Ajout de fichiers
  • AD – Ajout de données/Ajout de sous-répertoires
  • REA – Attributs de lecture étendus
  • WEA – Attributs d’écriture étendus
  • X – Exécution/Parcours
  • DC – Suppression de l’enfant
  • RA – Attributs de lecture
  • WA – Attributs d’écriture

Si vous devez afficher tous les objets du répertoire spécifié et ses sous-répertoires dans lesquels le SID d’un utilisateur et groupe spécifique est spécifié, utilisez la commande :

icacls C:\temp /findsid [User/Group_SID_here] /t /c /l /q

Comment modifier les autorisations du dossier ou du fichier avec ICALCS

Avec la commande ICACLS, vous pouvez modifier les droits d’accès d’un dossier.
Pour modifier le DACL d’un objet, l’utilisateur doit avoir une autorisation DAC d’écriture (Write_DAC – WDAC). Au moins un utilisateur (le propriétaire de l’objet) a la permission de modifier le DACL.

Par exemple, vous souhaitez accorder les autorisations pour modifier (m) le contenu du dossier C:\temp l’utilisateur Mak. Exécuter la commande :

icacls C:\Temp /grant Mak:M

Pour accorder une autorisation de contrôle total pour le groupe de domaine UTILISATEURS et appliquer tous les paramètres aux sous-dossiers :

icacls "C:\TEMP" /grant <NOM PC/NOM DOMAINE>\UTILISATEURS:F /Q /C /T

La commande suivante peut être utilisée pour accorder à un utilisateur la lecture + exécuter + supprimer les autorisations d’accès au dossier :

icacls C:\TEMP /grant MAK:(OI)(CI)(RX,D)

Afin d’accorder la lecture + Exécuter + accès en écriture, utilisez la commande :

icacls C:\TEMP /grant MAK:(OI)(CI)(RX,W)

Vous pouvez utiliser les noms de groupe intégrés dans la commande ICACLS. Par exemple, les administrateurs, tout le monde, les utilisateurs, etc. par exemple :

icacls C:\TEMP /grant "Tout le monde":F /T

Interdire l’accès à un dossier ou fichier

Vous pouvez supprimer toutes les autorisations NTFS attribuées à John en utilisant la commande :

icacls C:\TEMP /remove MAK

En outre, vous pouvez empêcher un utilisateur ou un groupe d’utilisateurs d’accéder à un fichier ou un dossier en utilisant explicitement le refus d’une manière comme ceci :

icacls C:\Temp /deny "Utilisateurs:(CI)(M)"

Gardez à l’esprit que l’interdiction des règles a une priorité plus élevée que celles d’autorisations.

Désactiver les permissions d’un fichier ou dossier

Vous pouvez activer ou désactiver les autorisations sur les objets de dossier / fichier à l’aide de l’option / héritage de la commande icacls.

Trois valeurs sont disponibles pour le paramètre d’héritage :

  • E – Activer l’héritage
  • d – Désactiver l’héritage et la copie de l’as
  • R – Retirez tous les as hérités

Pour désactiver les autorisations d’héritage sur l’objet du système de fichiers et copier la liste de contrôle d’accès actuelle (autorisation explicite), exécutez la liste de commandes :

icacls C:\TEMP /inheritance:d

Et si vous souhaitez désactiver l’héritage et supprimer toutes les autorisations héritées, exécutez :

icacls C:\TEMP /inheritance:r

Pour activer les autorisations héritées sur un fichier ou un objet de dossier :

icacls C:\TEMP /inheritance:e

Si vous devez propager une nouvelle autorisation à tous les fichiers et sous-dossiers du dossier cible sans utiliser l’héritage, utilisez la commande :

icacls "C:\TEMP\" /grant:r "Tout le monde":(NP)(RX) /T

Dans ce cas, aucune autorisation spécifique sur les sous-dossiers ne sera écrasée.

En outre, vous pouvez utiliser les variables d’environnements pour accorder des autorisations pour l’utilisateur actuellement connecté :

ICACLS C:\Temp /grant %username%:F

Réinitialiser les permissions en cas d’accès refusé

Dans certains cas, vous pouvez recevoir l’erreur «Accès à l’accès» lorsque vous essayez de modifier les autorisations sur un fichier ou un dossier à l’aide de l’outil ICACLS.
Dans ce cas, assurez-vous d’abord que vous exécutez une fenêtre CMD avec des droits élevés (exécutez en tant qu’administrateur). Étant donné que l’ICACLS n’est pas un outil sensible à l’UAC, vous ne verrez pas l’invite de commandes en administrateur.

Si l’erreur persiste, énumérez les autorisations de fichier actuelles et assurez-vous que votre compte a les droits de «modification des autorisations» sur le fichier.

Indice. Vous pouvez utiliser l’outil AccessChk ou le module NTFSSecurity PowerShell pour obtenir des autorisations NTFS efficaces sur les fichiers et les dossiers. Vous pouvez installer le module NTFSSECURITY de la galerie PowerShell :

Install-Module -Name NTFSSecurity

Pour obtenir des autorisations d’objets efficaces pour un compte utilisateur spécifique, exécutez :

Get-NTFSEffectiveAccess -Path C:\Temp\monfichier.txt -Account samaccountname

Un problème assez courant : après avoir copié les répertoires entre deux disques, vous pouvez perdre l’autorisation d’accès aux dossiers sur un lecteur cible.
Dans ce cas, vous pouvez réinitialiser les autorisations NTFS avec ICACLS. La commande suivante réinitialisera toutes les autorisations explicites et héritées pour tous les dossiers et fichiers sur le lecteur E :

Icacls.exe E:\* /reset /T

Dans les versions Windows sans support de chemin long, vous ne pouvez pas modifier les autorisations pour un objet dans l’arborescence si le chemin complet du fichier vers un tel objet est supérieur à 256 caractères (avec le chemin de destination trop longue). Dans ces cas, au lieu d’utiliser la commande ICACLS suivante :

ICACLS C:\Temp\FichierAvecNomLong /Q /C /T /reset

Tu devrais utiliser:

ICACLS "\\?\C:\Temp\LongFilePath " /Q /C /T /reset

Avec ICACLS, vous pouvez définir un niveau d’intégrité élevé pour un fichier ou un dossier. Seuls les administrateurs peuvent accéder et modifier des fichiers et des dossiers avec un niveau élevé d’intégrité.

icacls C:\Temp\monfichier.txt /setintegritylevel H

Maintenant, l’entrée suivante apparaîtra dans l’ACL du fichier :

Mandatory Label\High Mandatory Level:(NW)

Comment changer le propriétaire avec la commande ICALCS

À l’aide de la commande ICACLS, vous pouvez modifier le propriétaire d’un répertoire ou d’un dossier, par exemple :

icacls c:\temp\6J4A1809.jpg /setowner Mak /T /C /L /Q
  • /Q – supprimer les messages de réussite
  • /L – La commande est exécutée directement au-dessus du lien symbolique, pas l’objet spécifique
  • /C – L’exécution de la commande se poursuivra malgré les erreurs de fichier. Les messages d’erreur seront toujours affichés
  • /T – La commande est effectuée pour tous les fichiers et répertoires situés dans le répertoire spécifié et ses sous-répertoires
Comment changer le propriété avec la commande ICALCS

Vous pouvez modifier le propriétaire de tous les fichiers du répertoire :

icacls c:\Temp\* /setowner Mak /T /C /L /Q

De plus, avec ICACLS, vous pouvez réinitialiser les autorisations actuelles sur les objets du système de fichiers :

ICACLS C:\Temp /T /Q /C /RESET

Après avoir exécuté cette commande, toutes les autorisations actuelles sur l’objet de fichier dans le dossier spécifié seront réinitialisées. Ils seront remplacés par des autorisations héritées de l’objet parent.

Notez que la commande ICACLS avec l’option /setowner ne vous permet pas de modifier de force la propriété de l’objet du système de fichiers. Si vous n’êtes pas le propriétaire d’objet actuel, utilisez la commande Takeown.exe pour remplacer la propriété du fichier ou du dossier.

Pour trouver tous les fichiers avec un ACL ou des longueurs non canoniques qui ne correspondent pas au nombre d’ACE, utilisez le paramètre /Verify.

icacls "C:\test" /verify /T

Les autorisations spéciales avec icacls

Au début d’article, j’ai donné la liste des autorisations spéciales.
Par exemple DC et DE permettent d’établir les autorisations de suppression.
Par exemple vous souhaitez créer un dossier où les utilisateurs peuvent créer, modifier et supprimer des fichiers ou dossier mais pas le dossier racine.
Pour cela, on autorise RX, W, DC sur C:\test et on interdire la suppression du dossier avec DE.

icacls c:\test\ /grant "Tout le monde":(RX,W,DC) /deny "Tout le monde":(DE)

Comme le montre l’invite de commandes de gauche, on peut copier un fichier dans C:\test et le supprimer mais pas supprimer le dossier C:\test

Interdire suppression du dossier racine mais pouvoir écrire et supprimer des fichiers dedans avec icacls

Comment enregistrer et restaurer les ACL NTFS à l’aide de ICACLS

À l’aide de la commande ICACLS, vous pouvez enregistrer l’ACL de l’objet actuel dans un fichier texte. Ensuite, vous pouvez appliquer la liste des autorisations enregistrées sur les mêmes objets ou autres (une sorte de moyen de sauvegarde ACLS).

Pour exporter l’ACL actuel dans le dossier C: \Temp et enregistrez-les dans le fichier temp_acls.txt, exécutez la commande :

icacls C:\TEMP\* /save c:\temp\Temp_ACLs.txt /t

Cette commande enregistre les ACL non seulement du répertoire lui-même mais aussi à tous les sous-dossiers et fichiers (récurisf). Vous pouvez ouvrir le fichier texte résultant à l’aide du bloc-notes ou de tout éditeur de texte.

Pour appliquer les ACL d’accès enregistrés (restauration des autorisations), exécutez la commande :

icacls C:\temp /restore c:\temp\Temp_ACLs.txt

Ainsi, le processus de transfert des ACL d’un dossier à un autre (ou entre les hôtes) devient beaucoup plus facile.