Windows

ICACLS: Полное руководство по управлению правами доступа в Windows

Этот гайд научит вас использовать мощную утилиту ICACLS для точного управления правами доступа к файлам и папкам в Windows. Вы освоите базовые и продвинутые сценарии, включая восстановление стандартных разрешений и массовое изменение прав.

Обновлено 16 февраля 2026 г.
15-30 мин
Средняя
FixPedia Team
Применимо к:Windows 10Windows 11Windows Server 2016+

Введение / Зачем это нужно

ICACLS — это встроенная в Windows командная утилита для отображения и модификации списков управления доступом (ACL) к файлам и папкам. Она позволяет администраторам и продвинутым пользователям точно настраивать, кто и какие операции может выполнять с объектами файловой системы.

С помощью этого гайда вы научитесь:

  • Просматривать сложные цепочки разрешений.
  • Назначать, изменять и удалять права доступа для пользователей и групп.
  • Управлять наследованием прав между папками.
  • Восстанавливать стандартные разрешения Windows.
  • Выполнять массовые операции с ACL на целых деревьях папок.

Это критически важно для устранения проблем с доступом, настройки общих папок в сети и обеспечения безопасности.

Требования / Подготовка

  1. Операционная система: Windows 10, Windows 11, Windows Server 2016 или новее. Утилита icacls.exe находится в C:\Windows\System32\.
  2. Права доступа: Для изменения ACL объекта ваша учётная запись должна иметь право на изменение разрешений (обычно Write DAC). Для большинства системных папок и файлов это требует запуска командной строки от имени администратора.
  3. Базовые знания: Понимание моделей безопасности Windows (пользователи, группы, права Read, Write, Full Control).

⚠️ Важно: Будьте крайне осторожны при изменении прав на системных папках (C:\Windows, C:\Program Files). Неправильные действия могут привести к неработоспособности ОС или приложений. Всегда создавайте точку восстановления системы перед массовыми операциями.

Пошаговая инструкция

Шаг 1: Просмотр текущих разрешений (ICACLS без параметров)

Перед внесением любых изменений необходимо понять текущую конфигурацию ACL.

# Просмотр разрешений для конкретной папки
icacls "C:\Users\Публичные\Документы"

# Просмотр с отображением всех наследуемых и явных разрешений
icacls "C:\Users\Публичные\Документы" /t /c /l

Что делает команда:

  • icacls <путь> — выводит список контрольных записей доступа (ACE) для указанного объекта.
  • /t — рекурсивно обходит все вложенные файлы и папки (для анализа структуры).
  • /c — продолжает операцию даже при encountering ошибках доступа (не останавливается).
  • /l — обрабатывает только символические ссылки, а не целевые объекты (для безопасности).

Пример вывода:

C:\Users\Public\Documents BUILTIN\Administrators:(I)(F)
                               BUILTIN\Users:(I)(RX)
                               NT AUTHORITY\Authenticated Users:(I)(M)
  • (I) — флаг Inherited (наследуемое разрешение).
  • (F)Full Control.
  • (RX)Read & Execute.
  • (M)Modify.

Шаг 2: Назначение новых прав (ICACLS /grant)

Добавьте явные права для пользователя или группы. Синтаксис: icacls <путь> /grant <пользователь>:<права>

# Дать пользователю 'Ivanov' право на чтение и запись в папку Project
icacls "D:\Projects" /grant Ivanov:(R,W)

# Дать группе 'Developers' полный контроль над папкой и всем её содержимым
icacls "D:\Projects" /grant Developers:(F) /t

# Добавить право на выполнение (RX) для всех аутентифицированных пользователей
icacls "C:\Tools\script.bat" /grant "Authenticated Users":(RX)

Ключевые права (мнемоника):

  • F — Full control (полный доступ)
  • M — Modify (изменение)
  • RX — Read & execute (чтение и выполнение)
  • R — Read (только чтение)
  • W — Write (только запись)
  • D — Delete (удаление)

💡 Совет: Всегда указывайте полные имена групп (например, "BUILTIN\Users"), если есть риск путаницы. Для локальных пользователей можно использовать просто Ivanov.

Шаг 3: Управление наследованием (ICACLS /inheritance)

