Сохранение разрешений NTFS при копировании или перемещении файлов

Dragokas

Angry & Scary Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
7,814
Реакции
6,593

В файловой системе NTFS каждый объект (файл или папка) имеет свой список контроля доступа (Access Control List, ACL), в котором содержится информация о том, кто (или что) имеет доступ к объекту и какие операции разрешено (или запрещено) этому субъекту проводить над объектом. А что происходит с ACL при копировании или перемещении объекта? Попробуем это выяснить …

В качестве подопытного возьмем папку Temp в корне диска C. Откроем свойства папки и посмотрим ее разрешения. Как видите, в списке доступа есть только группа локальных администраторов и пользователь kirill (то есть я :)).

right1.png


Теперь возьмем нашу папку.

right2.png


И помощью Проводника скопируем ее на компьютер SRV1, также в корень диска C.

right3.png


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

right4.png


Для того чтобы понять, откуда взялись новые разрешения, пройдем в дополнительные параметры безопасности папки (кнопка Advanced). Как видно из рисунка, все разрешения папки Temp унаследованы от диска С.

right5.png


В этой ситуации нет ничего удивительного. По умолчанию разрешения NTFS сохраняются только при копировании\перемещении в пределах одного логического диска, или тома. Если же объект перемещается на другой диск того же (или другого) компьютера, то все разрешения заменяются наследуемыми от родительского объекта, которым в нашем случае и является диск C компьютера SRV1.

В нашем случае скопирована всего лишь одна папка с несколькими файлами, поэтому при необходимости восстановить утерянные разрешения несложно. А если подобное случиться при переносе серьезного файлового ресурса с высоким уровнем вложенности и сложной структурой разрешений NTFS, заданных вручную ?

К сожалению, проводник Windows не умеет копировать разрешения файловой системы, для этого нам придется воспользоваться альтернативными средствами.
 
Последнее редактирование:
Утилита Icacls

Эта утилита специально предназначена для работы с ACL. В числе прочего она может сохранить список доступа указанного объекта в файл, а затем применить этот список к указанному объекту.
Открываем командную консоль и сохраняем ACL исходного каталога Temp со всем его содержимым (подкаталоги и файлы) в файл tempACL командой:
Код:
Icacls C:\Temp\* /save tempACL /t

right6.png



По умолчанию утилита сохраняет файл в профиле пользователя — C:\Users\Имя_пользователя. Это обычный текстовый файл, который при желании можно открыть в Блокноте.


right7.png


Перенесем созданный файл tempACL на SRV1 и восстановим из него ACL каталога Temp командой:
Код:
Icacls C:\temp /restore C:\tempACL

right8.png


Затем еще раз посмотрим разрешения скопированой папки Temp и увидим, что справедливость восторжествовала :) и исходные разрешения восстановлены.

right11.png
 
Утилита Xcopy

Xcopy является продвинутым вариантом команды Copy и в отличие от нее умеет работать с сетевыми путями, а также копировать сведения о владельце и данные ACL объекта.
В нашем случае для того, чтобы скопировать каталог Temp на SRV1 с сохранением списков доступа воспользуемся командой:
Код:
Xcopy C:\Temp \\SRV1\C$\Temp /E /O

right9.png
 
Total Commander

Те, кто боится не любит работать в командной строке, могут воспользоваться файловым менеджером стороннего производителя, например Total Commander. В нем при копировании\переносе есть возможность скопировать разрешения NTFS, просто отметив галочкой чекбокс «Copy NTFS permissions».

right10.png


И в завершение один важный момент, который учитывать при перемещении файловых ресурсов — разрешения NTFS можно свободно переносить только в пределах одного домена или леса доменов. Если к примеру скопировать папку со списком доступа на компьютер, не входящий в домен, то получим интересную ситуацию: ACL перенесен, но в локальной базе учетных записей нет такого пользователя. В этом случае при просмотре разрешений мы увидим примерно такую картину:

right12.png
 
Koza Nozdri, родные средства ком.строки этого не позволяют.
Используй средство SubInACL из состава Windows Resource Kit.
Также посмотри в сторону утилит Руссиновича:

Также тебе будет интересна статья про сброс прав на сис. файлы и реестр: http://www.carrona.org/resetreg.html
Будь внимателен, Microsoft не рекомендует использовать этот способ на ОС выше XP. Тем не менее, John Carrona об этом не говорит. Может, ему виднее.

Для поиска скрытых ключей будет полезна утилита RegDelNull
http://technet.microsoft.com/ru-ru/sysinternals/bb897332
 
Dragokas, Давно интересовал этот вопрос. Спасибо.
Какие могут быть последствия, как это сказывается на безопасности системы или работоспособности файлов ? (ну вот только что скачал с ресурсов https://safezone.cc/resources/mbam-clean.79/ в Мои документы - можешь прокоментировать ?)
 

Вложения

  • security.png
    security.png
    39.9 KB · Просмотры: 131
  • resource-sz.png
    resource-sz.png
    42 KB · Просмотры: 137
Последнее редактирование:
Ни когда не испытывал особых проблем из-за изменения прав при копировании.
А вот из-за сохранения прав проблемы были часто.
К примеру уволился сотрудник. Берёшь его "Мои документы" и перекидываешь другому сотруднику, который принял у него дела.
А новый сотрудник только через неделю сообщает, что не может открыть эти документы. И приходится выправлять права, чтобы человек смог работать с тем что лежит в его собственных "Моих документах".

Когда есть возможно работать с GUI я бы пользовался Total Commander.
А из командной строки я бы использовал winrar, благо он умеет сохранять и права и даже файловые потоки NTFS.
можешь прокоментировать ?
Вижу только один случай когда перенос прав между компьютерами может причинить вред.
Это когда при обратном копировании восстанавливаются права у пользователя, которому эти права понизили в целях безопасности.
В остальных случаях наличие прав у несуществующих пользователей на файл ни как не отражается на безопасности.Больше всего проблем с правами доставляет Microsoft Office. Если открыть в Excel файл который лежит в сетевой папке, то он автоматически становится личным файлом последнего человека, который работал с этим файлом. Каждый раз приходится выправлять права, чтобы у всех хватало прав на работу с этим файлом.
 
Назад
Сверху Снизу