将一个文件的安全权限复制到另一个


19

我想将文件的权限复制到另一个文件。我不想复制数据,只有权限。

例如,我创建了一个新文件,并希望它具有与另一个已经存在的文件相同的权限。


与另一个文件具有相同的权限,但与它们所在的目录不同吗?
PsychoData 2013年

Answers:


28

您可以使用icacls和文本编辑器完成以下步骤。

首先,您必须保存原始文件的权限

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

您将需要perms.txt在运行的任何文件夹中编辑刚刚创建的文件icacls。该文件应如下所示:

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

您可以忽略第二行中的所有内容,我们只关心第一行。将更file1.bin改为新的文件名file2.bin并保存文件。

现在,您只需要恢复第二个文件的文件权限,请注意,这次我们不包括文件名。(如果出现错误消息“ 并非所有引用的特权或组都分配给了调用者。 ”,请在提升的命令提示符下再次运行该程序。)

icacls C:\test\ /restore perms.txt

也许将它们放入脚本中以使任务自动化?
PsychoData

2
可以做到,但是我无法想到如何轻松地执行步骤2。无论如何,如果我要编写脚本,我会使用File.GetAccessControl()File.SetAccessControl()
Scott Chamberlain 2013年

4

要批量处理(将安全性许可从一个驱动器的子文件夹或所有文件夹复制到另一驱动器上的同一文件夹/文件约束),请创建一个cpdacls.bat具有以下内容的文件:

@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

然后像这样运行它cpdacls.bat e:\ f:\

请注意,目标文件夹中的文件夹结构必须与源文件夹中的文件夹结构相同,并取自其根目录,而不取决于您指定了哪个子文件夹作为源文件夹。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.