Наследование — механизм, при котором папка автоматически получает те же базовые разрешения, что и её родитель. Управляйте этим поведением.

# 1. Отключить наследование для папки и КОПИРОВАТЬ текущие наследуемые права как явные
icacls "D:\SecretProject" /inheritance:d

# 2. Отключить наследование и УДАЛИТЬ все скопированные наследуемые права
icacls "D:\SecretProject" /inheritance:r

# 3. Включить наследование обратно (восстановить по умолчанию)
icacls "D:\SecretProject" /inheritance:e
  • /inheritance:dDisable inheritance, копируя текущие наследуемые ACE в явные.
  • /inheritance:rRemove all inherited ACEs (более жёсткий вариант).
  • /inheritance:eEnable inheritance (по умолчанию для большинства папок).

Шаг 4: Удаление прав (ICACLS /remove)

Удалите явные или наследуемые разрешения для указанного пользователя/группы.

# Удалить все явные разрешения для пользователя 'TempUser' из папки
icacls "D:\Temp" /remove TempUser

# Удалить наследуемые разрешения для группы 'Guests' (если они есть)
icacls "D:\Temp" /remove "Builtin\Guests" /inheritance

Внимание: Удаление наследуемых прав через /remove с флагом /inheritance может нарушить ожидаемое поведение безопасности. Чаще достаточно отключить наследование (/inheritance:r).

Шаг 5: Восстановление стандартных разрешений (ICACLS /reset)

Если вы "сломали" ACL папки, команда /reset попытается вернуть её к состоянию, которое она имела бы по умолчанию, исходя из наследования от родителя.

# Сбросить ACL папки 'D:\Projects' до стандартных, унаследованных от D:\
icacls "D:\Projects" /reset /t /c

# Применить сброс ко всем вложенным объектам, игнорируя ошибки
icacls "D:\Projects" /reset /t /c

Ограничение: /reset не является волшебной кнопкой "отката". Он не восстанавливает резервные копии ACL. Он только удаляет все явные ACE на объекте и заставляет его снова наследовать права от родителя. Если у родителя нестандартные права, результат будет неожиданным.

Шаг 6: Массовые операции и обработка ошибок

Работайте с целыми деревьями папок, используя комбинацию ключей.

# Пример: Рекурсивно выдать группе 'DevTeam' права на изменение (M) на все файлы в D:\Code
# /t - рекурсия, /c - продолжать при ошибках, /q - тихий режим (минимальный вывод)
icacls "D:\Code" /grant DevTeam:(M) /t /c /q

# Пример: Найти все файлы, где у 'Everyone' есть права Full Control, и убрать их
# Сначала поиск (findstr), затем применение remove в цикле (для PowerShell)
Get-ChildItem "C:\" -Recurse -ErrorAction SilentlyContinue | ForEach-Object {
    $acl = icacls $_.FullName 2>$null
    if ($acl -match "Everyone:(I?)\(F\)") {
        icacls $_.FullName /remove Everyone
    }
}

Безопасность: Проверяйте команды с /t на небольшой тестовой папке перед запуском на критических данных.

Проверка результата

После выполнения изменений обязательно проверьте результат.

  1. Визуальная проверка: Зайдите в свойства файла/папки в проводнике (ПКМ → Свойства → Безопасность). Убедитесь, что нужные учётные записи присутствуют в списке, а лишние отсутствуют.
  2. Командная проверка: Снова выполните icacls <путь> и сравните вывод с ожидаемым.
  3. Функциональная проверка: Попробуйте выполнить операцию от имени пользователя, для которого вы настраивали права (запустить файл, записать документ, удалить папку). Это самый надёжный способ.

Возможные проблемы

Проблема 1: "Access is denied" при попытке изменить права

  • Причина: Текущий пользователь (даже администратор) не имеет права Write DAC на целевой объект.
  • Решение: Запустите командную строку или PowerShell от имени администратора (ПКМ → "Запуск от имени администратора"). Если это не помогает, возможно, объект защищён системой. В крайнем случае, используйте takeown /f <путь> /r для взятия владения, а затем повторите icacls.

