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.
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.
Jawaban:
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.txt
file 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.bin
ke nama file baru Anda file2.bin
dan 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
File.GetAccessControl()
danFile.SetAccessControl()
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.bat
file 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.
Sejauh ini, cara termudah adalah dengan menggunakan PowerShell dan menjalankan:
Get-Acl .\file1 | Set-Acl .\file2