Chciałbym zreplikować uprawnienia pliku do innego. Nie chcę kopiować danych, tylko uprawnienia.
Na przykład utworzyłem nowy plik i chcę, aby miał takie same uprawnienia jak inny plik, który już istniał.
Chciałbym zreplikować uprawnienia pliku do innego. Nie chcę kopiować danych, tylko uprawnienia.
Na przykład utworzyłem nowy plik i chcę, aby miał takie same uprawnienia jak inny plik, który już istniał.
Odpowiedzi:
Możesz to zrobić w kilku krokach za pomocą icacls i edytora tekstu.
Najpierw musisz zapisać uprawnienia oryginalnego pliku
icacls C:\test\file1.bin /save perms.txt
musisz edytować perms.txt
właśnie utworzony plik w dowolnym folderze, w którym się uruchomiłeś icacls
. Plik powinien wyglądać mniej więcej tak:
file1.bin
D:AI(A;;0x1301bf;;;BU)(A;ID;FA;;;BA)(A;ID;FA;;;SY)(A;ID;0x1200a9;;;BU)(A;ID;0x1301bf;;;AU)
Możesz zignorować wszystkie rzeczy w drugim rzędzie, wszystko, na czym nam zależy, to pierwszy rząd. Zmień na file1.bin
nową nazwę pliku file2.bin
i zapisz plik.
Teraz wystarczy przywrócić uprawnienia do pliku w drugim pliku, zwróć uwagę, że tym razem nie podaliśmy nazwy pliku. (Jeśli pojawi się komunikat o błędzie „ Nie wszystkie wymienione przywileje lub grupy są przypisane do dzwoniącego. ” Uruchom program ponownie w wierszu polecenia z podwyższonym poziomem uprawnień).
icacls C:\test\ /restore perms.txt
File.GetAccessControl()
iFile.SetAccessControl()
Aby utworzyć partię (skopiuj pemisje zabezpieczeń z podfolderu lub wszystkich folderów jednego dysku do tego samego folderu / pliku na innym dysku), utwórz, powiedzmy, cpdacls.bat
plik o następującej treści:
@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
A potem uruchom to jak cpdacls.bat e:\ f:\
.
Pamiętaj, że struktura folderów w folderze docelowym musi być taka sama jak struktura folderów w folderze źródłowym, pobierana z jego katalogu głównego , niezależnie od tego, który podfolder został określony jako folder źródłowy.
Jak dotąd najprostszym sposobem jest użycie programu PowerShell i uruchomienie:
Get-Acl .\file1 | Set-Acl .\file2