Права доступа при копировании и перемещении файлов и папок.
Когда файл или папка скопированы или перемещены, права доступа на них меняются, в зависимости от того, куда они перемещаются. Важно понять, как повлияет на права доступа перемещение или копирование файлов.
Последствия копирования файлов и папок.
При операции копировании папок или файлов из папки в папку, или из раздела в раздел, права доступа к ним меняются. Права доступа к файловой системе NTFS при копировании файлов/папок изменяются так:
- При копировании файла/папки в одном NTFS разделе, копия папки/файла наследует права доступа папки назначения.
- При копировании файла/папки в другой NTFS раздел, её копия наследует права доступа папки назначения.
- При копировании файла/папки не в NTFS раздел, например, в раздел FAT, их копия теряет права доступа к файловой системе NTFS потому, что не NTFS разделы не поддерживают эти права доступа.
Примечание: При копировании файла/папки в одном разделе NTFS или между разделами NTFS, необходимо иметь права на чтение для папки источника и права на запись для конечной папки.
Перемещение файлов и папок.
При перемещении файла/папки, права доступа изменяются, в зависимости от прав на папку назначения. Перемещение файла/папки имеет следующее влияние на права доступа к файловой системе NTFS:
- При перемещении файла/папки в NTFS раздел, они наследуют права доступа новой родительской папки. Если на файл/папку заданы прямые права доступа, эти права сохраняются в дополнение к недавно унаследованным правам.
Примечание: Большинство файлов не имеют прямых прав доступа. Вместо этого они наследуют права от родительской папки. Если на файлы установлены только наследуемые права доступа, они во время перемещения не сохраняются.
- При перемещении файла/папки в другой NTFS раздел, они наследуют права доступа папки назначения. При перемещении файла/папки между разделами, Windows 7 копирует папку/файл в новое место и затем удаляет его из старого местоположения.
- При перемещении файла/папки на не NTFS раздел, они теряют свои права доступа к файловой системе NTFS, потому что не NTFS разделы не поддерживают такие права доступа.
Примечание: При перемещении файла/папки в разделе NTFS или между разделами NTFS, необходимо иметь права на запись для папки назначения и права на изменение для исходного файла/папки.
Действующие права доступа.
На каждый файл/папку установлены права доступа для пользователя и группы пользователей. Windows 7 определяет действующие права доступа на файл/папку путём объединения прав доступа пользователей и групп. Например, если пользователю установлены права на чтение, но он является членом группы с правами на изменение, действующие права пользователя станут — изменение.
При объединении прав доступа, установка «Запретить» имеет приоритет и переопределяет установку «Разрешить». Например, если группа имеет права на изменение в папке, а пользователю, который является членом этой группы, отказано в правах на изменение для этой же папки, то пользователю её изменять запрещено.
Функция действующих прав доступа.
Функция действующих прав доступа определяет права на объект для пользователя или группы, вычисляя предоставленные им права. Вычисление зависит от прав членства в группе и любого из наследуемых полномочий от родительского объекта. Учитываются все домены и локальные группы, членом которых является пользователь или группа пользователей.
Функция действующих прав доступа устанавливает пользователю только приблизительные права. Фактические права пользователя могут отличаться, так как они могут быть предоставлены или в них может быть отказано при входе пользователя в систему. Сведения о входе в систему не могут определяться функцией действующих прав доступа, так как пользователь может не войти в систему. Таким образом, действующие права отражают только права для указанного пользователя или группы, а не права, определённые для входа в систему.
Например, если пользователь подключается к компьютеру через общий файловый ресурс, то вход для этого пользователя устанавливается как сетевой вход. Права доступа, которые получит подключаемый пользователь, могут быть предоставлены или в них отказано по безопасному сетевому идентификатору (SID), поэтому пользователь имеет различные права при локальном и сетевом входе в систему.
Related posts:
- Параметры сжатия файла
- Шифрование файлов и папок в windows 8.1
- Резервное копирование файлов и папок
- Защита персональных файлов и папок
Сохранение разрешений 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 /?
Подписывайтесь на канал
Яндекс.Дзен и узнавайте первыми о новых материалах, опубликованных на сайте.
Если считаете статью полезной,
не ленитесь ставить лайки и делиться с друзьями.
Как задать, скопировать и восстановить NTFS разрешения с помощью ICACLS?
12.05.2021
itpro
Windows 10, Windows Server 2016
комментариев 13
Для управления NTFS разрешениями в Windows можно использовать встроенную утилиту iCACLS. Утилита командной строки icacls.exe позволяет получить или изменить списки управления доступом (ACL — Access Control Lists) на файлы и папки на файловой системе NTFS. В этой статье мы рассмотрим полезные команды управления ntfs разрешениями в Windows с помощью icacls.
Просмотр и изменения NTFS прав на папки и файлы с помощью icacls
Текущие права доступа к любому объекту на NTFS томе можно вывести так:
Команда вернет список пользователей и групп, которым назначены права доступа. Права указываются с помощью сокращений:
Перед правами доступа указаны права наследования (применяются только к каталогам):
- (OI)— наследование объектами
- (CI)— наследование контейнерами
- (IO)— только наследование
- (I)– разрешение унаследовано от родительского объекта
С помощью icacls вы можете изменить права доступа на папку.
Чтобы предоставить группе fs01_Auditors домена resource права чтения и выполнения (RX) на каталог, выполните:
icacls ‘C:\Share\Veteran\’ /grant resource\fs01_Auditors:RX
Чтобы удалить группу из ACL каталога:
icacls ‘C:\Share\Veteran\’ /remove resource\fs01_Auditors
С помощью icacls вы можете включить наследование NTFS прав с родительского каталога:
icacls ‘C:\Share\Veteran\’ /inheritance:e
Или отключить наследование с удалением всех наследованных ACEs:
icacls ‘C:\Share\Veteran\’ /inheritance:r
Также icacls можно использовать, чтобы изменить владельца файла или каталога:
icacls ‘C:\Share\Veteran\’ /setowner resource\a.ivanov /T /C /L /Q
Бэкап (экспорт) текущих NTFS разрешений каталога
Перед существенным изменением разрешений (переносе, обновлении ACL, миграции ресурсов) на NTFS папке (общей сетевой папке) желательно создать резервную копию старых разрешений. Данная копия позволит вам вернуться к исходным настройкам или хотя бы уточнить старые права доступа на конкретный файл/каталог.
Для экспорта/импорта текущих NTFS разрешений каталога вы также можете использовать утилиту icacls. Чтобы получить все ACL для конкретной папки (в том числе вложенных каталогов и файлов), и экспортировать их в текстовый файл, нужно выполнить команду
icacls ‘C:\Share\Veteran’ /save c:\ps\veteran_ntfs_perms.txt /t /c
Примечание. Ключ /t указывает, что нужно получить ACL для всех дочерних подкаталогов и файлов, ключ /c – позволяет игнорировать ошибки доступа. Добавив ключ /q можно отключить вывод на экран информации об успешных действиях при доступе к объектам файловой системы.
В зависимости от количества файлов и папок, процесс экспорта разрешений может занять довольно продолжительное время. После окончания выполнения команды отобразится статистика о количестве обработанных и пропущенных файлов.
Successfully processed 3001 files; Failed processing 0 files
Откройте файл veteran_ntfs_perms.txt с помощью любого текстового редактора. Как вы видите, он содержит полный список папок и файлов в каталоге, и для каждого указаны текущие разрешения в формате SDDL (Security Descriptor Definition Language).
К примеру, текущие NTFS разрешения на корень папки такие:
D:PAI(A;OICI;FA;;;BA)(A;OICIIO;FA;;;CO)(A;OICI;0x1200a9;;;S-1-5-21-2340243621-32346796122-2349433313-23777994)(A;OICI;0x1301bf;;;S-1-5-21-2340243621-32346796122-2349433313-23777993)(A;OICI;FA;;;SY)(A;OICI;FA;;;S-1-5-21-2340243621-32346796122-2349433313-24109193)S:AI
Данная строка описывает доступ для нескольких групп или пользователей. Мы не будем подробно углубляться в SDDL синтаксис (при желании справку по нему можно найти на MSDN, или вкратце формат рассматривался в статье об управлении правами на службы Windows). Мы для примера разберем небольшой кусок SDDL, выбрав только одного субъекта:
(A;OICI;FA;;;S-1-5-21-2340243621-32346796122-2349433313-24109193)
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
Таким образом, мы узнали, что пользователь 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
Примечание. Обратите внимание, что при импорте разрешений из файла указывается путь к родительской папке, но не имя самого каталога.
По окончанию восстановления разрешений также отобразится статистика о количестве обработанных файлов:
Successfully processed 114 files; Failed processing 0 files
С учетом того, что в резервной копии ACL указываются относительные, а не абсолютные пути к файлам, вы можете восстановить разрешения в каталоге даже после его перемещения на другой диск/каталог.
Сброс NTFS разрешений в Windows
С помощью утилиты icacls вы можете сбросить текущие разрешения на указанный файл или каталог (и любые вложенные объекты):
icacls C:\share\veteran /reset /T /Q /C /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 разрешения из файла и примените их к целевому каталогу:
icacls e:\ /restore c:\ps\save_ntfs_perms.txt /c
Еще проще можно скопировать NTFS разрешения с помощью PowerShell:
Get-Acl -Path ‘C:\Share\Veteran’ | Set-Acl -Path ‘E:\PublicDOCS’
Предыдущая статья Следующая статья
Читайте далее в разделе Windows 10 Windows Server 2016
Компьютер неожиданно перезагрузился, или возникла непредвиденная ошибка
Windows не видит компьютеры в сетевом окружении
Ошибка: не найден сетевой путь в Windows (0x80070035)
Восстановление загрузчика BCD и записи MBR в Windows 10/ 11
SMEARG
Недавно на работе потребовалось разграничить права доступа на определённые общедоступные каталоги (ну т.е. чтобы одни пользователи могли туда кидать файлы, вторые могли эти файлы только читать, а третьим вообще запретить туда соваться). На всех этих каталогах права должны быть одинаковыми.
Сразу вспомнилось, что когда я только начинал изучать Powershell мне попалась статья, в которой речь шла о том, что используя Powershell можно копировать эти самые права, тем самым облегчая эту рутинную работу. Ту статью не нашёл, поэтому решил написать свою
На всякий случай уточню: речь идёт о правах, которые назначаются на вкладке Безопасность свойств каталога:
Свойства каталога: Безопасность
Для работы с ACL (Access Control List – список контроля доступа) в Powershell есть два замечательных командлета: Get-Acl и Set-Acl . Как понятно из названия, первый получает ACL, а второй позволяет изменять.
Используя эти командлеты можно копировать права одного каталога на другой. В простейшем случае можно обойтись одной строкой. Пример из встроенной справки Powershell:
Get-Acl C:\dog.txt | Set-Acl -Path C:\cat.txt
Здесь берутся права из файла dog.txt и применяются к файлу cat.txt.
Так как у меня несколько каталогов, к которым нужно применить права, логично было бы перебирать их в цикле, а так как нужные каталоги имеют совершенно разные пути, то ничего другого не придумал, кроме как организовать массив путей к каталогам, приблизительно вот так:
# Каталоги к которым нужно применить права доступа $Path1 = "C:\Directory" $Path2 = "C:\Windows\Temp" $Path3 = "D:\test" $Path4 = "D:\temp" $Paths = $Path1, $Path2, $Path3, $Path4
Теперь всё, что нужно сделать, так это выбрать один каталог, в качестве эталона, назначить ему нужные права и скопировать их на все остальные каталоги:
# ACL каталога, права которого нужно применить к другим каталогам $ACL = Get-Acl 'D:\Source' # Копируем права доступа $Paths | ForEach-Object ` Set-Acl -AclObject $ACL -Path $_ -Passthru >
В этом куске кода права доступа каталога D:\Source сохраняются в переменной, после чего в цикле назначаются всем остальным каталогам.