Menu Fermer

SetACL – Outils pour modifier les permissions et autorisations

SetACL est un utilitaire gratuit de Helge Klein capable de modifier, réinitialiser les propriétaires et permissions des fichiers, imprimante, services ou registre Windows.
Il peut se substituer aux outils natifs de Windows tels que takeown et icalcs pour gérer les ACL car il va plus loin.
En effet, il est possible de sauvegarder/restaurer les permissions, copier celles d’un autre utilisateur, migrer d’un domaine.

Ce tutoriel vous explique comment utiliser SetACL à travers des exemples pour définir le propriété d’un fichier, d’un dossier, partage réseau, imprimante et services.
Vous pourrez ainsi attribuer les permissions requises en utilisant la ligne de commande au lieu de l’interface graphique.

SetACL - Outils pour modifier les permissions et autorisations

Comment installer SetACL

  • Téléchargez l’utilitaire depuis ce lien :
  • Décompressez le fichier ZIP par exemple avec 7-zip
  • Copiez la version appropriée de setacl.exe (32-bit vs 64-bit) de l’outil dans un dossier – par exemple, d:\outils
Comment installer SetACL sur Windows

La syntaxe et utilisation générale de SetACL

Avant de poursuivre, voyons la syntaxe de la ligne de commande pour modifier la propriété et les permissions d’un fichier/registre à l’aide de SetACL.

SetACL -on <nom de l'objet> -ot <type de l'objet> -actn <action>
  • -on : Indiquez le chemin d’accès à l’objet sur lequel SetACL doit agir. Il peut s’agir par exemple, un fichier, une clé de registre, un partage réseau, WMI, un service ou une imprimante
  • -ot : Spécifier le type d’objet. Pour modifier la propriété ou les autorisations d’un fichier ou d’un dossier. Soit :
    • file – un fichier ou dossier utilisez le type d’objet fichier
    • reg – une clé du registre
    • prn – une imprimante
    • shr – Partage de dossiers (network)
    • srv – pour un service
    • wmi – permissions WMI
  • -actn : Spécifiez l’action que SetACL doit effectuer sur l’objet spécifié. Pour prendre la propriété, définissez l’action comme setowner. Pour modifier les permissions, définissez l’action comme ace.
  • ownr : Spécifiez le nom ou le SID d’un administrateur (un utilisateur ou un groupe) dans ce format – par exemple, “n:Administrateurs”.

Comment réinitialiser les permissions et autorisations d’un dossier ou lecteur avec SetACL

Comment changer le propriétaire d’un dossier ou fichier

Voici la syntaxe à utiliser pour changer le propriétaire du dossier D:\test avec le groupe Administrateurs ou l’utilisateur MaK :

setacl.exe -on d:\test -ot file -actn setowner -ownr "n:Administrateurs" -rec obj
setacl.exe -on d:\test -ot file -actn setowner -ownr "n:Mak" -rec obj

Les paramètres :

  • on : Indiquez le chemin d’accès à l’objet sur lequel SetACL, ici il s’agit d’un dossier, soit donc l’objet file
  • -ot : Spécifier le type d’objet. Pour modifier la propriété ou les autorisations d’un fichier ou d’un dossier, utilisez le type d’objet fichier. Pour les clés de registre, utilisez le type d’objet reg
  • -actn : Spécifiez l’action que SetACL doit effectuer sur l’objet spécifié. Pour prendre la propriété, définissez l’action comme setowner. Pour modifier les permissions, définissez l’action comme ace
Comment changer le propriétaire d'un dossier ou fichier avec SetACL

Par exemple pour restaurer TrustedInstaller en tant que propriétaire du dossier D:\test :

SetACL.exe -on "d:\test" -ot file -actn setowner -ownr "n:nt service\trustedinstaller" -rec Yes
SetACL.exe -on "d:\test" -ot file -actn ace -ace "n:"nt service\trustedinstaller";p:full" -rec Yes

Comment réinitialiser les permissions d’un dossier ou fichier

Voici un exemple pour réinitialiser le fichier demo.txt.
Les permissions sont indiquées par p:full qui demandent à donner le contrôle total.

setacl.exe -on "e:\test\demo.txt" -ot file -actn ace -ace "n:Administrateurs;p:full"
setacl.exe -on "e:\test\demo.txt" -ot file -actn ace -ace "n:Mak;p:full"

Pour modifier les permissions d’un dossier, c’est exactement le même principale.

setacl.exe -on "e:\test" -ot file -actn ace -ace "n:Administrateurs;p:full"
setacl.exe -on "e:\test" -ot file -actn ace -ace "n:Mak;p:full"

Si vous souhaitez réinitialiser les permissions d’un dossier et tous les sous-dossiers et fichiers (mode récursif), utilisez l’option -rec cont :

setacl.exe -on "e:\test" -ot file -actn ace -ace "n:Administrateurs;p:full" -rec cont
setacl.exe -on "e:\test" -ot file -actn ace -ace "n:Mak;p:full" -rec cont
Comment changer le propriétaire d'un dossier ou fichier avec SetACL

Notez qu’il est possible d’écrire le tout en une seule commande :

