Как добавить права на запись ко всем файлам в заданной папке с помощью команды cacls

Обновлено: 07.07.2024

Icacls очень полезен для сценариев разрешений файлов и папок.

Введение

  • ОС: минимум Windows Server 2008
  • ACL: список контроля доступа
  • ACE : запись управления доступом — это элемент списка управления доступом (ACL).

Команды

Сбросить ACL

  • Восстановление доступа к файлу:
  • Заменяет списки управления доступом на унаследованные по умолчанию списки управления доступом для всех соответствующих файлов:
    • /T указывает, что эта операция выполняется для всех соответствующих файлов/каталогов ниже каталогов, указанных в имени.
    • /C указывает, что эта операция будет продолжена при всех ошибках файла.

    Удалить все унаследованные записи ACE

    Настроить списки управления доступом

    • /grant:r, заменить ранее предоставленные разрешения
    • права наследования
      • (OI) наследование объекта
      • (CI) наследование контейнера
      • (IO) только наследование
      • (NP) не распространять наследование
      • (I) разрешение, унаследованное от родительского контейнера
      • простые права
        • (RX,W) чтение + выполнение и доступ только для записи
        • (RX,D) доступ для чтения + выполнения и удаления
        • (M) доступ для чтения, выполнения, записи, удаления и изменения
        • (F) полный доступ

        Удалить пользователя

        Добавить пользователя с полными правами

        Отказать пользователю в правах

        • Явно запрещает указанные права доступа пользователя:

        Примеры

        Сбросить ACL

        Добавить пользователя

        • Добавить пользователя с доступом для чтения, выполнения и удаления:


        • Добавить пользователя с доступом для чтения + выполнения и только для записи:


        Удалить пользователя

        Разрешения


        Сохранить/восстановить ACL



        Эта работа находится под лицензией Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.


        Эта работа находится под лицензией Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

        В отличие от более ранних инструментов командной строки, iCACLS правильно сохраняет канонический порядок записей ACE:

          1. Явный отказ
          2. Явное предоставление
          3. Унаследованный запрет
          4. Унаследованный грант

          Списки контроля доступа применяются только к файлам, хранящимся на диске с файловой системой NTFS, каждый ACL определяет, какие пользователи (или группы пользователей) могут читать или редактировать файл. Когда создается новый файл, он обычно наследует ACL из папки, в которой он был создан.

          Список управления доступом (ACL) — это список записей управления доступом (ACE). При резервном копировании или восстановлении ACL с помощью iCACLS вы должны сделать это для всего каталога (используя /save и /restore ), даже если вас интересуют только ACE для нескольких отдельных файлов. На практике большинство разрешений устанавливаются на уровне каталога.

          Несколько предложений /Grant /Deny /Remove могут быть включены в одну команду icacls, в большом дереве каталогов это имеет то преимущество, что дерево нужно пройти только один раз, а не несколько раз, если вы должны были выполнить несколько последовательных запросов. вместо этого команды icacls.

          Возможность удаления или переименования папки определяется комбинацией разрешений на удаление для рассматриваемой папки и разрешения на удаление подпапок и файлов в родительской папке.

          Изменение или полный доступ

          • Чтобы редактировать файл, у вас должен быть список управления доступом "Modify/Change" (или вы должны быть владельцем файла)
          • Чтобы использовать команду iCACLS для изменения разрешений файла, требуется "ПОЛНЫЙ доступ" (или быть владельцем файла)
          • Право собственности на файл всегда имеет приоритет над всеми списками управления доступом — у вас всегда есть полный доступ к файлам, которые вы создаете.

          Наследование

          Унаследованные права доступа к папкам задаются следующим образом:

          Поэтому BUILTIN\Администраторы: (OI)(CI)F означает, что и файлы, и подкаталоги будут наследовать 'F' (полный доступ)
          аналогично (CI)R означает, что каталоги будут наследовать 'R' (только чтение папок = разрешение списка)

          Стоит потратить некоторое время на выяснение того, какие разрешения могут быть унаследованы, а какие необходимо применять напрямую. В больших/сложных структурах каталогов сведение к минимуму количества списков ACL может повысить производительность файлового сервера.

          Если наследование сочетается с параметром /T (обход подпапок), изменение будет применяться ко всем папкам, а не только к верхнему уровню.
          например:
          icacls "C:\demo\example" /inheritance:e /T
          Выполняет обход всех подпапок ниже "C:\demo\example" и включает наследование для каждой , это заменит любые удаленные разрешения на наследование.

          Если наследование не указано, правила наследования не будут изменены, но существующие унаследованные разрешения будут повторно применены к существующим объектам. в указанном месте для указанных пользователей/групп.
          например:
          icacls "C:\demo\example" /grant administrators:(F) /T
          Это аналогично применению/сбросу дочерних элементов "C:\demo \example", а только сбрасывает группу администраторов.

          Встроенные группы

          Команда, которая обращается к встроенной группе по имени, например ICACLS имя_папки /GRANT Everyone:F /T
          , будет работать, только если языком системы является английский.

          Чтобы сделать этот язык независимым, используйте звездочку, за которой следует общеизвестный SID для группы, список см. в Q243330.

          Например, чтобы предоставить полный доступ всем в папке : ICACLS имя_папки /GRANT *S-1-1-0:F /T

          Запуск icacls в PowerShell

          Параметры icacls не так просто запустить в PowerShell, поскольку квадратные скобки ( ) имеют в PowerShell особое значение. Чтобы передать символ скобки во внешнюю программу, его необходимо экранировать обратной кавычкой.
          В качестве альтернативы используйте символ остановки парсинга --%
          например, : icacls "C:\demo\" --% /grant:r Администраторы:(OI)(CI)F /T

          Более "PowerShell" подход, который обеспечивает улучшенную читаемость сложных команд icacls, это чтобы установить переменную для каждой опции, а затем выполнить icacls с Invoke-Expression, который расширит все переменные:

          Измените разрешения NTFS на C:\demo\example\ , удалите все существующие унаследованные разрешения и замените их полным доступом для группы администраторов и разрешением на изменение/изменение для jsmith.
          Применить новые разрешения к папке и наследовать вложенные папки и файлы (OI)(CI):

          icacls "C:\demo\example" /inheritance:r /grant:r Администраторы:(OI)(CI)F
          icacls "C:\demo\example" /grant:r Администраторы:(OI )(CI)F /T
          icacls "C:\demo\example" /grant:r ss64Dom\jsmith:(OI)(CI)M /T

          или вы можете комбинировать гранты, например:

          Просмотр текущих разрешений для папки:

          Предоставьте группе FileAdmins права на удаление и запись DAC в C:\demo\example:

          icacls "C:\demo\example" /grant:r FileAdmins:(D,WDAC)

          Сбросить разрешения для всех дочерних элементов ниже C:\demo\example\ , обратите внимание на использование \*, без этого разрешения будут сброшены до разрешений C:\demo\

          icacls "C:\demo\example\*" /c /t /reset

          Распространить новое разрешение на все файлы и подпапки C:\demo\example\ без использования наследования:
          (так что, если какая-либо из подпапок содержит определенные разрешения, они не будут перезаписаны)

          icacls "C:\demo\example" /grant:r accountName:(NP)(RX) /T

          Создайте резервную копию ACL каждого файла в текущем каталоге:

          icacls * /save Myacl_backup.txt

          Восстановить ACLS с помощью ранее сохраненного файла ACL:

          icacls /restore Myacl_backup.txt

          Изменить уровень целостности (IL) файла на высокий:

          icacls MyReport.doc /setintegritylevel H

          Удалите все наследство в папке «Demo» и предоставьте доступ пользователю домена «Volta». В этой команде /t будет проходить по существующим подпапкам и файлам, а (CI) гарантирует, что новые папки/файлы, добавленные в будущее унаследует эти разрешения:

          icacls C:\demo\example /inheritance:r /grant SS64dom\Volta:(CI)F /t

          Предоставить пользователю права jdoe на создание, редактирование и удаление файлов в папке C:\demo\example\ , но запретить удаление самой папки:

          Правый клик - Создать пусто

          :: Сначала удалите наследование и предоставьте администраторам полный доступ к верхней папке
          icacls "C:\demo\example" /inheritance:r /grant:radmins:(OI)(CI)( F)

          :: Разрешить изменение + удаление дочерних элементов только для подпапок и файлов
          icacls "C:\demo\example" /grant:r ss64Dom\jdoe:(OI)(CI)(IO )(M,DC) /T

          :: Разрешить чтение/выполнение, запись и добавление в папку верхнего уровня
          icacls "C:\demo\example" /grant:r ss64Dom\jdoe :(RX,WD,AD)

          :: если какие-либо уже существующие подпапки Предоставить администраторам Полный доступ
          icacls "C:\demo\example" /grant:r администраторы:(OI)( CI)(F) /T

          Вышеупомянутое устанавливает правильные разрешения, но нежелательная ошибка/побочный эффект заключается в том, что в папке верхнего уровня параметр правой кнопкой мыши для создания новых файлов в проводнике Windows будет пустым - отображается только Новая папка:

          «Легче попросить прощения, чем получить разрешение» ~ Контр-адмирал Грейс Хоппер

          Отображает или изменяет списки управления доступом на уровне пользователей (DACL) для указанных файлов и применяет сохраненные DACL к файлам в указанных каталогах.

          Эта команда заменяет устаревшую команду cacls.

          Синтаксис

          Параметры

          Параметр Описание
          Указывает файл, для которого нужно отобразить или изменить DACL.
          Указывает каталог, для которого следует отображать или изменять списки DACL.
          /t Выполняет операцию для всех указанные файлы в текущем каталоге и его подкаталогах.
          /c Продолжает операцию, несмотря на любые файловые ошибки. Сообщения об ошибках по-прежнему будут отображаться.
          /l Выполняет операцию над символической ссылкой вместо ее назначения.
          /q Подавляет сообщения об успешном выполнении.
          [/save [/t] [/c] [/l] [/ q]] Сохраняет DACL для всех соответствующих файлов в файле списка управления доступом (ACL) для последующего использования с /restore.
          [/setowner [ /t] [/c] [/l] [/q]] Изменяет владельца всех соответствующих файлов на указанного пользователя.
          [ /findsid [/t] [/c] [/l] [/q]] Находит все соответствующие файлы, которые содержат DACL, в котором явно упоминается указанный идентификатор безопасности (SID).
          [/verify [/t] [/c] [/l] [/q]] Находит все файлы с ACL, которые не являются каноническими или имеют длину, несовместимую с доступом количество управляющих записей (ACE).
          [/reset [/t] [/c] [/l] [/q]] Заменяет ACL с унаследованными ACL по умолчанию для всех соответствующих файлов.
          [/grant[:r] :
          • l – низкий уровень
          • м – средний
          • h – высокий
          • e — включает наследование
          • d – отключает наследование и копирует элементы управления доступом.
          • r — отключает наследование и удаляет только унаследованные записи ACE.

          Примечания

          Идентификаторы безопасности могут быть представлены как в числовой форме, так и в форме понятного имени. Если вы используете числовую форму, добавьте подстановочный знак * в начало SID.

          Эта команда сохраняет канонический порядок записей ACE следующим образом:

          option — это маска разрешений, которая может быть указана в одной из следующих форм:

          Последовательность простых прав (базовые разрешения):

          F – Полный доступ

          M-Изменить доступ

          RX – доступ для чтения и выполнения

          R — доступ только для чтения

          W — доступ только для записи

          Перечень определенных прав (расширенных разрешений) через запятую в скобках:

          D — Удалить

          RC — Управление чтением (разрешения на чтение)

          WDAC – запись DAC (изменение разрешений)

          WO — Написать владельца (вступить во владение)

          S — Синхронизировать

          AS – доступ к безопасности системы

          MA – Максимально допустимое значение

          GR — Общее чтение

          GW — Общая запись

          GE – общее выполнение

          GA – все общие

          RD — Чтение каталога данных/списка

          WD — запись данных/добавление файла

          AD – добавить данные/подкаталог

          REA – Чтение расширенных атрибутов

          WEA – запись расширенных атрибутов

          X — выполнить/пройти

          DC — Удалить дочерний элемент

          RA — Чтение атрибутов

          WA — Запись атрибутов

          Права наследования могут предшествовать

          (I) - Наследовать. ACE унаследован от родительского контейнера.

          (OI) — Объект наследуется. Объекты в этом контейнере наследуют этот ACE. Применяется только к каталогам.

          (CI) – наследование контейнера. Контейнеры в этом родительском контейнере наследуют этот ACE. Применяется только к каталогам.

          (IO) — только наследование. ACE унаследован от родительского контейнера, но не применяется к самому объекту. Применяется только к каталогам.

          (NP) — не распространять наследование. ACE наследуется контейнерами и объектами от родительского контейнера, но не распространяется на вложенные контейнеры. Применяется только к каталогам.

          Примеры

          Чтобы сохранить списки DACL для всех файлов в каталоге C:\Windows и его подкаталогах в файле ACLFile, введите:

          Чтобы восстановить списки DACL для каждого файла в ACLFile, существующего в каталоге C:\Windows и его подкаталогах, введите:

          Чтобы предоставить пользователю User1 права DAC на удаление и запись в файл с именем Test1, введите:

          Чтобы предоставить пользователю, определяемому SID S-1-1-0, разрешения DAC на удаление и запись в файл с именем Test2, введите:

          Команда icacls позволяет пользователю просматривать и изменять ACL. Эта команда аналогична команде cacls, доступной в предыдущих версиях Windows.

          Доступность

          Icacls — это внешняя команда, которая доступна для следующих операционных систем Microsoft как icacls.exe.

          Синтаксис Icacls

          Сохраняет списки DACL для файлов и папок, соответствующих имени, в aclfile для последующего использования с /restore. Обратите внимание, что списки SACL, владелец или метки целостности не сохраняются.

          Применяет сохраненные DACL к файлам в каталоге.

          Изменяет владельца всех совпадающих имен. Этот вариант не требует смены владельца; используйте вынос.exe для этой цели.

          Находит все совпадающие имена, содержащие ACL, в которых явно упоминается Sid.

          Находит все файлы, ACL которых не соответствуют канонической форме или длина которых не соответствует количеству записей ACE.

          Заменяет ACL унаследованными ACL по умолчанию для всех соответствующих файлов.

          Явно добавляет ACE целостности ко всем соответствующим файлам. Уровень должен быть указан как один из:
          L[ow]
          M[edium]
          H[igh]

          Параметры наследования для ACE целостности могут предшествовать уровню и применяются только к каталогам.

          Идентификаторы могут быть представлены как в числовой, так и в понятной форме имени. Если задана числовая форма, добавьте перед Sid звездочку (*).

          < /tr>
          /T Указывает, что эта операция выполняется для всех соответствующих файлов/каталогов ниже каталогов, указанных в имени.
          /C Указывает, что эта операция продолжается при всех ошибках файла. Сообщения об ошибках по-прежнему отображаются.
          /L Указывает, что для любых обнаруженных символических ссылок эта операция должна выполняться на самой символической ссылке, а не цель.
          /Q Указывает, что icacls должен подавлять сообщения об успешном выполнении.

          ICACLS сохраняет канонический порядок записей ACE:

          • Явные отказы.
          • Явные гранты.
          • Унаследованные отказы.
          • Унаследованные гранты.

          Маска разрешений perm может быть указана как последовательность простых прав:

          • N: нет доступа.
          • F: полный доступ.
          • M: изменить доступ.
          • RX: доступ для чтения и выполнения.
          • R: доступ только для чтения.
          • W: доступ только для записи.
          • D: удалить доступ.

          Кроме того, разрешение можно указать в виде списка определенных прав, разделенных запятыми, заключенных в круглые скобки:

          • DE: удалить.
          • RC: управление чтением.
          • WDAC: напишите DAC.
          • WO: напишите владельца.
          • S: синхронизировать.
          • AS: безопасность доступа к системе.
          • МА: максимально допустимый.
          • GR: общее чтение.
          • GW: общая запись.
          • GE: универсальное выполнение.
          • GA: общее для всех.
          • RD: чтение каталога данных/списка.
          • WD: записать данные/добавить файл.
          • AD: добавить данные/добавить подкаталог.
          • REA: читать расширенные атрибуты.
          • WEA: напишите расширенные атрибуты.
          • X: выполнение/обход.
          • DC: удалить дочерний элемент.
          • RA: чтение атрибутов.
          • WA: напишите атрибуты.

          Права наследования могут предшествовать любой форме и применяются только к каталогам:

          • (OI): объект наследуется.
          • (CI): наследование контейнера.
          • (IO): только наследование.
          • (NP): не распространять наследование.
          • (I): разрешение унаследовано от родительского контейнера.

          Примеры Icacls

          Сохраните списки управления доступом для всех файлов в каталоге c:\windows и любых его подкаталогах в ACLfile.

          Восстановите списки управления доступом для каждого файла в ACLfile, существующего в каталоге c:\windows и в любом из его подкаталогов.

          Предоставит пользователю Administrator права DAC на удаление и запись в файл.

          Предоставьте пользователю, определенному sid S-1-1-0, разрешения DAC на удаление и запись в файл.

          Читайте также: