Копировать права доступа ntfs в total commander

Обновлено: 06.07.2024

При копировании файлов и папок при помощи Проводника Windows разрешения этих файлов и папок могут измениться. Например, когда Вы копируете файл внутри тома NTFS или между двумя томами NTFS, Windows 2000 определяет этот файл как новый. При этом, данный файл наследует разрешения папки, в которую он скопирован, и Вам назначается роль "Создатель/владедец".


Примечание: Вам необходимо иметь разрешение на запись для папки назначения для копирования файлов и папок.

Вы можете воспользоваться командой "Xcopy" с параметрами /O, /X, /E, /H и /K для того, чтобы скопировать файлы и сохранить при этом их первоначальные разрешения.

Вышеперечисленные параметры означают следующее:

/E - Копирует все файлы и папки, включая пустые.
/H - Копирует также скрытые и системные файлы.
/K - Копирует атрибуты. По умолчанию команда "Xcopy" снимает атрибут "Только чтение".
/O - Копирует информацию о владельце и ACL.
/X - Копирует настройки аудита (требуется параметр "/O").
  • Настройки безопасности, примененные непосредственно к файлам и папкам, сохраняются.
  • Настройки безопасности, унаследованные от папки назначения, теряются.
  • Настройки безопасности папки назначения наследуются.
  • При перемещении файлов или папок на диск с файловой системой FAT, данные файлы и папки теряют свои разрешения NTFS, так как разделы FAT не поддерживают разрешения NTFS.

Как скопировать папку в другую папку, сохранив при этом ее разрешения

Пример

Введите команду "xcopy c:\olddocs c:\newdocs /O /X /E /H /K" (без кавычек), где "olddocs" - это папка, содержащая копируемые файлы, а "newdocs" - это папка назначения, и нажмите клавишу "Enter".

Альтернатива
Есть альтернативные способы: копирование с помощью программ Total Commander, FAR или robocopy, входящая в состав Windows Server 2003 Resource Kit Tools

В Total Commander нажимаем F5 (Копировать) и ставим галочку
Скопировать права доступа NTFS (нужны адм. права)

Файловая система NTFS с помощью списка контроля доступа (Access Control List, ACL) позволяет гибко организовывать и контролировать доступ к файлам и папкам в системе, раздавать разрешения пользователям или другим объектам. Однако при простом копировании или перемещении объектов ACL разрешения теряются.

Заново выставлять все права вручную в сложной файловой системе с кучей пользователей. занятие для человека с железными яйцами нервами или кому просто больше не чем заняться.

Самый простой способ сохранить права доступа при копировании - воспользоваться Total Commander. Если вы не любите или боитесь работать в командной строке, то это ваш вариант. При копировании/переносе просто отметьте галочкой чекбокс «Copy NTFS permissions».

Возможности командной строки всегда выше, нежели возможности настройки через интерфейс. Более универсальный способ, воспользоваться командой xcopy.

Команда XCOPY

XCOPY более продвинутый вариант команды COPY, но в отличие от последней умеет работать с сетевыми путями и копировать сведения о владельце и данные ACL объекта, то есть права доступа к файлам и папкам в системе NTFS. Синтаксис команды предельно простой:

xcopy источник [назначение] параметры

Допустим нам необходимо сделать резервную копию каталога баз данных 1С D:\bases1C на сетевой накопитель NAS с сохранением списков доступа. Вот как будет выглядеть соответствующая команда:

xcopy D:\bases1C \\NAS\backup1c /E /O

  • параметр /Е - копирует каталоги с подкаталогами, включая пустые
  • параметр /О - копирует сведения о владельце и ACL

В большинстве случаев этих двух параметров достаточно, полный список можно посмотреть xcopy /?

ICACLS

Утилита ICACLS пришла на смену CACLS из Windows XP. Позволяет отображать и изменять списки управления доступом (Access Control Lists (ACLs) ) к файлам и папкам файловой системы, сохранять список доступа указанного объекта в файл и затем применить этот список к указанному объекту, то есть делать резервную копию прав доступа к объекту.

