Одной из типовых задач администратора Windows при настройке доступа пользователей – управление NTFS разрешениями на папки и файлы файловой системы. Для управления NTFS разрешениями можно использовать графический интерфейс системы (вкладка Безопасность/Security в свойствах папки или файла), или встроенную утилиту командной строки iCACLS. В этой статье мы рассмотрим примеру использовании команды iCACLS для просмотра и управления разрешениями на папки и файлы.
Утилита iCACLS позволяет отображать или изменять списки управления доступом (Access Control Lists (ACLs) к файлам и папкам файловой системы. Предшественником у утилиты iCACLS.EXE является команда CACLS.EXE (доступна в Windows XP).
Чтобы просмотреть действующие разрешения на конкретную папку (например, C:\PS), откройте командную строку и выполните команду:
icacls c:\PS
Данная команда вернет список всех пользователей и групп пользователей, которым назначены разрешения на данную папку. Попробуем разобраться в синтаксисе разрешений, которые вернула команда iCACLS.
c:\PS BUILTIN\Администраторы:(I)(OI)(CI)(F)
NT AUTHORITY\СИСТЕМА:(I)(OI)(CI)(F)
BUILTIN\Пользователи:(I)(OI)(CI)(RX)
NT AUTHORITY\Прошедшие проверку:(I)(M)
NT AUTHORITY\Прошедшие проверку:(I)(OI)(CI)(IO)(M)
Успешно обработано 1 файлов; не удалось обработать 0 файлов
Напротив каждой группы и пользователя указан уровень доступа. Права доступа указываются с помощью сокращений. Рассмотрим разрешения для группы BUILTIN\Администраторы.
(OI) - Object inherit – права наследуются на нижестоящие объекты
(CI) - Container inherit – наследование каталога
(F) – Full control– полный доступ к папке
(I) — Inherit права наследованы с вышестоящего каталога
Это означает, что у данной группы есть права на запись, изменение данных в данном каталоге и на изменения NTFS разрешений. Данные права наследуются на все дочерние объекты в этом каталоге.
Ниже представлен полный список разрешений, которые можно устанавливать с помощью утилиты icacls.
Права наследования:
(OI) — object inherit
(CI) — container inherit
(IO) — inherit only
(NP) — don’t propagate inherit
(I) — Permission inherited from parent container
Список основных прав доступа:
D — право удаления
F — полный доступ
N — нет доступа
M — доступ на изменение
RX — доступ на чтение и запуск
R — доступ только на чтение
W — доступ только на запись
Детальные разрешения:
DE — Delete
RC — read control
WDAC — write DAC
WO — write owner
S — synchronize
AS — access system security
MA — maximum allowed
GR — generic read
GW — generic write
GE — generic execute
GA — generic all
RD — read data/list directory
WD — write data/add file
AD — append data/add subdirectory
REA — read extended attributes
WEA — write extended attributes
X — execute/traverse
DC — delete child
RA — read attributes
WA — write attributes
С помощью утилиты icacls вы можете сохранить текущие списки доступа к объекту в файл, а затем применить сохраненный список к этому же или другим объектам (своеобразный способ создания резервной копии текущего списка доступа — ACL).
Чтобы выгрузить текущие ACL папки C:\PS и сохранить их в текстовый файл export_ps_acl.txt, выполните команду:
icacls C:\PS\* /save c:\backup\export_ps_acl.txt /t
Данная команда сохраняет ACLs не только на сам каталог, но и на все вложенные папки и файлы. Полученный текстовый файл можно открыть с помощью блокнота или любого текстового редактора.
Чтобы применить сохраненные списки доступа (восстановить разрешения на каталог и все вложенные объекты), выполните команду:
icacls C:\PS /restore :\backup\export_ps_acl.txt
Таким образом процесс переноса прав доступа с одной папки на другую становится намного легче.
С помощью команды icacls вы можете изменить списки доступа к папке. Например, вы хотите предоставить пользователю aivanov право на редактирование содержимого папки. Выполните команду:
icacls C:\PS /grant aivanov:M
Удалить все назначенные разрешения для учетной записи пользователя aivanov можно с помощью команды:
icacls C:\PS /remove aivanov
Вы можете запретить пользователю или группе пользователей доступ к файлу или папке так:
icacls c:\ps /deny "MSKManagers:(CI)(M)"
Имейте в виду, что запрещающие правил имеют больший приоритете, чем разрешающие.
С помощью команды icacls вы можете изменить владельца каталог или папки, например:
icacls c:\ps\secret.docx /setowner aivanov /T /C /L /Q
Теперь разберемся, что это за параметры используются в каждой команде.
- /Q – сообщение об успешном выполнении команды не выводится;
- /L – команда выполняется непосредственно над символической ссылкой, а не конкретным объектом;
- /C – выполнение команды будет продолжаться несмотря на файловые ошибки; при этом сообщения об ошибках все равно будут отображаться;
- /T – команда используется для всех файлов и каталогов, которые расположены в указанном каталоге;
Вы можете изменить владельца всех файлов в каталоге:
icacls c:\ps\* /setowner aivanov /T /C /L /Q
Также при помощи icacls можно сбросить текущие разрешения на объекты,
icacls C:\ps /T /Q /C /RESET
После выполнения команды все текущие разрешения на папку будут сброшены и заменены на разрешения, наследуемые с вышестоящего объекта (каталога).