CACLS (Change Access Control Lists) — утилита командной строки Windows для просмотра и изменения списков управления доступом (ACL) к файлам и папкам. Позволяет выдавать, изменять или отзывать права NTFS для конкретных пользователей и групп без открытия GUI «Свойства → Безопасность».
- Синтаксис команды CACLS
- Ключи и параметры
- Примеры использования
- Просмотр текущих прав на файл
- Выдача полных прав пользователю на папку рекурсивно
- Назначение прав только на чтение для группы
- Полная замена прав для пользователя
- Отзыв всех прав пользователя
- Явный запрет доступа
- Сброс прав к наследуемым (через ICACLS)
- Частые ошибки и решения
- Когда применять, а когда нет
- FAQ
- Чем CACLS отличается от ICACLS?
- Как просмотреть права на файл без их изменения?
- Работает ли CACLS на сетевых папках?
- Как сохранить текущие права в файл перед изменением?
- Что означают обозначения (OI)(CI)(IO) в выводе CACLS?
Синтаксис команды CACLS
CACLS имя_файла_или_папки [/T] [/E] [/C] [/G пользователь:разрешение]
[/R пользователь] [/P пользователь:разрешение]
[/D пользователь] имя_файла_или_папки — путь к объекту; поддерживаются маски * и ?. Если путь содержит пробелы — заключите в кавычки. Без дополнительных ключей CACLS только отображает текущие разрешения.
Ключи и параметры
| Ключ | Описание | Пример |
|---|---|---|
/T | Применить изменения рекурсивно ко всем файлам и подпапкам | cacls C:\Data /T /E /G Users:R |
/E | Изменить ACL, не удаляя существующие записи (edit — редактировать) | cacls file.txt /E /G John:F |
/C | Продолжать при ошибках доступа к отдельным файлам | cacls C:\Folder /T /C /E /G Admin:F |
/G пользователь:разр | Выдать указанному пользователю разрешение (F/C/R/W — см. ниже) | cacls file.txt /G Alice:F |
/R пользователь | Отозвать (remove) все права пользователя на объект | cacls file.txt /E /R Guest |
/P пользователь:разр | Заменить (replace) все существующие права пользователя новыми | cacls file.txt /E /P Bob:R |
/D пользователь | Запретить (deny) доступ пользователю явным запретом | cacls file.txt /E /D Intern |
Коды разрешений для /G и /P:
| Код | Значение |
|---|---|
F | Full control — полный доступ |
C | Change — изменение (чтение + запись + удаление) |
R | Read — только чтение |
W | Write — только запись |
Примеры использования
Просмотр текущих прав на файл
Самый простой способ проверить, кто и какие права имеет на объект.
cacls "C:\Важные документы\договор.docx"
CACLS выведет список пользователей и групп с их текущими разрешениями в формате пользователь:(OI)(CI)F.
Выдача полных прав пользователю на папку рекурсивно
Быстрый способ предоставить администратору контроль над всей папкой с подпапками, не трогая права других пользователей.
cacls "C:\Projects\AppData" /T /E /G Administrator:F
/E редактирует существующий ACL без его замены, /T применяет изменения ко всем вложенным объектам.
Назначение прав только на чтение для группы
Разграничение доступа в общей папке: сотрудники читают, но не изменяют файлы.
cacls "C:\Reports" /T /E /G "Domain Users":R
Имена с пробелами (группы, пользователи) берутся в кавычки. Для доменных аккаунтов используйте формат DOMAIN\User.
Полная замена прав для пользователя
Перезаписывает все существующие разрешения пользователя новыми — нужно, когда предыдущие права неизвестны или сложны.
cacls "C:\Shared\data.db" /E /P Bob:C
После выполнения у Bob будут только права Change, все предыдущие записи для него заменятся.
Отзыв всех прав пользователя
Удаляет запись пользователя из ACL файла — используется при увольнении или смене роли.
cacls "C:\Finance" /T /E /R "DOMAIN\fired_user"
Флаг /T гарантирует, что права отозваны рекурсивно по всем вложенным объектам.
Явный запрет доступа
Явный Deny-запрет имеет приоритет над Allow даже при членстве пользователя в привилегированной группе.
cacls "C:\Confidential" /E /D Intern
Пользователь Intern не сможет открыть папку, даже если входит в группу с разрешением Read.
Сброс прав к наследуемым (через ICACLS)
CACLS не умеет сбрасывать наследование. Для этого используйте icacls — современную замену CACLS.
icacls "C:\Folder" /reset /T
Команда удаляет все явно заданные разрешения и восстанавливает наследуемые от родительской папки.
Частые ошибки и решения
| Ошибка / симптом | Причина | Решение |
|---|---|---|
| «Отказано в доступе» при изменении прав | CMD запущена без прав администратора, или текущий пользователь не владелец объекта | Запустите CMD от имени администратора; при необходимости сначала возьмите владение через takeown /F путь /R |
| «Неверный параметр» при указании имени с пробелом | Имя пользователя или путь содержит пробел без кавычек | Заключите имя пользователя и путь в двойные кавычки: cacls "C:\My Docs" /E /G "John Smith":R |
| Права применились только к папке, но не к файлам внутри | Не указан ключ /T | Добавьте /T для рекурсивного применения |
После /G старые права удалились | Не указан ключ /E — без него CACLS заменяет весь ACL | Всегда добавляйте /E, если хотите добавить права, не удаляя остальные записи ACL |
| Команда выполнена успешно, но права не изменились у файлов в подпапке | Файлы имеют явно заданные записи ACL, которые перекрывают наследование | Используйте icacls /reset /T для сброса, затем заново задайте нужные права |
Когда применять, а когда нет
CACLS удобна для быстрых разовых операций с правами NTFS в скриптах CMD и при работе без GUI. Важно: CACLS является устаревшей утилитой — Microsoft рекомендует использовать ICACLS, которая поддерживает полный набор разрешений NTFS, наследование и более чёткий синтаксис. На FAT32-разделах CACLS не работает — управление ACL доступно только на NTFS. Требует прав администратора или владения объектом. Аналог в PowerShell: Get-Acl и Set-Acl для гибкого управления разрешениями через объектную модель.
FAQ
Чем CACLS отличается от ICACLS?
ICACLS — более новая и функциональная замена CACLS. Она поддерживает тонкие разрешения NTFS (не только F/C/R/W), управление наследованием, целостность объектов и чёткий синтаксис без неоднозначностей. CACLS сохранена для обратной совместимости, но в новых скриптах используйте ICACLS.
Как просмотреть права на файл без их изменения?
Запустите CACLS только с путём к файлу, без дополнительных ключей: cacls C:\путь\к\файлу. Команда выведет ACL в читаемом виде без внесения изменений.
Работает ли CACLS на сетевых папках?
Да, если у вас есть права администратора на целевой машине и сетевой путь доступен. Используйте формат UNC: cacls "\\SERVER\Share\folder" /T /E /G User:R.
Как сохранить текущие права в файл перед изменением?
Используйте icacls C:\папка /save rights.txt /T — это сохранит ACL всей структуры в файл. Восстановление: icacls C:\папка /restore rights.txt.
Что означают обозначения (OI)(CI)(IO) в выводе CACLS?
(OI) — Object Inherit, разрешение наследуется файлами. (CI) — Container Inherit, наследуется подпапками. (IO) — Inherit Only, применяется только к дочерним объектам, не к самой папке. Комбинации определяют, как права распространяются по дереву каталогов.