Проблема 2: Наследование не работает как ожидается после /reset

  • Причина: Родительская папка, от которой должен наследоваться ACL, сама имеет нестандартные (явные) разрешения.
  • Решение: Проверьте ACL родительской папки. Если нужно "полное восстановление", возможно, потребуется сбросить ACL на всю цепочку вверх до корня диска или использовать другие инструменты (например, secedit /configure с шаблоном безопасности по умолчанию).

Проблема 3: Ошибка "The parameter is incorrect" при указании прав

  • Причина: Некорректный синтаксис в части <права>. Например, пробел между (R,W) или использование несуществующей буквы права.
  • Решение: Убедитесь, что права указаны без пробелов внутри скобок: (R,W), а не (R, W). Используйте только допустимые мнемоники: F, M, RX, R, W, D.

Проблема 4: Массовая операция (/t) "зависла" или слишком долго выполняется

  • Причина: Рекурсия по огромному количеству файлов (миллионы) или по сетевому пути с высокой задержкой.
  • Решение:
    1. Используйте ключ /c для продолжения при ошибках.
    2. Ограничьте глубину рекурсии, если возможно (например, сначала обработайте только верхний уровень).
    3. Для сетевых путей убедитесь в стабильности соединения.
    4. Выполняйте такие операции в периоды наименьшей нагрузки.

Проблема 5: Не могу удалить системную учётную запись (SYSTEM, TrustedInstaller)

  • Причина: Это защищённые системные учётные записи. Их полное удаление из ACL критически важных объектов запрещено системой.
  • Решение: Вы не можете и не должны удалять эти записи. Вы можете только изменить их права (например, с F на RX), но даже это опасно. Для восстановления стандартных прав на системные объекты используйте sfc /scannow или восстановление системы.

Продвинутый пример: Безопасная настройка общей сетевой папки

Цель: Создать папку D:\Share\Projects, доступную для чтения и записи группе Domain\Developers, но без возможности удаления файлов других пользователей. Наследование от родителя отключить.

# 1. Создаём папку (если её нет)
mkdir "D:\Share\Projects"

# 2. Отключаем наследование и удаляем все существующие явные права (если были)
icacls "D:\Share\Projects" /inheritance:r

# 3. Даём группе Developers Modify (M) — включает чтение, запись, выполнение, но НЕ Delete
icacls "D:\Share\Projects" /grant "Domain\Developers":(M)

# 4. Даём системе (SYSTEM) и администраторам Full Control для управления
icacls "D:\Share\Projects" /grant "SYSTEM":(F) "Administrators":(F)

# 5. Проверяем результат
icacls "D:\Share\Projects"

Пояснение: Право Modify (M) не включает право Delete (D). Это значит, что пользователи из Developers смогут создавать и изменять файлы, но не смогут удалять файлы, созданные другими пользователями (если только не имеют права Delete Subfolders and Files на родительской папке). Это часто требуется для общих рабочих папок.

Заключение о лучших практиках

  1. Тестируйте на копии: Перед массовым применением (/t) протестируйте команду на одной папке.
  2. Документируйте изменения: Записывайте, какие команды вы выполняли и для каких целей.
  3. Принцип наименьших прав: Давайте пользователям только те права, которые им необходимы для работы, а не Full Control по умолчанию.
  4. Используйте группы: Назначайте права группам домена или локальным группам (Users, Administrators), а не отдельным пользователям. Это упрощает управление.
  5. Резервное копирование ACL: Для важных папок можно сохранить текущий ACL в файл: icacls "D:\Critical" /save acl_backup.txt. Восстановить: icacls "D:\Critical" /restore acl_backup.txt.

Команда icacls — мощный и точный инструмент. С этими знаниями вы сможете решать практически любые задачи по управлению доступом в Windows, от простых до сложных корпоративных сценариев.

Часто задаваемые вопросы

В чём разница между ICACLS и устаревшей командой CACLS?
Как безопасно дать полный доступ пользователю на папку, не сломав системные права?
Что делать, если команда ICACLS выводит 'Access is denied'?
Как массово применить одинаковые права ко всем файлам в папке?

Полезное

Проверка текущих разрешений
Назначение базовых прав (Full Control, Modify, Read)
Работа с наследованием (inheritance)
Восстановление стандартных разрешений
Массовые операции и обработка ошибок

Эта статья помогла вам решить проблему?