Bir dosyanın güvenlik izinlerini diğerine kopyala


19

Bir dosyanın izinlerini diğerine çoğaltmak istiyorum. Verileri kopyalamak istemiyorum, sadece izinleri.

Örneğin, yeni bir dosya oluşturdum ve zaten var olan başka bir dosyayla aynı izinlere sahip olmasını istiyorum.


Başka bir dosyayla aynı izinler var, ancak bulundukları dizinden farklı mı?
PsychoData

Yanıtlar:


28

Bunu icacls ve bir metin düzenleyici ile birkaç adımda yapabilirsiniz .

İlk önce orijinal dosyanın izinlerini kaydetmelisiniz

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

perms.txtçalıştırdığınız klasörde yeni oluşturduğunuz dosyayı düzenlemeniz gerekir icacls. Dosya şu şekilde görünmelidir:

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

2. sıradaki tüm şeyleri göz ardı edebilirsiniz, tek önemsediğimiz ilk sıra. file1.binYeni dosya adınızı değiştirin ve file2.bindosyayı kaydedin.

Şimdi sadece 2. dosyadaki dosya izinlerini geri yüklemeniz gerekiyor, bu sefer dosya adını eklemediğimizi unutmayın. (" Başvurulan tüm ayrıcalıklar veya gruplar arayana atanmaz. " Şeklinde bir hata alırsanız , programı yükseltilmiş bir komut isteminde yeniden çalıştırın.)

icacls C:\test\ /restore perms.txt

belki de görevi otomatikleştirmek için bunları bir senaryoya koyabilirler mi?
PsychoData

2
Bu yapılabilirdi, ama adım 2'yi nasıl kolayca yapacağımı kafamın üstünden düşünemiyorum. Her neyse, senaryoyu yazacak olsaydım, Powershell'deki tüm şeyleri kullanarak yapardım File.GetAccessControl()veFile.SetAccessControl()
Scott Chamberlain

4

Toplu olarak yapmak için (bir alt klasörden veya bir sürücünün tüm klasörlerini başka bir sürücüdeki aynı klasöre / dosya darlığına kopyalayın), cpdacls.batşu içeriğe sahip bir dosya oluşturun:

@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

Ve sonra böyle çalıştırın cpdacls.bat e:\ f:\.

Hedef klasördeki klasör yapısının, kaynak klasör olarak belirttiğiniz alt klasöre bağlı olarak , kök klasöründen alınan kaynak klasördeki klasör yapısıyla aynı olması gerektiğini unutmayın.


4

Şimdiye kadarki en kolay yol, PowerShell'i kullanmak ve çalıştırmaktır:

Get-Acl .\file1 | Set-Acl .\file2
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.