Команда 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.

http://ab57.ru/cmdlist/icacls.html