web-dev-qa-db-ja.com

あるファイルのセキュリティ権限を別のファイルにコピーする

ファイルの権限を別のファイルに複製したい。データはコピーせず、権限のみをコピーします。

たとえば、新しいファイルを作成し、既存の別のファイルと同じ権限を付与したいとします。

19
TaoTao

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
28

これをバッチで作成するには(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:\のように実行します。

宛先フォルダーのフォルダー構造は、ソースフォルダーとして指定したサブフォルダーに関係なく、ソースフォルダーのフォルダー構造と同じルートから取得である必要があることに注意してください。

4
Olexa

これまでで最も簡単な方法は、PowerShellを使用して実行することです。

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