CACLS — просмотр и изменение прав доступа к файлам и папкам CMD

CACLS управляет списками контроля доступа (ACL) для файлов и папок Windows из командной строки: выдаёт, изменяет и отзывает права для пользователей и групп.

CACLS (Change Access Control Lists) — утилита командной строки Windows для просмотра и изменения списков управления доступом (ACL) к файлам и папкам. Позволяет выдавать, изменять или отзывать права NTFS для конкретных пользователей и групп без открытия GUI «Свойства → Безопасность».

Синтаксис команды 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, применяется только к дочерним объектам, не к самой папке. Комбинации определяют, как права распространяются по дереву каталогов.

Оцените статью
( Пока оценок нет )
MW10
Добавить комментарий

Нажимая на кнопку "Отправить комментарий", я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.