web-dev-qa-db-fra.com

Copier les autorisations de sécurité d'un fichier à un autre

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.

16
TaoTao

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
26
Scott Chamberlain

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.

4
Olexa

Le moyen le plus simple consiste, de loin, à utiliser PowerShell et à exécuter:

Get-Acl .\file1 | Set-Acl .\file2
1
Giovanni Bassi