Приведу наиболее интересный пример использования ICACLS:

icacls c:\каталог /save name /t

icacls c:\другой_каталог /restore name

Итак, первой командой ICACLS создаем резервную копию прав доступа указанного объекта и сохраняем его в файл с именем name. Второй командой применяем резервную копию для другого объекта. Таким образом можно существенно упростить процесс переноса прав доступа с одного каталога на другой.

Стоит отметить, что файл с правами доступа по умолчанию сохраняется в корневую папку активного пользователя. С полным списком возможностей утилиты можно ознакомиться введя команду icacls /?

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

разрешения NTFS для папки

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

копирование папки в проводнике

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

вставка файла в проводнике

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

разрешения папки после копирования

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

дополнительные разрешения папки

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

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

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

Утилита Icacls

Эта утилита специально предназначена для работы с ACL. В числе прочего она может сохранить список доступа указанного объекта в файл, а затем применить этот список к указанному объекту.

Открываем командную консоль и сохраняем ACL исходного каталога Temp со всем его содержимым (подкаталоги и файлы) в файл tempACL командой:

Icacls C:\Temp\* /save tempACL /t

сохранение списка доступа в файл

сохраненный файл ACL

Перенесем созданный файл tempACL на SRV1 и восстановим из него ACL каталога Temp командой:

Icacls C:\temp /restore C:\tempACL

восстановление ACL из файла

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

восстановленные разрешения папки Temp

Утилита Xcopy

Xcopy является продвинутым вариантом команды Copy и в отличие от нее умеет работать с сетевыми путями, а также копировать сведения о владельце и данные ACL объекта.

В нашем случае для того, чтобы скопировать каталог Temp на SRV1 с сохранением списков доступа воспользуемся командой:

Xcopy C:\Temp \\SRV1\C$\Temp /E /O

копирование с помощью Xcopy

Total Commander

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

копирование прав доступа с помощью Total Commander

date

12.05.2021

directory

Windows 10, Windows Server 2016

comments

комментариев 12

Просмотр и изменения NTFS прав на папки и файлы с помощью icacls

Текущие права доступа к любому объекту на NTFS томе можно вывести так:

icacls вывести ntfs разрешения каталога

Команда вернет список пользователей и групп, которым назначены права доступа. Права указываются с помощью сокращений:

Перед правами доступа указаны права наследования (применяются только к каталогам):

С помощью icacls вы можете изменить права доступа на папку.

Чтобы предоставить группе fs01_Auditors домена resource права чтения и выполнения (RX) на каталог, выполните:

icacls 'C:\Share\Veteran\' /grant resource\fs01_Auditors:RX

icacls предоставить права на каталог

Чтобы удалить группу из ACL каталога:

icacls 'C:\Share\Veteran\' /remove resource\fs01_Auditors

С помощью icacls вы можете включить наследование NTFS прав с родительского каталога:

icacls 'C:\Share\Veteran\' /inheritance:e

icacls управление наследованием

Или отключить наследование с удалением всех наследованных ACEs:

icacls 'C:\Share\Veteran\' /inheritance:r

Также icacls можно использовать, чтобы изменить владельца файла или каталога:

icacls 'C:\Share\Veteran\' /setowner resource\a.ivanov /T /C /L /Q

icacls setowner изменить владельца

Бэкап (экспорт) текущих NTFS разрешений каталога

Перед существенным изменением разрешений (переносе, обновлении ACL, миграции ресурсов) на NTFS папке (общей сетевой папке) желательно создать резервную копию старых разрешений. Данная копия позволит вам вернуться к исходным настройкам или хотя бы уточнить старые права доступа на конкретный файл/каталог.

Для экспорта/импорта текущих NTFS разрешений каталога вы также можете использовать утилиту icacls. Чтобы получить все ACL для конкретной папки (в том числе вложенных каталогов и файлов), и экспортировать их в текстовый файл, нужно выполнить команду

