
Вы можете использовать встроенный 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 папки?
Прежде чем вносить существенные изменения в разрешения (перемещение, обновление ACL, перенос ресурсов) в папке NTFS (или общей сетевой папке), рекомендуется создать резервную копию старых разрешений. Эта копия позволит вам вернуться к исходным настройкам или, по крайней мере, уточнить старые разрешения для конкретного файла/каталога.
Вы можете использовать инструмент icacls.exe для экспорта/импорта текущих разрешений каталогов NTFS. Чтобы получить все ACL для определенной папки (включая подкаталоги и файлы) и экспортировать их в текстовый файл, выполните следующую команду:
icacls g:\veteran /save c:\backup\veteran_ntfs_perms.txt /t /c
В зависимости от количества файлов и папок экспорт разрешений может занять достаточно много времени. После выполнения команды будет выведена статистика по количеству успешных или неудачных обработок файлов.
Successfully processed 3001 files; Failed processing 0 files
Открыть файл veteran_ntfs_perms.txt с помощью любого текстового редактора. Как видите, он содержит полный список файлов и папок в каталоге, и каждый элемент имеет текущие разрешения, указанные в SDDL (Security Descriptor Definition Language) формат.
Например, текущие разрешения NTFS для папки root выглядят следующим образом:
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-разрешения на папку, используя ранее созданный файл veteran_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 из одной папки в другую
Для копирования разрешений NTFS из одной папки в другую можно использовать текстовый файл с резервной копией ACLs.
Сначала создайте резервную копию 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
Get-Acl -Path 'C:\Share\Veteran' | Set-Acl -Path 'E:\PublicDOCS'