14

Я хотел бы скопировать права доступа к одному файлу. Я не хочу копировать данные, только разрешения.

Например, я создал новый файл и хочу, чтобы он имел те же разрешения, что и другой файл, который уже существовал.

2 ответа2

25

Вы можете сделать это в несколько шагов с помощью 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
3

Чтобы сделать это в пакете (скопируйте разрешения безопасности из подпапки или всех папок одного диска в одну и ту же папку / файл на другом диске), создайте, скажем, файл 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:\ .

Обратите внимание, что структура папки в папке назначения должна совпадать со структурой папки в исходной папке, взятой из ее корня, независимо от того, какую подпапку вы указали в качестве исходной папки.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .