ファイルの権限を別のファイルに複製したい。データはコピーせず、権限のみをコピーします。
たとえば、新しいファイルを作成し、既存の別のファイルと同じ権限を付与したいとします。
icacls とテキストエディタを使用すると、数ステップで実行できます。
最初に、元のファイルの権限を保存する必要があります
icacls C:\test\file1.bin /save perms.txt
icacls
を実行したフォルダーに作成したperms.txt
ファイルを編集する必要があります。ファイルは次のようになります。
file1.bin
D:AI(A;;0x1301bf;;;BU)(A;ID;FA;;;BA)(A;ID;FA;;;SY)(A;ID;0x1200a9;;;BU)(A;ID;0x1301bf;;;AU)
2行目のものはすべて無視できます。私たちが気にするのは1行目だけです。 file1.bin
を新しいファイル名file2.bin
に変更して、ファイルを保存します。
ここで、2番目のファイルのファイル権限を復元する必要があるだけです。今回はファイル名が含まれていないことに注意してください。 (「参照されたすべての特権またはグループが呼び出し元に割り当てられているわけではありません。」というエラーが発生した場合は、昇格したコマンドプロンプトでプログラムを再度実行してください。 )
icacls C:\test\ /restore perms.txt
これをバッチで作成するには(1つのドライブのサブフォルダーまたはすべてのフォルダーから別のドライブの同じフォルダー/ファイル構造にセキュリティ権限をコピーする)、次の内容でcpdacls.bat
ファイルを作成します。
@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
そして、それをcpdacls.bat e:\ f:\
のように実行します。
宛先フォルダーのフォルダー構造は、ソースフォルダーとして指定したサブフォルダーに関係なく、ソースフォルダーのフォルダー構造と同じルートから取得である必要があることに注意してください。
これまでで最も簡単な方法は、PowerShellを使用して実行することです。
Get-Acl .\file1 | Set-Acl .\file2