icacls 'C:\Share\Veteran' /save c:\ps\veteran_ntfs_perms.txt /t /c

Примечание. Ключ /t указывает, что нужно получить ACL для всех дочерних подкаталогов и файлов, ключ /c – позволяет игнорировать ошибки доступа. Добавив ключ /q можно отключить вывод на экран информации об успешных действиях при доступе к объектам файловой системы.

icacls экспорт ntfs разрешений

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

Successfully processed 3001 files; Failed processing 0 files

Откройте файл veteran_ntfs_perms.txt с помощью любого текстового редактора. Как вы видите, он содержит полный список папок и файлов в каталоге, и для каждого указаны текущие разрешения в формате SDDL (Security Descriptor Definition Language).

разрешения на файлы и каталоге в формате sddl

К примеру, текущие NTFS разрешения на корень папки такие:

Данная строка описывает доступ для нескольких групп или пользователей. Мы не будем подробно углубляться в SDDL синтаксис (при желании справку по нему можно найти на MSDN, или вкратце формат рассматривался в статье об управлении правами на службы Windows). Мы для примера разберем небольшой кусок SDDL, выбрав только одного субъекта:

A – тип доступа (Allow)

OICI – флаг наследования (OBJECT INHERIT+ CONTAINER INHERIT)

FA – тип разрешения (SDDL_FILE_ALL – все разрешено)

S-1-5-21-2340243621-32346796122-2349433313-24109193 – SID учетной записи или группы в домене, для которой заданы разрешения. Чтобы преобразовать SID в имя учетной записи или группы, воспользуйтесь командой:

$objSID = New-Object System.Security.Principal.SecurityIdentifier ("S-1-5-21-2340243621-32346796122-2349433313-24109193")
$objUser = $objSID.Translate( [System.Security.Principal.NTAccount])
$objUser.Value

AD sid to user

Таким образом, мы узнали, что пользователь corp\dvivan обладал полными правами (Full Control) на данный каталог.

Восстановление NTFS разрешений с помощью iCacls

С помощью ранее созданного файла veteran_ntfs_perms.txt вы можете восстановить NTFS разрешения на каталог. Чтобы задать NTFS права на объекты в каталоге в соответствии со значениями в файле с резервной копией ACL, выполните команду:

icacls C:\share /restore c:\PS\veteran_ntfs_perms.txt /t /c

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

По окончанию восстановления разрешений также отобразится статистика о количестве обработанных файлов:

восстановление ntfs разрешений каталога icacls.exe

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

Сброс NTFS разрешений в Windows

С помощью утилиты icacls вы можете сбросить текущие разрешения на указанный файл или каталог (и любые вложенные объекты):

icacls C:\share\veteran /reset /T /Q /C /RESET

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

icacls RESET сбросить ntfs разрешения

Копирование NTFS прав между папками

Вы можете использовать текстовый файл с резервной копией ACL для копирования NTFS разрешений с одного каталога на другой/

Сначала создайте бэкап NTFS разрешений корня папки:

icacls 'C:\Share\Veteran' /save c:\ps\save_ntfs_perms.txt /c

А замет примените сохраненные ACL к целевой папке:

icacls e:\share /restore c:\ps\save_ntfs_perms.txt /c

Это сработает, если исходная и целевая папка называются одинаково. А что делать, если имя целевой папки отличается? Например, вам нужно скопировать NTFS разрешения на каталог E:\PublicDOCS

Проще всего открыть файл save_ntfs_perms.txt в блокноте и отредактировать имя каталога. С помощью функции Replace замените имя каталога Veteran на PublicDOCS.

вручную заменить целевой каталог при копировании NTFS разрешений папки

Затем импортируйте NTFS разрешения из файла и примените их к целевому каталогу:

icacls e:\ /restore c:\ps\save_ntfs_perms.txt /c

Get-Acl -Path 'C:\Share\Veteran' | Set-Acl -Path 'E:\PublicDOCS'

Предыдущая статья Следующая статья

page

page

page

