Команда iCACLS – управление доступом к файлам и папкам.
icacls
ACL
cacls
Команда iCACLS – управление доступом к файлам и папкам.
Команда iCACLS позволяет отображать или изменять списки управления доступом **A**ccess **C**ontrol **L** ists \(ACLs ) к файлам и папкам файловой системы. Утилита iCACLS.EXE является дальнейшим усовершенствованием утилиты управления доступом CACLS.EXE.
Управление доступом к объектам файловой системы NTFS реализуется с использованием специальных записей в таблице MFT Master File Table. Каждому файлу или папке файловой системы NTFS соответствует запись в таблице MFT, содержащая специальный дескриптор безопасности SD Security Descriptor. Каждый дескриптор безопасности содержит два списка контроля доступа:
System Access-Control List SACL - системный список управления доступом .
Discretionary Access-Control List DACL - список управления избирательным доступом.
SACL управляется системой и используется для обеспечения аудита попыток доступа к объектам файловой системы, определяя условия при которых генерируется события безопасности. В операционных системах Windows Vista и более поздних, SACL используется еще и для реализации механизма защиты системы с использованием уровней целостности Integrity Level, IL.
DACL - это собственно и есть список управления доступом ACL в обычном понимании. Именно DACL формирует правила, определяющие, кому разрешить доступ к объекту, а кому - запретить.
Каждый список контроля доступа ACL представляет собой набор элементов записей контроля доступа - Access Control Entries, или ACE ) . Записи ACE бывают двух типов разрешающий и запрещающий доступ, и содержит три поля:
· SID пользователя или группы, к которому применяется данное правило
· Вид доступа, на которое распространяется данное правило
· Тип ACE - разрешающий или запрещающий.
SID - Security ID – уникальный идентификатор, который присваивается каждому пользователю или группе пользователей в момент их создания. Посмотреть примеры SID можно , например с помощью команды WHOAMI /ALL. Как видим, система управления доступом к объектам NTFS оперирует не именами, а идентификаторами SID. Поэтому, например нельзя восстановить доступ к файлам и папкам, существовавший для удаленного из системы пользователя, создав его заново с тем же самым именем – он получит новый SID и правила записей ACE, применяемые к старому идентификатору SID, выполняться не будут.
При определении результатов запросов на доступ к объектам файловой системы NTFS применимы следующие правила:
· Если в дескрипторе безопасности отсутствует DACL , то объект считается незащищенным, т.е. все имеют к нему неограниченный доступ.
· Если DACL существует, но не содержит ни одного элемента ACE, то доступ к объекту закрыт для всех.
Для того чтобы изменить DACL объекта, пользователь процесс должен обладать правом записи в DACL WRITE\_DAC \- WDAC. Право записи может быть разрешено или запрещено, с помощью утилиты icalc.exe, но даже если установлен запрет, все равно разрешение на запись имеется хотя бы у одного пользователя владельца файла или папки поле Owner в дескрипторе безопасности, так как владелец всегда имеет право изменять DAC.
Варианты применения команды iCACLS:
· ICACLS имя /save ACL_файл [/T] [/C] [/L] [/Q] - сохранение DACL для файлов и папок, соответствующих имени, в ACL-файл для последующего использования с командой /restore. Обратите внимание, что метки SACL, владельца и целостности не сохраняются.
· ICACLS каталог [/substitute SidOld SidNew […]] /restore ACL_файл [/C] [/L] [/Q] - применение ранее сохраненных DACL к файлам в каталоге.
· ICACLS имя /setowner пользователь [/T] [/C] [/L] [/Q] - смена владельца всех соответствующих имен. Этот параметр не предназначен для принудительной смены владельца; используйте для этой цели программу takeown.exe.
· ICACLS имя /findsid Sid [/T] [/C] [/L] [/Q] - поиск всех соответствующих имен, содержащих ACL с явным упоминанием ИД безопасности.
· ICACLS имя /verify [/T] [/C] [/L] [/Q] - поиск всех файлов с неканоническими ACL или длинами, не соответствующими количеству ACE.
· ICACLS имя /reset [/T] [/C] [/L] [/Q] - замена ACL на унаследованные по умолчанию для всех соответствующих файлов.
· ICACLS имя [/grant[:r] Sid:perm[…]] [/deny Sid:perm […]] [/remove[:g|:d]] Sid[…]] [/T] [/C] [/L] [/Q] [/setintegritylevel Level:policy[…]]
/grant[:r] Sid:perm — предоставление указанных прав доступа пользователя. С параметром :r эти разрешения заменяют любые ранее предоставленные явные разрешения. Без параметра :r разрешения добавляются к любым ранее предоставленным явным разрешениям.
/deny Sid:perm — явный отзыв указанных прав доступа пользователя. Добавляется ACE явного отзыва для заявленных разрешений с удалением этих же разрешений в любом явном предоставлении.
/remove[:[g|:d]] Sid — удаление всех вхождений ИД безопасности в ACL. С параметром :g удаляются все вхождения предоставленных прав в этом ИД безопасности. С параметром :d удаляются все вхождения отозванных прав в этом ИД безопасности.
/setintegritylevel [CIOI]уровень — явное добавление ACE уровня целостности ко всем соответствующим файлам. Уровень задается одним из следующих значений:
L[ow]: низкий
M[edium]: средний
H[igh]: высокий
Уровню могут предшествовать параметры наследования для ACE целостности, применяемые только к каталогам.
Механизм целостности Windows Vista и более поздних версий ОС, расширяет архитектуру безопасности путём определения нового типа элемента списка доступа ACE для представления уровня целостности в дескрипторе безопасности объекта файла, папки. Новый ACE представляет уровень целостности объекта. Он содержится в системном ACL SACL, который ранее используемом только для аудита. Уровень целостности также назначается токену безопасности в момент его инициализации. Уровень целостности в токене безопасности представляет уровень целостности Integrity Level, IL пользователя процесса. Уровень целостности в токене сравнивается с уровнем целостности в дескрипторе объекта когда монитор безопасности выполняет проверку доступа. Система ограничивает права доступа в зависимости от того выше или ниже уровень целостности субъекта по отношению к объекту, а также в зависимости от флагов политики целостности в соответствующей ACE объекта. Уровни целостности IL представлены идентификаторами безопасности SID, которые представляют также пользователей и группы, уровень которых закодирован в относительном идентификаторе RID идентификатора SID. Наиболее распространенные уровни целостности:
SID = S-1-16-4096 RID=0x1000 - уровень Low Низкий обязательный уровень
SID= S-1-16-8192 RID=0x2000 – уровень Medium Средний обязательный уровень
SID= S-1-16-12288 RID=0x3000 – уровень High Высокий обязательный уровень
SID= S-1-16-16384 RID=0x4000 – уровень системы Обязательный уровень системы.
/inheritance:e|d|r
e - включение наследования
d - отключение наследования и копирование ACE
r - удаление всех унаследованных ACE
ИД безопасности могут быть в числовой форме SID, либо в форме понятного имени username. Если задана числовая форма, добавьте * в начало ИД безопасности, например - *S-1-1-0. Параметры командной строки iCACLS:
/T - операция выполняется для всех соответствующих файлов и каталогов, расположенных в заданном каталоге.
/C - выполнение операции продолжается при любых файловых ошибках. Сообщения об ошибках по-прежнему выводятся на экран.
/L - операция выполняется над самой символьной ссылкой, а не над ее целевым объектом.
/Q - утилита ICACLS подавляет сообщения об успешном выполнении.
Утилита ICACLS сохраняет канонический порядок записей ACE:
Явные отзывы
Явные предоставления
Унаследованные отзывы
Унаследованные предоставления
разрешение - это маска разрешения, которая может задаваться в одной из двух форм:
· последовательность простых прав:
N - доступ отсутствует
F - полный доступ
M - доступ на изменение
RX - доступ на чтение и выполнение
R - доступ только на чтение
W - доступ только на запись
D - доступ на удаление
· список отдельных прав через запятую в скобках:
DE - удаление
RC - чтение
WDAC - запись DAC
WO - смена владельца
S - синхронизация
AS - доступ к безопасности системы
MA - максимально возможный
GR - общее чтение
GW - общая запись
GE - общее выполнение
GA - все общие
RD - чтение данных, перечисление содержимого папки
WD - запись данных, добавление файлов
AD - добавление данных и вложенных каталогов
REA - чтение дополнительных атрибутов
WEA - запись дополнительных атрибутов
X - выполнение файлов и обзор папок
DC - удаление вложенных объектов
RA - чтение атрибутов
WA - запись атрибутов
Права наследования могут предшествовать любой форме и применяются только к каталогам:
OI - наследование объектами
CI - наследование контейнерами
IO - только наследование
NP - запрет на распространение наследования
I - наследование разрешений от родительского контейнера
Примеры использования iCACLS:
icacls - запуск без ключей используется для получения краткой справки по использованию команды.
icacls C:\Users - отобразить список управления доступом для папки C:\Users. Пример отображаемой информации:
C:\Users NT AUTHORITY\система:OICIF
** BUILTIN\Администраторы:OICIF**
** BUILTIN\Пользователи:RX**
** BUILTIN\Пользователи:OICIIOGR,GE**
** Все:RX**
** Все:OICIIOGR,GE**
Успешно обработано 1 файлов; не удалось обработать 0 файлов
icacls c:\windows\* /save D:\win7.acl /T - сохранение ACL для всех файлов в каталоге c:\windows и его подкаталогах в ACL-файл D:\win7.acl. Сохраненные списки ACL позволят восстановить управление доступом к файлам и каталогам в исходное состояние, поэтому, прежде чем выполнять какие-либо изменения, желательно иметь файл сохраненных списков ACL.
Пример данных сохраненных списков доступа ACL:
acpimof.dll
D:AIA;ID;FA;;;SYA;ID;FA;;;BAA;ID;0x1200a9;;;BU
addins
D:PAIA;;FA;;;S\-1\-5\-80\-956008885\-3418522649\-1831038044\-1853292631\-2271478464A;CIIO;GA;;;S\-1\-5\-80\-956008885\-3418522649\-1831038044\-1853292631\-2271478464A;;0x1301bf;;;SYA;OICIIO;GA;;;SYA;;0x1301bf;;;BAA;OICIIO;GA;;;BAA;;0x1200a9;;;BUA;OICIIO;GXGR;;;BUA;OICIIO;GA;;;CO
AppCompat
D:AIA;ID;FA;;;S\-1\-5\-80\-956008885\-3418522649\-1831038044\-1853292631\-2271478464A;CIIOID;GA;;;S\-1\-5\-80\-956008885\-3418522649\-1831038044\-1853292631\-2271478464A;ID;FA;;;SYA;OICIIOID;GA;;;SYA;ID;FA;;;BAA;OICIIOID;GA;;;BAA;ID;0x1200a9;;;BUA;OICIIOID;GXGR;;;BUA;OICIIOID;GA;;;CO
. . .
В тех случаях, когда при выполнении команды iCACLS возникает ошибка, вызванная отказом в доступе к обрабатываемому объекту, можно продолжить выполнение команды, если задан параметр /C:
icacls “C:\System Volume Information\*” /save D:\SVI-C.acl /T /C - сохранение списков управления доступом ACL для всех файлов и подкаталогов каталога C:\System Volume Information с продолжением обработки в случае возникновения ошибки. По результатам обработки отображается сообщение о количестве успешно, и не успешно, обработанных файлов.
Для восстановления доступа к файлам и папкам используется параметр /restore:
icacls c:\windows\ /restore D:\win7.acl - восстановление списков контроля доступа к файлам и папкам каталога c:\windows из ранее сохраненного ACL-файла D:\win7.acl.
icacls C:\Users\user1\tmp\Myfile.doc /grant boss:D,WDAC - предоставление пользователю boss разрешений на удаление и запись DAC для файла C:\Users\user1\tmp\Myfile.doc.
icacls C:\Users\user1\tmp\Myfile.doc /grant *S-1-1-0:D,WDAC - предоставление пользователю с ИД безопасности S-1-1-0 группа ”Все” разрешений на удаление и запись DAC для файла C:\Users\user1\tmp\Myfile.doc .
icacls C:\Users\user1\tmp\Myfile.doc /grant boss:F - предоставление пользователю boss полного доступа к файлу C:\Users\user1\tmp\Myfile.doc.