Je voudrais reproduire les autorisations d'un fichier à un autre. Je ne veux pas copier les données, seulement les autorisations.
Par exemple, j'ai créé un nouveau fichier et je souhaite lui attribuer les mêmes autorisations qu'un autre fichier déjà existant.
Vous pouvez le faire en quelques étapes avec icacls et un éditeur de texte.
Tout d'abord, vous devez enregistrer les autorisations du fichier d'origine
icacls C:\test\file1.bin /save perms.txt
vous devrez éditer le fichier perms.txt
que vous venez de créer dans le dossier dans lequel vous avez exécuté icacls
. Le fichier devrait ressembler à ceci:
file1.bin
D:AI(A;;0x1301bf;;;BU)(A;ID;FA;;;BA)(A;ID;FA;;;SY)(A;ID;0x1200a9;;;BU)(A;ID;0x1301bf;;;AU)
Vous pouvez ignorer tout ce qui se trouve à la deuxième rangée. Tout ce qui nous intéresse, c'est la première. Changez le file1.bin
en votre nouveau nom de fichier file2.bin
et enregistrez le fichier.
Maintenant, il vous suffit de restaurer les autorisations de fichier sur le deuxième fichier. Notez que nous n'avons pas inclus le nom de fichier pour le moment. (Si vous obtenez une erreur indiquant ", tous les privilèges ou groupes référencés ne sont pas attribués à l'appelant. " exécutez à nouveau le programme dans une invite de commande avec privilèges élevés. )
icacls C:\test\ /restore perms.txt
Pour créer un lot (copiez les autorisations de sécurité d'un sous-dossier ou de tous les dossiers d'un lecteur dans le même dossier/dossier sur un autre lecteur), créez un fichier, disons, cpdacls.bat
avec ce contenu:
@echo off
for /r %1 %%f in (.) do call :icacls_one %%f %2
goto :eof
:icacls_one
icacls %1\*.* /save %TEMP%\perms.txt
icacls %2.%~pnx1 /restore %TEMP%\perms.txt
del /q %TEMP%\perms.txt
Et puis exécutez-le comme cpdacls.bat e:\ f:\
.
Notez que la structure de dossier dans le dossier de destination doit être identique à la structure de dossier dans le dossier source, extraite de sa racine, indépendamment du sous-dossier que vous avez spécifié en tant que dossier source.
Le moyen le plus simple consiste, de loin, à utiliser PowerShell et à exécuter:
Get-Acl .\file1 | Set-Acl .\file2