Salin izin keamanan dari satu file ke file lain

19

Saya ingin mereplikasi izin file ke yang lain. Saya tidak ingin menyalin data, hanya izin.

Misalnya, saya membuat file baru dan ingin memiliki izin yang sama dengan file lain yang sudah ada.

TaoTao
sumber
Izin yang sama dengan file lain, tetapi berbeda dengan direktori yang ada di dalamnya?
PsychoData

Jawaban:

28

Anda dapat melakukannya dalam beberapa langkah dengan icacls dan editor teks.

Pertama, Anda harus menyimpan izin dari file asli

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

Anda perlu mengedit perms.txtfile yang baru saja Anda buat di folder apa pun yang Anda jalankan icacls. File tersebut akan terlihat seperti ini:

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

Anda dapat mengabaikan semua hal di baris ke-2, yang kami pedulikan hanyalah baris pertama. Ubah file1.binke nama file baru Anda file2.bindan simpan file tersebut.

Sekarang Anda hanya perlu mengembalikan izin file pada file ke-2, perhatikan bahwa kami tidak menyertakan nama file saat ini. (Jika Anda mendapatkan kesalahan yang mengatakan " Tidak semua hak istimewa atau grup yang direferensikan ditugaskan ke pemanggil. " Jalankan program lagi dalam prompt perintah yang ditinggikan.)

icacls C:\test\ /restore perms.txt
Scott Chamberlain
sumber
mungkin memasukkan ini ke dalam skrip untuk mengotomatisasi tugas agak?
PsychoData
2
Itu bisa dilakukan, tetapi saya tidak bisa berpikir dari atas kepala saya bagaimana melakukan langkah 2 dengan mudah. Ngomong-ngomong, jika saya akan menulisnya, saya hanya akan melakukan semuanya di Powershell menggunakan File.GetAccessControl()danFile.SetAccessControl()
Scott Chamberlain
4

Untuk membuatnya dalam batch (salin pemindahan keamanan dari subfolder atau semua folder dari satu drive ke folder / striktur file yang sama di drive lain), buat, katakanlah, cpdacls.batfile dengan konten ini:

@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

Dan kemudian jalankan seperti cpdacls.bat e:\ f:\.

Perhatikan bahwa struktur folder di folder tujuan harus sama dengan struktur folder di folder sumber, diambil dari akarnya , tidak tergantung pada subfolder apa yang telah Anda tentukan sebagai folder sumber.

Olexa
sumber
4

Sejauh ini, cara termudah adalah dengan menggunakan PowerShell dan menjalankan:

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