Компьютер неожиданно перезагрузился, или возникла непредвиденная ошибка Windows 10 не видит компьютеры в сетевом окружении Ошибка 0x80070035: Не найден сетевой путь в Windows 10 Microsoft ограничила работу Windows 7 и 8.1 на ПК с новыми процессорами

Возможно ее вывод разрешений и проще чем у icacls, но вот экспорт, импорт разрешений и рекурсию она все же не поддерживает.

А что если путь к файлу превышает 256 символов, как обойти ограничение?

icacls не сохраняет ВЛАДЕЛЬЦЕВ, банально в SDDL-строках отсутствует O:S-1-……… как можно заметить, а при /restore тогда «Отказано в доступе!». А с cacls и подавно…

Когда в свойствах файла во вкладке Безопасность такое:
«У вас нет разрешения на просмотр текущих разрешений для этого объекта»;

Не удалось отобразить текущего владельца.

К примеру, в нашем случае, ошибка появилась после неудачной попытки подключиться к серверу FTP. А вообще, причины появления могут прятаться как в самой программе, так это могут быть и какие-либо внешние факторы.

total commander снимите защитуСними

Покопавшись в различных причинах, изучив работу программы были обнаружены и виновники. Ими оказались файлы с расширением .ini (что бы увидеть такой файл, нужно включить его отображение), расположенные в той же папке, что и остальные файлы данной программы. В свойствах такого файла стояла пометка «только для чтения» и из-за этого невозможно было что-либо записать.

Убираем защиту от записи в Total Commander

Существует парочка простых способов для снятия защиты от записи. Мы их рассмотрим по порядку.

Способ 1. Запуск Total Commander с правами администратора

Он пригодится в случае одноразовой настройки подключения к серверу FTP, либо при необходимости установить подходящий параметр в настройках программы. Запустите Total Commander с правами администратора. Для этого сделайте клик правой кнопкой мышки по значку программы и выберите соответствующий пункт. С такими правами откроется возможность делать изменения в настройках и выполнять новые подключения к серверу FTP.

Запуск от имени администратора

Вы можете даже сделать автоматический запуск приложения с правами администратора. Что бы получить такой эффект, сделайте снова клик правой кнопкой, но только в этот раз выберите «Свойства». Откроется небольшое окошко выберите в нем раздел совместимости и в самом низу установите флажок возле строчки «Выполнения программы от имени администратора». После этого сохраните выполненные настройки нажатием кнопки «Применить».

Виполнять программу от именни Администратора

После таких настроек, программа будет все время выполнять запуск с правами администратора. Благодаря этому, можно избежать проблемы с защитой от записи.

Способ 2: Изменение прав доступа в файле конфигурации Total Commander.

Безопасность файла wincmd.ini

В нем нужно найти файл с именем wincmd.ini. По этому файлу нужно сделать клик правой кнопкой мышки и выбрать «Свойства». В следующем окошке перейдите в раздел Безопасности. В разделе Групп и пользователей нужно выбрать Пользователи и нажать на кнопку «Изменить. В окне разрешений выберите пользователей и установите все флажки для полного доступа. После этого сохраняете все выполненные изменения и можете проверять работу программы.

Изминение прав доступа на файл wincmd.ini

Все должно нормально заработать. Если же ошибка все равно появляется, то попробуйте выполнить те же самые действия с файлом wcx_ftp.ini. Он находится в той же самой папке.

Спасибо, помогло с файлами ini

На своем компьютере зайдите на диск С, найдите папку Total Commander, и в папке найдите файлы wincmd.ini и wcx_ftp.ini.

А у меня нашлись файлы wincmd и wcx_ftp без ini. Можно проделать это с этими файлами?

Ничто не помогло, из того, что тут предлагается.

Спасибо, помогла статья

Вот Это ты молодец. Помогло.

Спасибо за науку. Помогло

Вылезло при замене цвета фона.Выставил галочки заработало.Спасибо.

Все класс! Большое СП

спс помогло исправление ошибок

Спасибо- помогло форматирование в NTFC

Читайте также: