Restaurer les droits de fichiers Windows depuis une sauvegarde avec la commande Icacls
- Mise à jour le 01 nov. 2024
Intro
J'ai récemment fait une boulette. J'ai, suite à une mauvaise manipulation, réinitialisé les droits sur un partage de fichiers…
Il est heureusement plutôt facile de les restaurer depuis une sauvegarde et avec la commande icacls.
J'ai personnellement restauré les ACLs depuis un snapshot vss (et avec l'outil dosdev disponible ici : http://www.ltr-data.se/) mais on peut également le faire depuis n'importe quel type de sauvegarde.
Si, comme moi, vous voulez utiliser un snapshot windows, il va falloir d'abord le monter comme un lecteur, sauvegarder les ACLs vers un fichier et le restaurer avec la commande icacls.

Monter un snapshot vss
Nous allons voir ici comment monter un snapshot en tant que lecteur H:.
- Ouvrir une console PowerShell avec les droits administrateur :

- Lister les snapshots pour le lecteur D: :
PS C:\> vssadmin list shadows /for=D:
- Idenfier le snaphost que l'on souhaite monter :

- Télécharger l'archive dosdev.zip à l'adresse : http://www.ltr-data.se/files/dosdev.zip, la dézipper, puis l'utiliser pour monter le snapshot en tant que lecteur H: :
PS C:\> .\dosdev.exe H: \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy3

Restaurer les droits
- Se déplacer dans H: et sauvegarder les ACLs pour chaque dossier avec la commande icacls :
PS C:\> H:
PS H:\> cd .\Share\
PS H:\> icacls 01-Admin /save c:\BACKUPACL_01-Admin /T /C
PS H:\> icacls 02-Softwares /save c:\BACKUPACL_01-Softwares /T /C
PS H:\> icacls 03-Temp /save c:\BACKUPACL_03-Temp /T /C

- Restaurer les ACLs pour chaque dossier avec la commande icacls :
PS H:\> cd D:\Share
PS D:\> icacls .\ /restore c:\BACKUPACL_01-Admin /T /C
PS D:\> icacls .\ /restore c:\BACKUPACL_02-Admin /T /C
PS D:\> icacls .\ /restore c:\BACKUPACL_03-Admin /T /C

- Une fois la restauration des droits terminée, nous pouvons démonter le lecteur H: :
PS D:\> .\dosdev.exe H: /D