Kopieren Sie die Sicherheitsberechtigungen einer Datei in eine andere

19

Ich möchte die Berechtigungen einer Datei auf eine andere replizieren. Ich möchte die Daten nicht kopieren, nur die Berechtigungen.

Ich habe zum Beispiel eine neue Datei erstellt und möchte, dass diese die gleichen Berechtigungen hat wie eine andere Datei, die bereits vorhanden ist.

TaoTao
quelle
Gleiche Berechtigungen wie eine andere Datei, aber anders als das Verzeichnis, in dem sie sich befinden?
PsychoData

Antworten:

28

Mit icacls und einem Texteditor ist dies in wenigen Schritten möglich .

Zuerst müssen Sie die Berechtigungen der Originaldatei speichern

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

Sie müssen die perms.txtsoeben erstellte Datei in dem Ordner bearbeiten, in dem Sie sie ausgeführt haben icacls. Die Datei sollte ungefähr so ​​aussehen:

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

Sie können das ganze Zeug in der 2. Reihe ignorieren, alles, was uns interessiert, ist die erste Reihe. Ändern Sie den file1.binin Ihren neuen Dateinamen file2.binund speichern Sie die Datei.

Jetzt müssen Sie nur noch die Dateiberechtigungen für die 2. Datei wiederherstellen. Beachten Sie, dass wir diesmal keinen Dateinamen angegeben haben. (Wenn Sie die Fehlermeldung erhalten, dass dem Aufrufer nicht alle Berechtigungen oder Gruppen zugewiesen sind, auf die verwiesen wird, führen Sie das Programm an einer Eingabeaufforderung mit erhöhten Rechten erneut aus.)

icacls C:\test\ /restore perms.txt
Scott Chamberlain
quelle
Vielleicht diese in ein Skript setzen, um die Aufgabe etwas zu automatisieren?
PsychoData
1
Es könnte gemacht werden, aber ich kann mir nicht vorstellen, wie ich Schritt 2 einfach machen kann. Jedenfalls würde ich, wenn ich das Drehbuch schreiben würde, das ganze in Powershell mit File.GetAccessControl()und machenFile.SetAccessControl()
Scott Chamberlain
4

Erstellen Sie beispielsweise eine cpdacls.batDatei mit folgendem Inhalt, um sie in einem Stapel zu erstellen (Kopieren von Sicherheitsberechtigungen aus einem Unterordner oder allen Ordnern eines Laufwerks in das gleiche Ordner- / Dateistruktur auf einem anderen Laufwerk) :

@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

Und dann lass es so laufen cpdacls.bat e:\ f:\.

Beachten Sie, dass die Ordnerstruktur im Zielordner die gleichen wie Ordnerstruktur im Quellordner sein muss, von seiner Wurzel genommen , nicht je nachdem , was Unterordner Sie als Quellordner angegeben haben.

Olexa
quelle
4

Mit Abstand am einfachsten ist es, PowerShell zu verwenden und Folgendes auszuführen:

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