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

Тема в разделе "FAQ по Пакетным файлам CMD/BAT", создана пользователем Dragokas, 10 мар 2014.

  1. Dragokas
    Оффлайн

    Dragokas Very kind Developer Команда форума Супер-Модератор Разработчик Клуб переводчиков

    Сообщения:
    4.478
    Симпатии:
    4.306

    В файловой системе 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 не умеет копировать разрешения файловой системы, для этого нам придется воспользоваться альтернативными средствами.
     
    Последнее редактирование: 10 мар 2014
    orderman и Kиpилл нравится это.
  2. Dragokas
    Оффлайн

    Dragokas Very kind Developer Команда форума Супер-Модератор Разработчик Клуб переводчиков

    Сообщения:
    4.478
    Симпатии:
    4.306
    Утилита Icacls

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


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


    right7.png

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

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

    right11.png
     
    Drongo, orderman и Kиpилл нравится это.
  3. Dragokas
    Оффлайн

    Dragokas Very kind Developer Команда форума Супер-Модератор Разработчик Клуб переводчиков

    Сообщения:
    4.478
    Симпатии:
    4.306
    Утилита Xcopy

    Xcopy является продвинутым вариантом команды Copy и в отличие от нее умеет работать с сетевыми путями, а также копировать сведения о владельце и данные ACL объекта.
    В нашем случае для того, чтобы скопировать каталог Temp на SRV1 с сохранением списков доступа воспользуемся командой:
    Код (Text):
    Xcopy C:\Temp \\SRV1\C$\Temp /E /O
    right9.png
     
    Drongo, orderman и Kиpилл нравится это.
  4. Dragokas
    Оффлайн

    Dragokas Very kind Developer Команда форума Супер-Модератор Разработчик Клуб переводчиков

    Сообщения:
    4.478
    Симпатии:
    4.306
    Total Commander

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

    right10.png

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

    right12.png
     
    Drongo, Phoenix, orderman и ещё 1-му нравится это.
  5. Kиpилл
    Онлайн

    Kиpилл Команда форума Администратор

    Лучший автор месяца

    Сообщения:
    12.209
    Симпатии:
    4.977
    Как быть с разрешениями для реестра?
    Или хотя бы получить список назначенных прав?
     
  6. Dragokas
    Оффлайн

    Dragokas Very kind Developer Команда форума Супер-Модератор Разработчик Клуб переводчиков

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

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

    Для поиска скрытых ключей будет полезна утилита RegDelNull
     
    Kиpилл нравится это.
  7. Phoenix
    Оффлайн

    Phoenix Активный пользователь

    Сообщения:
    1.840
    Симпатии:
    1.830
    Dragokas, Давно интересовал этот вопрос. Спасибо.
    Какие могут быть последствия, как это сказывается на безопасности системы или работоспособности файлов ? (ну вот только что скачал с ресурсов http://safezone.cc/resources/mbam-clean.79/ в Мои документы - можешь прокоментировать ?)
     

    Вложения:

    • security.png
      security.png
      Размер файла:
      132,8 КБ
      Просмотров:
      28
    • resource-sz.png
      resource-sz.png
      Размер файла:
      141,8 КБ
      Просмотров:
      28
    Последнее редактирование: 10 мар 2014
  8. Гимаев Наиль
    Оффлайн

    Гимаев Наиль Пользователь

    Сообщения:
    59
    Симпатии:
    98
    Ни когда не испытывал особых проблем из-за изменения прав при копировании.
    А вот из-за сохранения прав проблемы были часто.
    К примеру уволился сотрудник. Берёшь его "Мои документы" и перекидываешь другому сотруднику, который принял у него дела.
    А новый сотрудник только через неделю сообщает, что не может открыть эти документы. И приходится выправлять права, чтобы человек смог работать с тем что лежит в его собственных "Моих документах".

    Когда есть возможно работать с GUI я бы пользовался Total Commander.
    А из командной строки я бы использовал winrar, благо он умеет сохранять и права и даже файловые потоки NTFS.
    --- Объединённое сообщение, 7 июл 2014, Дата первоначального сообщения: 7 июл 2014 ---
    Вижу только один случай когда перенос прав между компьютерами может причинить вред.
    Это когда при обратном копировании восстанавливаются права у пользователя, которому эти права понизили в целях безопасности.
    В остальных случаях наличие прав у несуществующих пользователей на файл ни как не отражается на безопасности.
    --- Объединённое сообщение, 7 июл 2014 ---
    Больше всего проблем с правами доставляет Microsoft Office. Если открыть в Excel файл который лежит в сетевой папке, то он автоматически становится личным файлом последнего человека, который работал с этим файлом. Каждый раз приходится выправлять права, чтобы у всех хватало прав на работу с этим файлом.
     
    Dragokas, Drongo, Sandor и 3 другим нравится это.

Поделиться этой страницей