Поиск по сайту:

Как установить, скопировать, экспортировать или восстановить разрешения NTFS с помощью iCACLS?


Вы можете использовать встроенный инструмент iCACLS для управления разрешениями NTFS в Windows.

icacls.exe

Инструмент командной строки позволяет получать или изменять списки контроля доступа (ACL) для файлов и папок в файловой системе NTFS. В этой статье мы рассмотрим полезные команды для управления разрешениями NTFS в Windows с помощью iCACLS.

Использование iCACLS для просмотра и установки разрешений для файлов и папок

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

icacls 'C:\Share\Veteran\'

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

  • F - полный доступ

  • M - изменить доступ.

  • RX - доступ на чтение и выполнение

  • R - доступ только для чтения.

  • W - доступ только для записи.

  • D - удалить

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

  • (OI) - наследование объекта

  • (CI) - наследование контейнера

  • (IO) - только наследовать

  • (I) - наследование разрешений от родительского контейнера.

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

Чтобы предоставить группе «resource\mun-fs01_Auditors» разрешения на чтение и выполнение (RX) в папке:

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

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

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

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

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

Или отключите наследование, удалив все унаследованные ACE:

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

Вы можете использовать icacls.exe для изменения владельца файла или папки.

icacls 'C:\Share\Veteran\' /setowner resource\j.smith /T /C /L /Q

Как сделать резервную копию (экспортировать) разрешения NTFS для папки?

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

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

icacls g:\veteran /save c:\backup\veteran_ntfs_perms.txt /t /c

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

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

Successfully processed 3001 files; Failed processing 0 files

Откройте файл veteran_ntfs_perms.txt в любом текстовом редакторе. Как видите, он содержит полный список файлов и папок в каталоге, и каждый элемент имеет текущие разрешения, указанные в формате 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 мы не будем (формат SDDL кратко обсуждался в статье «Как просмотреть и изменить разрешения служб в Windows?»). Давайте сосредоточимся на небольшом фрагменте SDDL, выбрав только один объект:

(A;OICI;FA;;;S-1-5-21-2340243621-32346796122-2349433313-24109193)

A - тип доступа (Разрешить)

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

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

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

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

Или используйте одну из команд:

Get-ADUser -Identity SID 

или

Get-ADGroup -Identity SID

Таким образом, вы обнаружили, что пользователь corp\dvivar имеет права полного доступа к этому каталогу.

Как восстановить разрешения NTFS с помощью iCacls?

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

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

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

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

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

Сброс разрешений NTFS к значениям по умолчанию

Вы можете использовать инструмент icacls для сброса разрешений папки (а также вложенных файлов и подкаталогов).

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

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

Копирование разрешений NTFS из одной папки в другую

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

Сначала создайте резервную копию разрешений NTFS исходной папки:

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

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

icacls D:\Share /restore C:\PS\save_ntfs_perms.txt /c

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

Самый простой способ — открыть файл save_ntfs_perms.txt в блокноте и отредактировать имя папки. Используйте функцию «Заменить», чтобы заменить имя Ветеран на PublicDOCS.

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

icacls D:\ /restore C:\PS\save_ntfs_perms.txt /c

Еще проще скопировать разрешения NTFS из одной папки в другую с помощью PowerShell:

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

Статьи по данной тематике