Сохранение и восстановление NTFS разрешений с помощью ICACLS

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

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

Чтобы получить все ACL для конкретной папки и вложенных каталогов и файлов и сохранить их в текстовый файл, нужно выполнить команду

icacls g:\veteran /save veteran_ntfs_perms.txt /t /c
Файл с правами доступа по-умоланию сохраняется в текущую папку пользователя.

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

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

Successfully processed 3001 files; Failed processing 0 files

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

разрешения на файлы и каталоге в формате sddlК примеру, текущие 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). Мы для примера разберем небольшой кусок 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

AD sid to userИли командами Get-ADUser -Identity SID или  Get-ADGroup -Identity SID

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

Чтобы автоматически выставить NTFS решения на объекты в данном каталоге в соответствии со значениями, сохраненными в  файле резервной копии, выполните команду:

icacls g:\ /restore veteran_ntfs_perms.txt /t /c

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

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

icacls восстановление NTFS разрешений


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

Комментариев: 6 Оставить комментарий

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)