Copia le autorizzazioni di sicurezza di un file a un altro


19

Vorrei replicare le autorizzazioni di un file su un altro. Non voglio copiare i dati, solo le autorizzazioni.

Ad esempio, ho creato un nuovo file e desidero che abbia le stesse autorizzazioni di un altro file già esistente.


Stesse autorizzazioni di un altro file, ma diverse dalla directory in cui si trovano?
PsychoData,

Risposte:


28

Puoi farlo in pochi passaggi con icacls e un editor di testo.

Innanzitutto è necessario salvare le autorizzazioni del file originale

icacls C:\test\file1.bin /save perms.txt

dovrai modificare il perms.txtfile che hai appena creato nella cartella in cui ti sei imbattuto icacls. Il file dovrebbe essere simile al seguente:

file1.bin
D:AI(A;;0x1301bf;;;BU)(A;ID;FA;;;BA)(A;ID;FA;;;SY)(A;ID;0x1200a9;;;BU)(A;ID;0x1301bf;;;AU)

Puoi ignorare tutte le cose sulla seconda fila, tutto ciò che ci interessa è la prima fila. Cambia il file1.bintuo nuovo nome file file2.bine salva il file.

Ora devi solo ripristinare i permessi del file sul secondo file, nota che questa volta non abbiamo incluso il nome del file. (Se viene visualizzato un errore che dice " Non tutti i privilegi o gruppi a cui viene fatto riferimento vengono assegnati al chiamante. " Eseguire nuovamente il programma in un prompt dei comandi con privilegi elevati.)

icacls C:\test\ /restore perms.txt

forse metterli in uno script per automatizzare in qualche modo l'attività?
PsychoData,

2
Potrebbe essere fatto, ma non riesco a pensare alla parte superiore della mia testa come fare facilmente il passaggio 2. Comunque, se avessi scritto la sceneggiatura, avrei semplicemente fatto tutto in Powershell usando File.GetAccessControl()eFile.SetAccessControl()
Scott Chamberlain,

4

Per farlo in un batch (copia le pemission di sicurezza da una sottocartella o da tutte le cartelle di un'unità nella stessa cartella / file in un'altra unità), crea un cpdacls.batfile , diciamo, con questo contenuto:

@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

E poi eseguirlo come cpdacls.bat e:\ f:\.

Si noti che la struttura delle cartelle nella cartella di destinazione deve essere uguale alla struttura delle cartelle nella cartella di origine, presa dalla sua radice , non dipende dalla sottocartella specificata come cartella di origine.


4

Il modo più semplice, di gran lunga, è usare PowerShell ed eseguire:

Get-Acl .\file1 | Set-Acl .\file2
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.