setacl.exe -on "e:\test" -ot file -actn ace -ace "n:Administrateurs;p:full" -ace "n:Mak;p:full" -rec cont

Comment modifier les permissions d’un fichier ou dossier

Dans cet autre exemple, on modifie les autorisations du dossier D:\test sur l’utilisateur1 du domaine domaine.
On lui attribue les autorisations en lecteur avec p:red et écriture avec write_dacl.

SetACL.exe -on "e:\test" -ot file -actn ace -ace "n:domaine\utilisateur1;p:read,write_dacl"

Les permissions peuvent être :

  • p:full – Contrôle total
  • p:change – Modification
  • p:read – Lecture
  • p:write – Ecriture
Comment modifier les permissions d'un fichier ou dossier avec SetACL

Comment lister les permissions d’un dossier ou fichier

Pour lister les permissions d’un dossier ou fichier, utilisez l’action -actn list :

SetACL.exe -on "e:\test" -ot file -actn list
Comment lister les permissions d'un dossier ou fichier avec SetACL

Comment sauvegarder et restaurer les permissions de fichiers

Vous pouvez aussi sauvegarder les permissions d’un dossier dans un fichier texte.
Par exemple ci-dessous, on crée une liste complète des DACL, SACL, propriétaire et groupe primaire au format SDDL du répertoire d:\test et de tous les sous-dossiers.

SetACL.exe -on "e:\test" -ot file -actn list -lst "f:sddl;w:d,s,o,g" -rec cont -bckp "d:\data\setacl_listing.txt"

Puis si vous avez les droits, vous pouvez restaurer ces permissions dans un autre dossier.

SetACL.exe -on "e:\test1" -ot file -actn restore -bckp "d:\data\setacl_listing.txt"

Comment copier les permissions de fichiers d’un autre utilisateur

Cette commande copie toutes les ACE appartenant à ‘domaine1\utilisateur1’ vers ‘domain2\utilisateur2’, ce qui entraîne une duplication des autorisations : après le processus, domaine2\utilisateur2 a les mêmes autorisations que domaine1\utilisateur1.
Cela peut être utile dans un scénario de migration où les utilisateurs du domaine 1 sont migrés (copiés) vers le domaine 2.

SetACL.exe -on "\\serveur1\share\users" -ot file -actn trustee -rec cont_obj -trst "n1:domaine1\utilisateur1;n2:domaine2\utilisateur2;ta:cpytrst;w:dacl"

Comment réinitialiser les permissions et autorisations d’une clé du registre Windows avec SetACL

On peut appliquer une syntaxe similaire pour modifier les permissions des clés du registre Windows.
Simplement, il faut spécifier l’objet reg à l’aide du paramètre -ot erg.
Voici un exemple pour rétablir le groupe administrateurs comme propriétaire puis lui donner le contrôle total :

SetACL.exe -on "HKEY_CLASSES_ROOT\CLSID\{D63B10C5-BB46-4990-A94F-E40B9D520160}" -ot reg -actn setowner -ownr "n:Administrateurs"
SetACL.exe -on "HKEY_CLASSES_ROOT\CLSID\{D63B10C5-BB46-4990-A94F-E40B9D520160}" -ot reg -actn ace -ace "n:Administrateurs;p:full"

Un autre exemple pour rétablir TrustedInstaller comme propriétaire et lui donner le contrôle total :

SetACL.exe -on "HKEY_CLASSES_ROOT\CLSID\{D63B10C5-BB46-4990-A94F-E40B9D520160}" -ot reg -actn setowner -ownr "n:nt service\trustedinstaller" -rec Yes
SetACL.exe -on "HKEY_CLASSES_ROOT\CLSID\{D63B10C5-BB46-4990-A94F-E40B9D520160}" -ot reg -actn ace -ace "n:"nt service\trustedinstaller";p:full" -rec Yes

Comment modifier les permissions et autorisations d’un partage réseau

SetACL peut aussi modifier les permissions sur les partages réseaux.
Pour cela, on utilise l’objet shr.
Pour lister les permissions d’un partage réseau :

SetACL.exe -on "\\serveur\Donnees" -ot shr -actn list -lst f:tab

Pour modifier les permissions d’un partage réseau :

SetACL.exe -on "\\serveur\Donnees" -ot shr -actn ace -ace "n:"nt "n:Mak;p:full" -rec cont

Comment modifier les permissions et autorisations d’un service avec SetACL

Pour modifier les permissions d’un service Windows, utilisez le paramètre -ot srv pour spécifier l’objet Service.
Dans cet exemple, on réinitialise le service W32Time (service de serveur de temps) de serveur1 via l’utilisateur Mak :

SetACL.exe -on "\\serveur1\W32Time" -ot srv -actn ace -ace "n:MaK;p:start_stop"

Comment modifier les permissions et autorisations d’une imprimante avec SetACL

Enfin dans ce dernier exemple, on change les permissions d’une imprimante.

SetACL.exe -on "\\server1\HP LaserJet 4050" -ot prn -actn ace
           -ace "n:domain1\HelpDesk;p:man_docs"